本文共 3053 字,大约阅读时间需要 10 分钟。
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 : 2Working 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:
我们知道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 upunused devices:使用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。
转载于:https://blog.51cto.com/13803030/2301647