使用RAID进行磁盘管理
转自http://www.linuxprobe.com/chapter-06/
磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意,作用是防止硬盘物理损坏以及增加存储设备的吞吐量。
RAID常见的组合有0、1、5和10:
-
- RAID0:需要至少两块(含)硬盘,可以有效的提高硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力。
-
将多块硬盘通过硬件或软件的方式串联在一起,成为一个大的卷集,将数据依次写入到各个硬盘中,这样性能会极大提升,但若任意一块硬盘故障则整个系统的数据都会受到破坏。
- RAID1:需要至少两块(含)硬盘,可以有效的提高数据资料的安全性和可修复性,但成本却提高了。
-
实现原来是在数据写入硬盘时也会在另外一块闲置的硬盘上生成镜像文件,在不影响性能的情况下最大限度保证数据资料的可靠性,只要在一对镜像盘中还有一块硬盘可以使用,那么数据也不会丢失,具有很好的硬盘冗余能力,虽然对数据来讲绝对的安全,但成本却明显增加,磁盘利用率仅为50%。
- RAID5:需要至少三块(含)硬盘,兼顾存储性能、数据安全和储存成本。
-
如上图所示"parity"块中保存的是其他硬盘数据的奇偶校验信息(并非其他硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RAID5不以单独的硬盘来存放数据的奇偶校验信息,而是保存在各个磁盘上。 这样当任何一个硬盘损坏都可以根据其他硬盘上的奇偶校验信息来尝试重建损坏的数据,性能也很高,兼顾了存储性能、数据安全和存储成本,可以看作是RAID0与RAID1的折中方案。
- RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高。
-
继承了RAID0的快速与RAID1的安全,RAID1在这里提供了冗余备份的阵列,而RAID0则负责数据的读写阵列。 因这种结构的成本高,一般用于存放要求速度与差错控制的数据。
常见的做软RAID的工具是mdadm。下面就简单写几个实用的小例子快速上手这个命令。
1.配置RAID10
①在虚拟机上给主机分配4块1G的磁盘(为了实验磁盘就不分配大的了)
②创建raid10
mdadm -Cv /dev/md1 -n4 -l 10 -a yes /dev/sd{b..e}
-
-
-C是创建 -v是显示过程 /dev/md1 是做成的raid磁盘名 -n 是使用磁盘数 -l是raid级别
-a 检查raid名称
/dev/sd{b..e}是之前分配的四块盘mkfs.ext4 /dev/md1
-
partprobe /dev/md1 #内核同步磁盘
③挂载raid磁盘
mkdir /RAID
mount /dev/md1 /RAID
此时一个raid10的磁盘创建挂载已经完成
④开机自动挂载
在这里不是很建议用设备名写入fstab表中,因为我之前使用的设备名md1结果开机md1在dev目录下没了,变成md127了,具体原因不明,因此可以使用UUID
使用blkid获取UUID
echo “UUID=d3986c95-11d9-4afa-935e-bd4e637f4754 /RAID ext4 default 0 0” >> /etc/fstab
⑤查看RAID磁盘详细信息
mdadm -D /dev/md1
⑥模拟一块硬盘损坏
mdadm /dev/md1 -f /dev/sdb
#-f将sdb移出阵列,此时sdb状态是被移除,通过mdadm -D /dev/md1查看sdb是失败状态
此时硬盘状态是坏的,你需要将它从取出
mdadm /dev/md1 -r /dev/sdb
换上同样大小的硬盘后执行
mdadm /dev/md1 -a /dev/sdb
即可将sdb重新加入阵列(如果磁盘真有问题必须要先-r移除才能-a添加)
重新挂载
mount /dev/md1 /RAID
⑦停止阵列设备
umount /RAID #必须先卸载
mdadm -S /dev/md1
此时dev目录下没有md1了,若想恢复,目前我使用的方法是
mdadm -A /dev/md1 /dev/sd{b..e}