磁盘存储

设备类型

块设备

  以块为单位进行存储和读取,相当于批量存和批量读

字符设备

  以一个字节或者一个字符为单位进行读取和写入.

    cp -a  /dev/sda  /data/sda

    mknod  /data/sda b 8 1 创建特殊类型的文件

硬盘结构

  1.磁头在盘片上进行从里到外-左右移动

  2.盘片进行高速旋转

  3.磁道          圈和圈之间的空隙(类似于操场的跑道)                                 每个磁道分成多少个扇区需要占用6个位来存储,最大值是2^6=64

  4.扇区          每个扇区512字节,每个磁道被划分成多个扇区

  5.柱面          不同盘片之间的相同磁道组成一个柱面

硬盘的使用

  1.分区

  2.创建文件系统(格式化)

  3.挂载 (把设备名和目录名关联起来)

  4.硬盘如果不进行格式化,那么往硬盘上存储和读取数据的时候只能以二进制(0和1)方式来进行,而不能以文件的方式进行访问.

  5. hexdump -C  /dev/sda |  less  直接以二进制或者相关进制的方式来读取硬盘上的数据.

磁盘分区

 为什么分区

  优化I/O性能

  实现磁盘空间配额限制

  提高修复速度

  隔离系统和程序

  安装多个OS

  采用不同文件系统

分区方式

  分区必须是在一个连续的空间

  4个主分区或者3个主分区+1个扩展分区+N个逻辑分区

    1.MBR分区

      1).   hexdump   -C     /dev/sda    -n      512                   查看磁盘上前面的512个字节内容

      2).  dd  if=/dev/sda    of=/data/mbr_bak    bs=1   count=512              读取二进制文件内容,每次读取一个字节,总共读取512个字节

      3).  dd  if=/dev/zero   of=/dev/sda       bs=1    count=512     用0设备读取数据写到其它二进制文件,每次写入一个字节,总共写512个字节

      4).  dd  if=/data/mbr_bak  of=/dev/sda      bs=1   count=512               恢复二进制文件内容

      5).  dd  if=/dev/zero   of=/dev/sda    bs=1   count=2                    seek=510      把第511和512个字节清0

   2.GPT分区

      4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域

分区工具fdisk和gdisk 

gdisk /dev/sdb 类fdisk 的GPT分区工具

fdisk -l [ -u] [device...] 查看分区

fdisk /dev/sdb 管理分区

  子命令:

p 分区列表

t 更改分区类型

n 创建新分区

d 删除分区

v 校验分区

u 转换单位

w 保存并退出

q 不保存并退出

管理分区

   列出块设备    lsblk

   fdisk创建    MBR分区

   gdisk创建    GPT分区 

   parted高级分区操作 

   partprobe   同步内存和磁盘上的分区表信息   centos6上无效

   partx    -a     /dev/DEVICE     centos6 同步新增分区

   partx    -d     /dev/DEVICE     centos6  同步删除分区

分区表存储在两个地方,一个在内存,一个存储在磁盘.

   fdisk 查看磁盘上的分区表信息
   lsblk 等其它命令查看的是内存上的分区表信息

同步分区表

查看内核是否已经识别新的分区: cat /proc/partations

centos6通知内核重新读取硬盘分区表

新增分区用

partx -a /dev/DEVICE

kpartx -a /dev/DEVICE -f: force

删除分区用 partx -d --nr M-N /dev/DEVICE

CentOS 5,7: 使用

partprobe partprobe [/dev/DEVICE]

文件系统

文件系统分类

根据其是否支持"journal"功能: 日志型文件系统: ext3, ext4, xfs, ...

非日志型文件系统: ext2, vfat

文件系统的组成部分: 内核中的模块:ext4, xfs, vfat

用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

Linux的虚拟文件系统:VFS

查前支持的文件系统:cat /proc/filesystems

    操作系统中负责管理和存储文件信息的软件结 构称为文件管理系统,简称文件系统

    如果没有文件系统,那么我们只能以0和1二进制的方式来访问磁盘上的内容不能以文件的方式来访问磁盘数据.

支持的文件系统:/lib/modules/`uname –r`/kernel/fs

  分布式文件系统

     把一个文件打散,均匀的存储在不同的机器上.具有对文件备份和容错的功能.

 日志型文件系统

     日志的功能就是记录了用户对数据的一切操作

     如果没有日志系统,用户把数据从磁盘调入内存进行修改后,如果在系统还没开始从内存写入磁盘的时候出现异常,那么只会丢到内存的修改,

     磁盘上的原数据并没有被损坏。

     如果在系统已经开始从内存写入磁盘的过程中出现异常,那么内存中的数据会丢失,同时磁盘上的原文件内容也会被损坏.

     日志系统会在硬盘上单独开辟一块空间进行日志存储(journal)日志和文件是分离的,通过日志可以避免系统异常而导致损坏文件,保证系统的稳定性.

buffer和cache

   1.   当用户访问一个文件的时候,磁盘会先把文件存入磁盘的缓存中,然后内存再从磁盘的缓存中读取数据.

   2.   buffer是为了提高写数据的性能     先把内存中需要写入磁盘的数据存放到buffer中,然后再批量写入磁盘.

   3.   cache是为了提高读数据的性能    先把需要读取的数据存放到cache中,下次读取的时候直接从cache中读取.

集群文件系统

       默认情况下,当多个服务器同时访问同一块磁盘上的同一个文件,就会造成这个文件的数据损坏.  集群文件系统就是为了解决这个问题

  块组和簇(windows)的基本概念

       文件系统分配给文件的最小单位,一个文件再小也要占用的最少磁盘空间.

创建文件系统

  mkfs命令:

    (1) mkfs.FS_TYPE /dev/DEVICE ext4 xfs btrfs vfat

     (2) mkfs -t FS_TYPE /dev/DEVICE -L 'LABEL': 设定卷标

    

    

猜你喜欢

转载自www.cnblogs.com/yaun1498078591/p/8926518.html