Linux存储管理主要有磁盘控制器、总线、磁盘的接口;磁盘控制器一般有两种,IDE以及SCSI;而总线有主要分为数据总线,地址总线,控制总线,当然了,总线是不会单独工作,一般都是集成在主板上的;磁盘接口可以衡量一个磁盘的IO能力,磁盘接口的类型:如今主要用的有IDE的并行接口,来源于更早的ATA;以及SCSI的小型计算机系统接口;ATA的将并行数据传输改为串行接口;SAS的串行接口;USB接口。那衡量磁盘IO能力的指标除了接口以外还有另外一个指标:IOPS(一秒钟完成读写操作的次数)。其中IDE的机械磁盘,读写速率平均处在50-100IOPS;SCSI的机械磁盘,读写速率平均处在100-200IOPS,固态磁盘的读写速率平均处在在400IOPS;SATA的机械磁盘,读写速率平均处在100IOPS左右,固态磁盘处在400IOPS左右;SAS的机械磁盘,读写速率平均处在200IOPS左右,固态磁盘读写速率平均处在800IOPS左右;PCI-E固态磁盘读的IOPS大概在400000-800000,而写的IOPS大概在50000-100000。
如今普遍的X86主板上的磁盘控制器的接口:
IDE:2个接口,每个接口接一个主盘和一个从盘,共四块硬盘;如果有光驱的话,可能会减少至三个磁盘加一个光驱;
SATA:4-6个接口:
SCSI:7或者15个接口;
SAS:至少能够提供1023个接口,最多16384个接口;
机械磁盘:
术语:
track:磁道,磁头在磁盘表面的运行轨迹的投影;
sector:扇区,512Byte,现在所说的扇区实际上是平均值;最小的管理单元;
cylinder:柱面,从某个磁道向所有盘片做投影,所形成的圆柱表面;实际上是由所有盘片上相同位置的磁道组成;
partition:分区,从某个柱面到另一个柱面之间所有的柱面存储空间;
head:磁头,每个盘片每个磁面都有一个磁头,用于数据的读写操作;
磁盘性能的指标:
主轴转速:盘片每分钟旋转的圈数;
平均寻道时间:磁头从开始位置到指定位置之间经过的时间;
缓存:
/dev用于存放硬件设备被映射出的文件,磁盘的设备文件也存放于此;
设备文件:是关联到硬件设备的驱动程序和设备的访问入口;
设备号:
major:主设备号,区分不同设备的设备类型,用于表明设备所需的驱动程序;
minor:次设备号,在同种类型的设备中的不同设备,用于对设备提供访问入口;
设备类型:
块设备:
以块为基本单位进行随机访问的设备,通常为存储数据的设备;
字符设备:
以字节为基本单位进行线性访问的设备,通常为处理数据的设备;
设备文件名:
IANA --> ICANN
命名必须保存在/dev目录下
IDE:hd[a-d]
SCSI|SATA|SAS|USB:sd[a-z]+ 例如:sdaa
RedHat Enterprise Linux:从RHEL6开始将IDE接口的磁盘也命名为sd*,自此以后,所有的磁盘设备被统一命名为sd[a-z]+;
设备的引用方式:
1.设备文件名直接引用
存在问题是:比如将数据添加到sdd磁盘,重启以后文件名可能不再是sdd;
2.卷标(Volume Lable):
存在问题:如果引入外来设备,两个设备中如果卷标冲突,那么只会有一个设备可以正常启动,另一个设备不会正常启动;
3.UUID:全局唯一标识符,Universal Unique IDentifier
mknod命令:
mknod - make block or character special files
格式:
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
如何使用新的磁盘设备?
1.让Linux系统内核识别设备,对设备进行分区;
2.格式化
低级格式化:磁盘初始化,磁道划分;
高级格式化:创建或重建文件系统;
3.使用文件系统:
挂载
卸载
为何分区?
1.优化磁盘的IO性能;
2.可以实现对某个存储空间的配额限制;
3.进行高速的磁盘问题修复;
4.隔离系统文件和其他应用程序文件;
5.在一台设备上,可以安装多个操作系统;
如何分区?
MBR:整个磁盘空间小于2TB容量,建议使用MBR分区格式;
MBR:Master(Main) Boot Record,主引导记录,始于1982年;
MBR其实也是一段数据,默认保存在磁盘的零磁道零扇区中;
分为三部分:
446Bytes:boot loader,引导加载程序;
Windows:NTLDR
Linux:7.4以前LILO,GRUB(默认)
64Bytes:Partition table,分区表;每16字节为一段,表明一个分区的内容,因此,默认最多只有四个分区;
1.最多有四个主分区;
分区编号依次为:1,2,3,4
2.想要划分更多的分区数量时,可以将任意一个主分区改为扩展分区,在扩展分区中建立逻辑分区;
逻辑分区的编号默认从5开始,不管前面的四个数字是否都被占用;
注意:扩展分区可以没有,最多只能有一个;
2Byte:MBR结束标记,55AA;
GPT:整个磁盘空间大于2TB容量,建议使用GPT分区格式;
GUID Partition table,支持128个主分区;
Linux下常用的分区工具:
fdisk:
用于创建和管理MBR分区,对于同一块磁盘最多只能管理15个分区;
gdisk:GNU disk
用于创建和管理GPT分区;
注意:如果使用fdisk或gdisk命令,对于一个已经有分区被挂载的磁盘的剩余空间再次进行分区,即便将分区的结果保存下来,也不会被内核立即识别;
想要让内核识别出此类新建分区,可以采用下列方法:
1.重启计算机;
2.强制内核重读分区表;
partprobe命令
partx命令
在RHEL或者CenOS系5|7版本中:
partprobe [device]
注意:如果省略了设备名,则表示重读所有磁盘设备的分区表;强烈建议,直接给出指定的磁盘设备名称;
在RHEL或者CenOS系6|7版本中:
partx -a [device]
kpartx -af [device]
fdisk分区工具:
fdisk - manipulate disk partition table
格式:
fdisk device
fdisk -l [device...]
选项:
-l:表示查看之意;如果给出设备名称,则查看指定设备的分区表;否则查看所有磁盘设备文件的分区表;
fdisk device
对于指定设备进行分区管理和操作;
d delete a partition
l list known partition types
m print this menu
n add a new partition
p print the partition table
q quit without saving changes
t change a partition's system id
w write table to disk and exit
在fdisk交互式菜单模式中创建分区的过程:
n --> p|e|l --> 指明分区的起始扇区(柱面),直接回车使用默认值 --> 分区的结束扇区(柱面),也可以使用+#UNIT直接指定分区大小;
parted命令:高级的分区工具,其操作结果实时生效;
parted - a partition manipulation program
格式:
parted [options] [device [command [options...]...]]
示例:
~]# parted /dev/sda mkpart logical 103GB 105GB
~]# parted /dev/sda rm 8
在通电开机状态下添加SCSI接口的磁盘至本服务器,要想使设备被内核识别并创建出相应的设备文件,有下列方法:
1.重启计算机
2.~]# echo "- - -" > /sys/class/scsi_host/host2/scan
强制内核识别在通电状态下热插接的新SCSI接口的磁盘设备;
原文地址:http://blog.51cto.com/xuwenlong/2050357