转自:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/25/3099464.html
硬盘类型 | 速度 |
SATA | <150M/s |
SCSI | <200M/s |
SAS | 200M/s左右 |
SSD固态硬盘 | 500M/s左右 |
磁盘的缺陷就是:I/O性能极差,稳定性极差
RAID(Redundant Array of Independent Disks)
①速度:读写速度的提升
②磁盘使用率:多磁盘的空间使用率
③冗余性: 能够支持几块磁盘损坏而不丢失数据
RAID一共有7个级别,分别是RAID0~RAID6 ,但常用的RAID级别主要是以下四种:
①RAID0:提高读写性能
②RAID1:提高读写性能、冗余性
③RAID5:提高读写性能、冗余性(允许1块硬盘发生故障)
④RAID6:提高读写性能、冗余性(运行2块硬盘发生故障)
1.RAID0 至少需要2块硬盘
①空间利用率:所有硬盘空间之和
②性能:所有硬盘读写速度之和
③冗余能力:无
读写数据的时候是将数据分开读写到多块硬盘上,所以其读写速度是最快的,但是因为多块硬盘上保存了数据的一部分,所以当一块硬盘发生损坏时,其整个RAID的数据也就损坏了
2.RAID1 至少需要2块硬盘
①空间利用率:所有磁盘中最小的那块(其实在使用RAID时,最好每块硬盘的大小及型号都一样)
②性能:读性能是所有硬盘之和,写性能有所减弱
③冗余能力:只要有一块硬盘正常,数据就正常
同于RAID0了,RAID1在写数据时会将数据复制到多块硬盘上,即每块硬盘都会保存该数据的一个备份,在读数据时,以提高冗余性。读的时候同时从多块硬盘上读取数据,以提高读的性能
3.RAID5 少需要3块硬盘
①空间利用率:1 - 1/n
②性能:读性能接近RAID0,写性能相比RAID0要弱一些
③冗余能力:可以接受1块硬盘的损坏
RAID5与RAID0类似,读写数据的时候会将数据分布的读写到所有硬盘上。但是在写数据的时候RAID5会对数据进行奇偶校验运算,并将校验信息也保存在了硬盘上,所以即使我们其中一块硬盘发生了损坏,RAID5也能通过其他硬盘以及校验信息对数据进行恢复使用。但是如果2块或者2块以上的硬盘发生了损坏,整个数据也就损坏了。
4.RAID6 至少需要4块硬盘
RAID6与RAID5相类似,读写数据的时候会将数据分布的读写到所有硬盘上。在写数据的时候RAID5会对数据进行奇偶校验运算,并将校验信息也保存在了硬盘上,但是RAID6会比RAID5多保存一份校验信息,所以RAID6的冗余性比RAID5就有所提升,可以允许2块硬盘发生损坏。
①空间利用率:1 - 2/n
②性能:读性能接近RAID5,写性能相比RAID5还要弱一些
③冗余能力:可以接受2块硬盘的损坏
RAID级别 | 速度 | 冗余性 | 磁盘利用率 |
RAID 0 | 读写速度均有提升 | 0 | 所有磁盘之和 |
RAID 1 | 读速度有提示 | n | 一个磁盘大小 |
RAID 5 | 读写速度均有提升 | 1 | 1-1/n |
RAID 6 | 读写速度均有提升 | 2 | 1-2/n |
Linux操作系统的软件RAID是通过mdadm 这个程序来实现的,使用Linux下的 mdadm 这个软件需要注意的几点:
①mdadm 支持的RAID级别有:RAID0、RAID1、RAID4、RAID5以及RAID6。我们看到对于常用的四种RAID级别,mdadm都能够支持
②mdadm 可以基于多块硬盘、分区以及逻辑卷来创建RAID。对于硬件实现RAID来说,就只能是基于多块硬盘了
③创建好的软件RAID对应于 /dev/mdn,n表示的是第几个RAID,如第一个创建的RAID对应 /dev/md0, 第二个创建的RAID就对应 /dev/md1,当然这个名字是可以自己随便取的
④RAID的信息保存在 /proc/mdstat 文件中,或者通过 mdadm 命令来查看
mdadm 这个命令来创建软件RAID的语法格式:
创建RAID 0: mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb /dev sdc
创建RAID 1: mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb /dev/sdc 创建RAID 5: mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd 创建RAID 6: mdadm -C /dev/md3 -a yes -l 6 -n 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
① -C 创建一个新的RAID 我们这里就是创建第一个RAID,名字叫做 /dev/md0
② -a 自动创建对应的设备 yes表示会自动在/dev下创建该RAID设备
③ -l 指定要创建的RAID级别 0我们这里创建RAID 0
④ -n 指定硬盘数量 2表示使用2块硬盘来创建这个RAID0,分别是 /dev/sdb 和 /dev/sdc
我们也可以使用 -x 参数来指定一个备份磁盘,备份磁盘一般不使用,当出现一个磁盘故障的时候,指定的备份磁盘可以自动上线工作:
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x /dev/sdb /dev/sdc /dev/sdd /dev/sde mdadm -D 这个命令来查看刚创建的RAID的详细信息
或者来查看 /proc/mdstat 这个文件来查看RAID的信息 RAID的信息保存到 /etc/mdadm.conf 这个文件里,这样在下次操作系统重新启动的时候,系统就会自动加载这个文件来启用我们的RAID
mdadm -D --scan > /etc/mdadm.conf 使用RAID 0这个设备来对其进行文件系统格式化和挂载使用
mkfs.ext4 /dev/md0
mount /dev/md0 /mnt 通过 mdadm -S 这命令来关闭我们的 RAID ,当然在关闭RAID之前,我们需要先卸载掉RAID
umount /mnt
mdadm -S /dev/md0 通过 mdadm --zero-superblock 这个命令即可,但是我们首先必须要停止我们的RAID,即使用 mdadm -S 命令。例如我要将刚才创建的RAID 0 的两块硬盘完全移除,就可以使用如下命令:
mdadm -S /dev/md0
mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc 试验: 创建一个 RAID 5
mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd
cat /proc/mdstat
mdadm 命令来模拟RAID故障,通过 mdadm /dev/md0 -f /dev/sdd 命令 mdadm -D /dev/md0查看信息
mdadm /dev/md0 -r /dev/sdd 来移除这块硬盘 换上新的硬盘,使用 mdadm /dev/md0 -a /dev/sde 这个命令