一.什么是磁盘阵列
磁盘阵列英文全名为RedundantArrays of Inexpensive Disks(RAID),即容错廉价磁盘阵列。
RAID可以将一些容量较小的磁盘通技术手段组成一个容量较大的磁盘设备,而且不只是容量上的提升,RAID还可以提供数据保护的功能。
RAID可以选择不同等级来实现不同的功能,常见的等级有以下几种:
1.RAID-0
此模式可以需要使用相同型号和相同容量的磁盘组成时效果最佳,在进行文件写入时,会将文件进行分割分别存储在不同的磁盘上,这样就提高了读写的速度,但由于文件分别存储在不同的磁盘上,一旦有一块磁盘损坏就会造成文件无法读取,所以此模式不具备容错性。
2.RAID-1
此模式最好使用两块一模一样的磁盘,如果是两块不同容量的,则存储时以容量小的那块为主。这种模式是将数据在两块磁盘上都存储一份,这样即使有一块硬块损坏了,数据还可以恢复回来;不过由于数据在保存两份,所以写的性能会有所下降。
3.RAID-4
此模式最少要使用三块磁盘才能组成;陈列会将一块磁盘做为校验盘,用来记录同位检查码,数据则是循环写在另外的磁盘上,如果有一块数据磁盘损坏了,可以根据校验盘里的同位码来进行恢复,但如果校验盘损坏,则数据将无法恢复。
4.RAID-5
此模式类似于RAID-4,但取消了专门的校验盘,而是将校验信息同数据一起循环记录在各个磁盘上,这样任意一块磁盘出现问题,都可以将数据恢复回来,但是损坏的磁盘数量大于等于两块时,数据将无法恢复。
5.RAID-10
此模式是将磁盘先组合RAID-1,再将这些RAID1的阵列组成RAID-0;这种阵列兼备了RAID-1的安全性和RAID-0的高效,每组RAID-1都允许损坏一块磁盘;缺点是磁盘的空间则浪费的50%。
各种RAID级别的特点见下表:
RAID级别 | 所需磁盘数 | 读写能力 | 容错能力 | 磁盘空间利用率 |
RAID-0 | 不限 | 提升 | 不具备 | 磁盘数*单块磁盘空间 |
RAID-1 | 两块 | 下降 | 具备 | 单块磁盘空间 |
RAID-4 | 最少三块 | 提升 | 具备 | (磁盘数-1)*单块磁盘空间 |
RAID-5 | 最少三块 | 提升 | 具备 | (磁盘数-1)*单块磁盘空间 |
RAID-10 | 最少四块 | 提升 | 具备 | 磁盘数*单块磁盘空间/2 |
在生产环境中,可以预备一块空的磁盘做为预备磁盘。这块空盘并不加入磁盘阵列当中,一旦阵列中的磁盘出现故障,可以将这块空块直接拉入磁盘阵列中,并将坏盘移除,避免了更换磁盘时的停机要求,以及热插拔阵列中的磁盘可能造成的数据风险。
二.软件磁盘阵列
由于条件所限,只能通过软件磁盘阵列来说明演示磁盘的工作效果。
使用mdadm命令来创建软件磁盘阵列。
命令参数:
-D:显示详细信息;
-A:装配模式,重新识别此前实现的RAID;
-C:创建模式,创建RAID;
-F:监控模式;
管理模式:-f,-r,-a
-C:创建模式中专用选项
-n #:用于创建RAID设备的磁盘个数
-l #:级别
-a yes:自动为创建的RAID生成设备文件;
-c Chunk_size
1.RAID-0
使用三个2G的分区创建一个RAID-0;
查看/dev/md0状态;
查看/dev/md0的详细信息;
格式化/dev/md0;
挂载/dev/md0到/mnt/md0,可以看到空间是三块磁盘的总和;
2.RAID-1
使用两个1G的分区创建RAID1;
格式化并挂载,复制文件到挂载目录下;
磁盘空间为1G左右;
查看md1的状态
模拟磁盘损坏;
查看md1的状态;
查看md1详细信息;
查看/mnt/md1下的文件,依然可以正常访问;
移除损坏的磁盘,并加添加一块好的磁盘到阵列中;
移除磁盘;
添加新盘;
查看状态;
3.RAID-5
将三块1G的磁盘组成RAID-5;
查看md5状态;
格式化并挂载;
测试容错;
复制/etc/issue到/mnt/md5目录中;移除/dev/sdb10;
mdadm -D /dev/md5查看信息;
依然可以读取目录中的文件;
修复步骤与RAID1相同,此处不再演示。
mdadm命令补充:
-f/–fail DEVICE:手动设置磁盘为损坏;
-r/–remove DEVICE:移除磁盘;
-a/–add DEVICE:加入磁盘;
mdadm -S DEVICE: 停止磁盘阵列;
watch命令:阶段性地执行指定的命令;
watch -n# 命令
eg:watch -n.5 ifconfig 每0.5秒更新一次显示结果。