raid的作用主要是用来提高磁盘的读写速率和提高数据的容错率。 常见的raid级别有:
raid0,raid1,raid5,raid10等
raid0:
理论上创建raid0至少需要两块盘,每一块盘都用做读写数据,也就是说:一个数据会拆分成多个,分别写入到每块磁盘中,读取数据的时候也会从每块盘中读取。优点:大大提高了数据的读写速率;缺点:容错率很差,只要其中一个块盘坏了,数据就不可用。
raid0的磁盘利用率为100%。
另外在实际生产环境中一块盘也能做raid0.
raid1:
创建raid1需要两块盘,其中一块盘作数据盘,用来存储数据,另一块为镜像盘,用来备份数据。优点:容错率高,允许坏掉一块盘,不会破坏数据,读取速率比一块盘要高;缺点:因为一份数据要写入两块盘,所以写入数据速率低,另外成本高,磁盘的利用率只有50%。
raid5:
创建raid5至少需要三块盘,其中两块轮流作为数据盘,用来存储数据,另外一块作为校验盘。优点:容错率高,允许坏掉一块盘,不会破坏数据,当其中一块盘坏了之后,可通过校验盘恢复破坏的数据,如果校验盘坏了可通过两块盘的数据恢复校验盘,读写性能略有提升;缺点成本较高,不能同时坏两块盘。磁盘利用率为(n-1)/n
raid6和raid5差不多,raid6至少需要4块盘,两块做校验盘。
raid10: 创建raid10至少需要四块盘,先两两做成raid1再做成raid0;磁盘利用率为1/2. 另外在生产环境中常用的还用一种jbod的直通模式,就是系统和磁盘直连,在做hadoop大数据中经常需要这种模式。 如,软raid1创建:
首先需要两块盘,这里我创建两个同样大小的逻辑分区 sdb5和sdb6.
之后将其格式化mkfs.ext4 /dev/sdb5,mkfs.ext4 /dev/sdb6
使用mdadm模块将其创建成raid1(如果没有mdadm需要安装)
创建raid1: mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb5 /sdb6
-C 创建,-a yes自动创建文件系统,-l raid级别,-n 磁盘数量
查看raid1状态:mdadm -D /dev/md0(-D 打印信息)
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Aug 10 15:19:55 2018
Raid Level : raid1
Array Size : 521792 (509.65 MiB 534.32 MB)
Used Dev Size : 521792 (509.65 MiB 534.32 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Fri Aug 10 15:19:59 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : fa32332d:ee855ef9:a94fe472:820b3fec
Events : 17
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb6[1] sdb5[0]
521792 blocks super 1.2 [2/2] [UU]
unused devices: <none>
我们知道raid1是有一块备份盘的,允许破坏一块盘而不破坏数据,现在模拟一下,使用watch命令来监控raid的状态:watch -n 1 "cat /proc/mdstat" ,每隔一秒打印raid信息。 现在我们破坏其中一块盘:
mdadm /dev/md0 --fail /dev/sdb5可以看到其中一块盘破坏了
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb6[1] sdb5[0](F) #F fail表示破坏
521792 blocks super 1.2 [2/1] [_U] # 看到只有一个U up
unused devices: <none>
使用mdadm -D /dev/md0查看
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 22 1 active sync /dev/sdb6
/dev/sdb5破坏后需要将其移除:mdadm /dev/md0 --remove /dev/sdb5 添加另一块好的盘将raid1恢复:mdadm /dev/md0 --add /dev/sdb5,恢复后
Number Major Minor RaidDevice State
2 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
停止raid:mdadm -S /dev/md0 启动raid:mdadm -A /dev/md0 /dev/sdb5 /dev/sdb6
如需自动装配需要写入配置文件:mdadm -D --scan > /etc/mdadm.conf
更多的参数使用man mdadm查看,另外软raid在实际生产线上用的非常少,因为一旦系统破坏磁盘的数据就毁了,所以一般使用硬raid。