首先咱们来了解一下RAID这个概念安全
1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每一年可提高30%-50%但硬盘仅提高7%,渐渐的已经成为计算机总体性能的瓶颈,而且为了不硬盘的忽然损坏致使数据丢失还加入了冗余备份机制。运维
RAID的早先设计理念为”redundant array of Inexpensive disks“即不贵的硬盘组,而如今的定义是”Redundant Array ofIndependent Disks“即独立的硬盘组,做用是防止硬盘物理损坏以及增长存储设备的吞吐量。RAID常见的组合有0、1、5和10:性能
RAID0:须要至少两块(含)硬盘,能够有效的提升硬盘的性能和吞吐量,但没有数据的冗余和错误修复能力。ui
将多块硬盘经过硬件或软件的方式串联在一块儿,成为一个大的卷集,将数据依次写入到各个硬盘中,这样性能会极大提高,但若任意一块硬盘故障则整个系统的数据都会受到破坏。spa
RAID1:须要至少两块(含)硬盘,能够有效的提升数据资料的安全性和可修复性,但成本却提升了。设计
实现原来是在数据写入硬盘时也会在另一块闲置的硬盘上生成镜像文件,在不影响性能的状况下最大限度保证数据资料的可靠性,只要在一对镜像盘中还有一块硬盘可使用,那么数据也不会丢失,具备很好的硬盘冗余能力,虽然对数据来说绝对的安全,但成本却明显增长,磁盘利用率仅为50%。3d
RAID5:须要至少三块(含)硬盘,兼顾存储性能、数据安全和储存成本。blog
如上图所示”parity”块中保存的是其余硬盘数据的奇偶校验信息(并不是其余硬盘的数据),以数据的奇偶校验信息来保证数据的安全,RAID5不以单独的硬盘来存放数据的奇偶校验信息,而是保存在各个磁盘上。继承
这样当任何一个硬盘损坏均可以根据其余硬盘上的奇偶校验信息来尝试重建损坏的数据,性能也很高,兼顾了存储性能、数据安全和存储成本,能够看做是RAID0与RAID1的折中方案。虚拟机
RAID10:须要至少四块(含)硬盘,兼具速度和安全性,但成本很高。
继承了RAID0的快速与RAID1的安全,RAID1在这里提供了冗余备份的阵列,而RAID0则负责数据的读写阵列。
因这种结构的成本高,通常用于存放要求速度与差错控制的数据。
名称结构:
下面咱们来具体操做
首先咱们先来挂载RAID5 设置为3个作RAID,2个用来作备份。
首先咱们须要将虚拟机关机
点击此处添加5个硬盘,注意要添加五个。由于sda已经被虚拟机自己占用。
此时的虚拟机上共有6个磁盘。
打开虚拟机,打开终端,输入命令
[root@fanwenting-hbza ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 2 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
-C表明建立操做,-v显示建立过程,-n是用到的硬盘个数,-l是定义RAID的级别然后面写上要加入阵列的硬盘名称,-x是用于备份的磁盘个数。
此处须要输入y 来确认建立这个阵列。
下面用mdadm来查看阵列的详细信息
[root@fanwenting-hbza ~]# mdadm -D /dev/md0
(Spare Devices数量为2)
而后将磁盘阵列格式化为ext4系统:
[root@fanwenting-hbza ~]# mkfs.ext4 /dev/md0
[root@fanwenting-hbza ~]# mount -a
将/dev/sdb设备设置为故障并移出阵列:
[root@fanwenting-hbza ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
此时再查看阵列的详细信息
/dev/md0:
Version : 1.2
Creation Time : Tue Oct 22 00:54:55 2019
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue Oct 22 01:00:08 2019
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 1
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 51% complete
Name : fanwenting-hbza:0 (local to host fanwenting-hbza)
UUID : 2b3024a3:c4d4d3d1:3cd84251:622b8f9c
Events : 28
Number Major Minor RaidDevice State
4 8 80 0 spare rebuilding /dev/sdf
1 8 32 1 active sync /dev/sdc
5 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
3 8 64 - spare /dev/sde
你会发现sdf直接顶替上去了。这样大大方便了运维人员对磁盘的管理,磁盘损坏形成的损失大大减少了。
下面咱们来挂载一个使用磁盘数为5的RAID10
由于如今RAID5在虚拟机上运行着,因此须要先输入命令将阵列设备停用。
[root@fanwenting-hbza ~]#umount /dev/md0
[root@fanwenting-hbza ~]#mdadm -S /dev/md0
mdadm: stopped /dev/md0
将阵列完全停用,如今阵列已经找不到了。
[root@fanwenting-hbza ~]#mdadm -D /dev/md0
此时就能够开始建立你RAID10新的阵列了。
输入指令
[root@fanwenting-hbza ~]#mdadm -Cv /dev/md0 -a yes -n 5 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
-C表明建立操做,-v显示建立过程,-a yes检查RAID名称,-n是用到的硬盘个数,-l是定义RAID的级别然后面写上要加入阵列的硬盘名称。
须要y来确认创建这个阵列,而后进行格式化并挂载使用。
将RAID磁盘阵列格式化为ext4格式:
[root@fanwenting-hbza ~]# mkfs.ext4 /dev/md0
而后建立挂载目录:
[root@fanwenting-hbza ~]#mkdir /RAID
进行文件系统的挂载:
[root@fanwenting-hbza ~]# mount /dev/md0 /RAID
查看磁盘的挂载信息:
[root@fanwenting-hbza ~]# df -h
最后将它设为重启后也依然生效:
[root@fanwenting-hbza ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
这样磁盘在重启之后也依然挂载在虚拟机上,若是想将RAID5挂载在虚拟机上且重启后生效也能够执行上述操做。
参数-D查看RAID阵列的详细信息:
[root@fanwenting-hbza ~]# mdadm -D /dev/md0
如今咱们来模拟一个硬盘损坏的状况
使用mdadm的-f参数将/dev/sdb移出阵列:
[root@fanwenting-hbza ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
(此时的/dev/sdb状态被是移除,失败状态)
由于RAID10级别可以容许一组RAID1硬盘中存在一个故障盘而不影响使用,因此依然能够正常的建立或删除文件~
如今就把新的硬盘添加进去吧,固然也可让硬盘sdb恢复使用:请重启后执行“ mdadm /dev/md0 -a /dev/sdb”。