一.认识RAID
什么是RAID?RAID全名是Redundant Arrays of Inexpensive Disks,中文名为容错式廉价磁盘阵列。通过一个技术,将多个较小的磁盘整合为一个较大的磁盘。不仅具有数据存储功能,还有数据保护功能。由于整个磁盘阵列选择的登记不同,所以功能上也会有所差异,比较常见的阵列等级有:RAID0,RAID1,RAID5,RAID10
二.阵列等级
1.RAID0
使用两块或两块以上的磁盘构建,磁盘品牌容量一致时性能最佳。
会将磁盘切割成等量的区块(chunk,一般设为4k-1M之间),然后当有文件存入时,根据chunk大小对文件进行切割,最后依次放入各磁盘中。比如使用两块磁盘构建的RAID0,当有100M数据存入时,每块磁盘会各分配到50M数据。构建RAID0使用到的磁盘数越过,性能越高,磁盘总容量就越大。
当然,磁盘数量越多,磁盘损坏的几率越高。当任意一块磁盘损坏后,会导致整个阵列的数据丢失。
优点:磁盘利用率高,性能最好
缺点:安全性低,任一磁盘损坏会导致整个阵列数据丢失
2.RAID1
使用两块或2的倍数块硬盘构建,推荐使用相同品牌、大小的硬盘。
当有文件存入时,会将文件完整的保存到磁盘阵列的所有磁盘中。比如使用两块磁盘构建的RAID1,当有100M数据存入时,会将100M数据同时存入两块磁盘中。所以该阵列磁盘使用率较低,只有50%。
优点:安全性高,当任何一块磁盘损坏时,数据都能完整保留下来,适合用于数据备份
缺点:磁盘利用率低,只有50%;磁盘写入性能差,因为要同时将数据写入多块磁盘中
3.RAID5
使用三块或三块以上的硬盘构建。
与RAID0写入方式相似,会将多个文件循环写入同一组阵列的磁盘中,不过在RAID0的基础上新增了一个同位检查码,每次写入数据都需要先计算同位检查码的关系,并将同位检查码存放在除自身外的其它磁盘上,该检查码主要用于当某一块磁盘损坏时,对数据进行恢复。
优点:性能与数据备份均衡,使用率为(n-1)/n。由于新增了同位检查码,所以需要使用一块磁盘的空间对它进行存放。
缺点:写入性能较低,每次写入数据都需要先计算同位检查码的关系;只能支持一块硬盘的损毁。因此人们在此基础上新增了RAID6,使用两块硬盘存储同位检查码,最多可以恢复两块磁盘的数据,不过使用率会有所下降。
4.RAID10
使用四块或四块以上的硬盘构建。
两两组合构成一个RAID1,然后在将两个RAID1组合为一个RAID0,构成RAID10。它继承了RAID0和RAID1的优点,同时继承了它们的缺点。
如果有100M数据写入,因为有RAID0存在,所以会向两个RAID1各分发50M的数据。由于有RAID1,所以会将收到的50M数据,同时写入两块磁盘中。该阵列为目前储存厂商所推荐方式。
三、部署磁盘阵列
1.mdadm命令
一般服务器上都会配备磁盘阵列卡,而我们没有必要因为实验而去单独购买一台服务器,所以我们可以学会使用mdadm命令在Linux系统中创建和管理软件RAID磁盘阵列。
mdadm命令的常用参数及作用
参数 | 作用 |
---|---|
-a | 监测设备名称 |
-n | 指定设备数量 |
-l | 指定RAID级别 |
-C | 创建 |
-v | 显示过程 |
-f | 模拟设备损坏 |
-r | 移除设备 |
-Q | 查看摘要信息 |
-D | 查看详细信息 |
-S | 停止RAID磁盘阵列 |
2.创建阵列
1)首先添加四块硬盘,并对四块硬盘进行分区和格式化;
2)使用mdadm命令创建RAID10,名称为/dev/md10;
3)对创建完的RAID10进行格式化,sudo mkfs.ext4 /dev/md0;
4)查看RAID10的详细信息;
5)其他阵列的创建命令
RAID0:sudo mdadm -Cv /dev/md0 -a yes -n 2 -l 0 /dev/sdb1 /dev/sdc1
RAID1:sudo mdadm -Cv /dev/md1 -a yes -n 2 -l 1 /dev/sdb1 /dev/sdc1
RAID5:sudo mdadm -Cv /dev/md5 -a yes -n 3 -l 5 /dev/sdb1 /dev/sdc1 /dev/sdd1
四、模拟阵列损坏并恢复
由于RAID10继承了RAID1的特点,所以当某一块磁盘损坏时,并不会影响RAID10的使用。
1.先使用mdadm命令模拟一块硬盘损坏不能正常使用的情况,然后在使用sudo mdadm /dev/md10 -r /dev/sdb1 命令将损坏的硬盘移除
2.将系统关机,将损坏的硬盘替换,然后开机对新增硬盘进行分区格式化
3.使用mdadm命令将新增的硬盘添加到RAID10阵列中,并查看RAID10信息,确认添加成功