磁盘阵列
(Redundant Arrays of Independent Disks,RAID)
作者:
磁盘阵列(Redundant Arrays of Independent Disks,RAID),有"数块独立磁盘构成具有冗余能力的阵列”之意。
磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
磁盘阵列还能利用同位检查(Parity Check)的观念,当数组中任意一个硬盘发生故障时,仍可读出数据。在数据重构时,可将数据经计算后重新置入新硬盘中。
独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
raid常用的两种等级:
RAID 0:
这种模式如果使用相同型号与容量的磁盘来组成时,效果较佳;
这种模式的RAID会将磁盘先切除等量的区块(例如,4KB),然后当一个文件要写入RAID时,该文件会依据块的大小切割好,之后再依次放到各个盘里去;也就是说把一个文件先拆分成许多小块,然后再把这些小块平均分给各个磁盘(这样就会导致随意一个磁盘损坏,文件就会跟着损坏),这样的话每块磁盘所负责的数据量都降低了,这样的话组成RAID 0 的磁盘个数越多,性能就越好,此外磁盘的总容量也变大了!因为RAID 0的总容量=所有组成RAID 0 的磁盘容量的和;
虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以,RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用;
RAID 0 配置方式:
yum install -y mdadm
mdadm --create --auto=yes /dev/md0 --raid-devices=2 --level=0 /dev/sdb1 /dev/sdc1
mdadm --detail /dev/md0 查看创建完成的磁盘阵列:
创建完成后格式化然后挂载就可以了;
开机自动启动RAID并自动挂载除了配置/etc/fstab外还需配置/etc/mdadm.conf
在/etc/mdadm.conf下写入:
ARRAY /dev/dm0 UUID=1d4cf7a2:18bb8b0f:2e8345ce:fdb21299
#UUID可以用mdadm --detail /dev/md0 查看
mount -a 或reboot重启查看挂载已成功:
关闭软件RAID(如果仅卸载不关闭RAID的话,之后在重新分区时就可能会出现一些莫名的错误):
- 先卸载且删除配置文件内与这个/dev/md0有关的设置:
umount /dev/md0
vim /etc/fstab (注释掉相关配置)
- 直接关闭/dev/md0的方法
mdadm --stop /dev/md0 --关闭
mdadm --zero-superblock /dev/sdb1 --清除组件设备sdb1中超级块的信息
mdadm --zero-superblock /dev/sdc1
cat /proc/mdstat --查看组设备信息
vim /etc/mdadm.conf(注释相关配置)
raid 1(映像模式,mirror):完整备份
这种模式就是将同一份数据分别完整的保存在两块磁盘上;因此,整体RAID的容量几乎少了50%;一份数据传送到RAID后会被分成两股,并分别写入到各个其他不同的磁盘,因此如果要写入100MB时,数据传送到I/O总线后会被复制多份到各个磁盘,结果就是数据量感觉变大了,因此在大量写入RAID 1的情况下,写入的性能可能会变得非常差;
两块磁盘内的数据一模一样,所以在任意一个硬盘损坏时数据仍可以完整的保存下来;
虽然RAID写入性能不佳,但是读取性能则还可以,因为数据有两份在不同的磁盘上面,如果多个进程在读取同一条数据时,RAID会自行取得最佳的读取平衡;
RAID 1 配置:
mdadm --create --auto=yes /dev/md0 --raid-devices=2 --level=1 /dev/sdb1 /dev/sdc1
mdadm --detail /dev/md0 查看创建完成的磁盘阵列: