前言
本人也是菜鸟,在学习过程和写博客过程中都参考了很多的资料,写博客的目的是为了帮到一些有需求的人,同时也为了自己记录学习过程,如有不对和不妥的地方欢迎指出
本文将学习在Linux系统中磁盘中的RAID磁盘阵列技术。将了解关于RAID磁盘阵列的相关概念、RAID各个技术方案之间的对比、创建各种RAID磁盘阵列、备份RAID磁盘阵列中的磁盘、模拟RAID设备损坏、删除RAID磁盘阵列等操作
了解RAID
RAID技术通过把多个磁盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理磁盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果
RAID0
将多个磁盘合并成为⼀个磁盘,速度最快。存放数据时,将数据按磁盘的个数进⾏分段,然后将数据同时写⼊磁盘中。但如果其中⼀个磁盘损坏则所有数据都⽆法使⽤,RAID0不具有冗余功能
RAID1
将磁盘阵列中的磁盘分为相同的两组,互为镜像,当其中⼀个磁盘出现故障时,可以利⽤镜像进⾏恢复,不仅读写速度快,也加强了系统的可靠性(容错能⼒),缺点是磁盘的利⽤率低,只有50%
RAID5
向磁盘阵列中的磁盘写⼊数据,奇偶校验数据存放在阵列中的各个盘上,这样任何⼀个磁盘损坏都可以根据其他硬盘上的效验来重建损坏的数据。磁盘的利⽤率为n-1,其中n为使⽤RAID5的磁盘总数量
RAID10
RAID10是RAID0+RAID1技术的“合体”,该技术⾄少需要4块硬盘来组成,其中先两两制作成RAID1磁盘列阵,再对两个RAID1实施RAID0技术,这样既有高读写速度,也有安全性。只要坏的不是同⼀组的所有硬盘,那么最多可以损坏50%的硬盘设备也不会丢失数据
技术对比
注:n为磁盘数量
RAID级别 | 最少硬盘 | 可用容量 | 读写性能 | 安全性 |
0 | 2 | n | n | 低 |
1 | 2 | n/2 | n | 高 |
5 | 3 | n-1 | n-1 | 中 |
10 | 4 | n/2 | n/2 | 高 |
部署RAID0、1、5、10
RAID0、1、5、10的创建过程是基本一致的,只有参数中的数值不同,这里用RAID10举例
创建好磁盘
[root@linux1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─rl-root 253:0 0 17G 0 lvm /
└─rl-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk #第一块
sdc 8:32 0 20G 0 disk #第二块
sdd 8:48 0 20G 0 disk #第三块
sde 8:64 0 20G 0 disk #第四块
sr0 11:0 1 7.9G 0 rom /mnt
#也可以使用分区,不过需要更改一下分区的格式
下载命令
[root@linux1 ~]# dnf -y install mdadm #下载mdadm命令
#部分系统可能默认有,就可以省略这一步,安装需要先配置软件源
命令详解:
mdadm
-a #检测设备名称
-n #指定设备数量
-l #指定RAID级别
-C #创建
-v #显示过程
-f #模拟设备损坏
-r #移除设备
-Q #查看摘要信息
-D #查看详细信息
-S #停止RAID
-x #备用设备数量
创建RAID10磁盘阵列
[root@linux1 ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sd[b-e]
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
参数详解:
-Cv #创建磁盘阵列并显示过程
/dev/md0 #RAID设备的名称
-n 4 #使用四块磁盘
-l 10 #RAID级别为10
/dev/sd[b-e] #使用了sdb、sdc、sdd、sde四块磁盘
#创建一个名为/dev/md0的RAID10磁盘阵列,使用了/dev/sdb,/dev/sdc./dev/sdd,/dev/sde四块磁盘
创建完成
格式化
[root@linux1 ~]# mkfs.xfs /dev/md0 #格式化为xfs格式
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载
[root@linux1 ~]# mkdir /raid10 #创建挂载目录
[root@linux1 ~]# mount /dev/md0 /raid10/ #挂载md0到/raid10
备份盘
同理,RAID0、1、5、10都一样,这里用RAID5举例
新增磁盘
下载命令
[root@linux1 ~]# dnf -y install mdadm
创建磁盘阵列
[root@linux1 ~]# mdadm -Cv /dev/md1 -n 3 -x 1 -l 5 /dev/sd[b-e]
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
#-x参数为备用盘的数量,RAID5至少需要三块磁盘,所以-n参数填写3,-x 1表示有一块磁盘作为备份盘,后面指定磁盘的时候也要多添加一块
查看详细信息
/dev/sdb、/dev/sdc、/dev/sdd处于活动且同步状态
/dev/sde是空闲热备盘
格式化
[root@linux1 ~]# mkfs.xfs /dev/md1
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md1 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载
[root@linux1 ~]# mkdir /raid5
[root@linux1 ~]# mount /dev/md1 /raid5
模拟RAID设备损坏
[root@linux1 ~]# mdadm /dev/md1 -f /dev/sdc #将/dev/sdc标记为失败,使其不可用
mdadm: set /dev/sdc faulty in /dev/md1
查看状态,此时sdc的状态变成了faulty(故障),作为备份盘的sde就顶上去了
移除故障的磁盘
[root@linux1 ~]# mdadm /dev/md1 -r /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md1
#/dev/sdc已经故障不可用了,所以我们可以移除掉sdc替换新的磁盘
添加新的磁盘
[root@linux1 ~]# mdadm /dev/md1 -a /dev/sdf
mdadm: added /dev/sdf
#此时新添加的/dev/sdf便会再次成为新的备份盘
删除磁盘阵列
[root@linux1 ~]# umount /dev/md1 #卸载RAID5
[root@linux1 ~]# mdadm /dev/md1 -f /dev/sdb -r /dev/sdb #停用并删除分区
[root@linux1 ~]# mdadm /dev/md1 -f /dev/sdd -r /dev/sdd #停用并删除分区
[root@linux1 ~]# mdadm /dev/md1 -f /dev/sde -r /dev/sde #停用并删除分区
[root@linux1 ~]# mdadm /dev/md1 -f /dev/sdf -r /dev/sdf #停用并删除分区
[root@linux1 ~]# mdadm -S /dev/md1 #停用磁盘阵列
mdadm: stopped /dev/md1
[root@linux1 ~]# ls /dev/md1 #查看
ls: 无法访问 '/dev/md1': 没有那个文件或目录 #寄了