LVM技术是通过将底层物理硬盘抽象封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的大小可以动态调整,而且不会丢失现有数据。新加入的硬盘也不会改变现有上层的逻辑卷。作为一种动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。而RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果,本次测试我们将两者结合起来使用
一.添加硬盘
创建raid磁盘阵列的时候,最好使用一样的硬盘,所以我们添加了5块大小都是2G的硬盘,分别为sdc,sdd,sde,sdf,sdg(raid5最少需要3块盘,添加5块是由于测试需要)
二.创建磁盘阵列
输入mdadm -Cv /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sd{ c,d,e,f } 指令来创建raid5磁盘阵列
-n:指定设备数
-x:指定空闲设备数,即热备盘
使用mdadm -D /dev/md0来查看磁盘阵列的详细信息
三.创建LVM
输入pvcreate /dev/md0 来创建物理卷/dev/md0
输入 vgcreate myvg /dev/md0 来创建卷组myvg
输入 lvcreate -n /dev/myvg/vo -L 300M myvg 来创建逻辑卷vo
对逻辑卷vo进行格式化,此时要注意在格式化逻辑卷时,使用ext文件系统,逻辑卷的大小可增可减,而用xfs文件系统的话,只能增不能减,因此这里我们选用ext4文件系统进行格式化
然后挂载在/lvm目录下,并输入echo "/dev/myvg/vo /lvm ext4 defaults 0 0 >> /etc/fstab"设置自动挂载
四.测试
1.首先我想看我的raid5磁盘阵列能否进行最基本的IO操作
OK,一切正常
2.模拟损坏一块硬盘后进行测试
首先我们输入cat /proc/mdstat 来查看当前阵列的状态
然后使用 mdadm /dev/md0 -f /dev/sde来模拟一块硬盘损坏
可以看到,因为我们最开始添加了一块热备盘,因此当正在工作的三块盘有一块发生故障时,空闲的热备盘会立马补上去,从而起到了较好的数据保护作用。当热备盘补上去后,spare Device后面的数字会变为0,表示现在没有热备盘了。
既然硬盘sde已经损坏,我们就要把它从阵列中移除
移除掉sde后,因为raid磁盘阵列并没有受到影响,所以再对磁盘中的文件进行各种操作都是可以的,先前的数据也并没有因为一块硬盘损坏而丢失
3.没有热备盘的情况下,要是再有一块盘损坏了,会不会造成数据丢失呢?
我们在没有热备盘的情况下,再模拟一块硬盘损坏
在raid5阵列中只有一块磁盘损坏的情况下,还是可以正常使用的,但是就没有数据冗余的能力了,此时我们输入cat /proc/mdstat查看阵列信息
当一个设备出现故障或被标记故障时,相应设备的方括号后将被标以(F),如sdf[3](F),其中“[3/2]”的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,因为目前有一个故障设备,所以第二位数为2;这时的阵列以降级模式运行,虽然该阵列仍然可用,但是不具有数据冗余;而“[UU_]”表示当前阵列可以正常使用的设备是/dev/sdc和/dev/sdd,如果是设备“/dev/sdc”出现故障时,则将变成[_UU]
4.上面的测试中,一块硬盘损坏后,因为有热备盘,所以损坏后,热备盘会直接顶上去,阵列也不会受影响。现在没有热备盘了,当阵列中一块硬盘损坏时,数据的安全级别就会大幅降低,倘若再坏一块硬盘,那么势必会造成数据丢失,因此我们需要及时添加硬盘
添加硬盘sdg
添加完成当我们查看当前磁盘阵列信息的时候会发现活跃的硬盘有两个,空闲的有一个,然后下面有个Rebulid Status:79%这表明阵列正在重建,稍等一下再次查看
这时候我们发现活跃的硬盘变成了三个,空闲的变成了0,这表明阵列已经重建完成
5.raid5最多只能支持一块盘损坏的情况下正常工作,那要是损坏了两块呢?
我们同时损坏两块盘后,再对硬盘进行操作
这时就会发现,当同时有两块盘损坏时,整个raid阵列就会损坏,这时就会变成只读模式。
五.总结
1.RAID和LVM的组合使用与单独创建raid5和lvm的步骤是有区别的
2.当一块硬盘损坏后要及时添加新的进来
3.测试完成删除逻辑卷和raid时,记得要把自动挂载取消了,否则下次开机时可能会有错误