独立磁盘冗余阵列。RAID阵列是把多个较小的磁盘组合到一起,成为一个磁盘组,使性能和容量达到或超过一个独立的磁盘。
RAID的几种级别
raid0: 至少需要两块磁盘,也叫条带,没有容错能力,读写性能都提升,100%
raid1: 至少需要两块磁盘,也叫镜像,硬件容错能力,读性能提升,写性能下降,50%
raid5: 至少需要三块磁盘,允许一块盘出错,兼具一定的效率与冗余能力,读写性能提升,(n-1)/n
raid10: 至少需要四块磁盘,允许不同组内各坏一块盘,读写性能提升,50%
raid01:至少需要四块磁盘,允许只坏一个组内的磁盘,性能同raid10,故我们常用raid10而不是raid01
*:RAID的创建命令:mdadm,此命令的配置文件为/etc/mdadm.conf
1.首先我们在vmware中新增sdb sdc sdd sde硬盘,改动前先在系统里把所有磁盘umount,分区设置清空,硬盘添加完成重启系统
分别fdisk进入sdb,sdc,sdd,sde创建分区sdb1,sdc1,sdd1,sde1,分区空间不宜过小,以防分区建立后没有可用空间,因为是尝试,所以也不要过大,要不然等待时间会很长,这里我们选择给每一个分区设置了2G空间。
fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
其他磁盘一一进行分区设置
2.接下来我们开始建立raid5,先检查系统中是否有mdadm工具:yum install -y mdadm
然后,我们使用命令mdadm
mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[bce]1 -x1 /dev/sdd1
创建 详细过程 创建名称 raid级别 raid设备数量 raid设备 空闲设备数量(热备盘) 设备名称
--creat --level --raid-devices
cat /proc/mdstat或mdadm -D /dev/md5查看raid信息
[root@lnx1 /]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Jul 6 13:47:12 2022
Raid Level : raid5
Array Size : 4184064 (3.99 GiB 4.28 GB)
Used Dev Size : 2092032 (2043.00 MiB 2142.24 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Jul 6 14:07:08 2022
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : lnx1:5 (local to host lnx1)
UUID : 263830f8:ed29e78b:51de691c:4a459c50
Events : 41
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
3 8 65 2 active sync /dev/sde1
4 8 49 - spare /dev/sdd1
可以看到sdb1,sdc1,sde1处于active,sdd1为spare备用
3.RAID的配置文件名为“mdadm.conf”,默认是不存在的,所以需要我们创建,该配置文件存在的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。“mdadm.conf”文件内容包括:由DEVICE选项指定用于软RAID的所有设备,和ARRAY选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。生成RAID配置文件操做如下:
mdadm --detail --scan > /etc/mdadm.conf
但是当前生成“mdadm.conf”文件的内容并不符合所规定的格式,所以也是不生效的,这时需要手工修改该文件内容为如下格式:
# vi /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md/5 metadata=1.2 spares=1 name=lnx1:5
UUID=263830f8:ed29e78b:51de691c:4a459c50
4.接着,我们格式化文件系统并将raid5进行挂载
mkfs.xfs /dev/md5
mount /dev/md5 /data
5. 别忘了在/etc/fstab里添加设置:/dev/md5
#vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Jun 22 18:46:01 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=e3402bb4-3071-4dbb-88dd-43955afd90d1 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/md5 /data xfs defaults 0 0
:wq!
mount -a
6.查看信息
[root@lnx1 /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.4M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 19G 8.1G 11G 44% /
/dev/md5 xfs 4.0G 33M 4.0G 1% /data
/dev/sda1 xfs 497M 165M 333M 34% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
[root@lnx1 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 18.7G 0 lvm /
└─centos-swap 253:1 0 800M 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part
└─md5 9:5 0 4G 0 raid5 /data
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 2G 0 part
└─md5 9:5 0 4G 0 raid5 /data
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 2G 0 part
└─md5 9:5 0 4G 0 raid5 /data
sde 8:64 0 20G 0 disk
└─sde1 8:65 0 2G 0 part
└─md5 9:5 0 4G 0 raid5 /data
sr0 11:0 1 9.5G 0 rom
RAID0和RAID1的建立可以参考RAID5的建立方法,这里我们直接跳过,介绍RAID 1 0和RAID 0 1的创建方法。
1.回到我们创建RAID5时的磁盘情况,sdb1,sdc1,sdd1,sde1,存在mdadm工具
2.使用mdadm命令创建
mdadm -Cv /dev/md10 -l10 -n4 /dev/sd[bcde]1
创建RAID10,包含sdb1,sdc1,sdd1,sde1
3 .使用lsblk命令进行查看
[root@lnx1 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 18.7G 0 lvm /
└─centos-swap 253:1 0 800M 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─md10 9:10 0 4G 0 raid10
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 2G 0 part
└─md10 9:10 0 4G 0 raid10
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 2G 0 part
└─md10 9:10 0 4G 0 raid10
sde 8:64 0 20G 0 disk
└─sde1 8:65 0 2G 0 part
└─md10 9:10 0 4G 0 raid10
sr0 11:0 1 9.5G 0 rom
4.生成RAID配置文件
mdadm --detail --scan > /etc/mdadm.conf
5.对配置文件进行配置:vi /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md10 metadata=1.2 name=lnx1:10 UUID=378ac869:9f2d65e8:befa87bf:a361cbc6
6.格式化并进行挂载
mkfs.xfs /dev/md10
mount /dev/md10 /data
7. 查看挂载信息
[root@lnx1 /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.5M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 19G 8.1G 11G 44% /
/dev/sda1 xfs 497M 165M 333M 34% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/md10 xfs 4.0G 33M 4.0G 1% /data
我们再来试一试创建RAID01,经过相同的步骤,我们发现,RAID01无法直接通过mdadm创建
[root@lnx1 ~]# mdadm -Cv /dev/md01 -l01 ln4 /dev/sd[bcde]1
mdadm: invalid raid level: 01
我们需要先将sdb1,sdc1,sdd1,sde1分别两两组成RAID0,再将两个RAID0组成一个RAID1,然后生成配置文件并添加设备信息,配置fstab,格式化后进行挂载。
最终得到结果:
[root@lnx1 /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.5M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 19G 8.1G 11G 44% /
/dev/sda1 xfs 497M 165M 333M 34% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/md3 xfs 4.0G 33M 4.0G 1% /data
[root@lnx1 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 18.7G 0 lvm /
└─centos-swap 253:1 0 800M 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─md0 9:0 0 22G 0 raid0
└─md3 9:3 0 4G 0 raid1 /data
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 2G 0 part
└─md0 9:0 0 22G 0 raid0
└─md3 9:3 0 4G 0 raid1 /data
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 2G 0 part
└─md1 9:1 0 4G 0 raid0
└─md3 9:3 0 4G 0 raid1 /data
sde 8:64 0 20G 0 disk
└─sde1 8:65 0 2G 0 part
└─md1 9:1 0 4G 0 raid0
└─md3 9:3 0 4G 0 raid1 /data
sr0 11:0 1 9.5G 0 rom
在RAID中,使用命令mdadm下的manage进行管理
mdadm -S /dev/md* 来停止相关阵列
mdadm /dev/md* -f /dev/sd* 来模拟硬盘故障
--manage --fail
mdadm /dev/md* -r /dev/sd* 来对相应磁盘进行删除
--manage --remove
mdadm /dev/md* -a /dev/sd* 来向目标阵列添加磁盘
--manage --add
mdadm --grow /dev/md0 --size=max 来向磁盘阵列扩容
如果目标阵列的设备已满,则添加的磁盘会成为spare备用,或使用以上命令替换阵列中的一块磁盘设备。阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。对于 raid5 来说,只能增加成员盘,不能减少。而对于 raid1 来说,可以增加成员盘,也可以减少。
mdadm -Cv /dev/md5 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
#创建RAID5阵列,磁盘设备sdb1,sdc1,sdd1,sde1作为spare
mdadm -D /dev/md5
#查看RAID5进行验证
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
3 8 65 - spare /dev/sde1
pvcreate /dev/md5
#创建物理卷
pvs
#查看创建的物理卷
PV VG Fmt Attr PSize PFree
/dev/md5 RALV lvm2 a-- 3.96g 988.00m
/dev/sda2 centos lvm2 a-- <19.51g 0
[unknown] centos lvm2 a-m <20.00g <20.00g
vgcreate RALV /dev/md5
#创建卷组RALV
vgs
#查看卷组信息
VG #PV #LV #SN Attr VSize VFree
RALV 1 1 0 wz--n- 3.96g 988.00m
centos 2 2 0 wz-pn- 39.50g <20.00g
lvcreate -L3G -n1 RALV
#创建逻辑卷 1
lvs
#查看逻辑卷
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
1 RALV -wi-a----- 3.00g
root centos -wi-ao---- <18.73g
swap centos -wi-ao---- 800.00m
查看挂载是否成功
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.5M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 19G 8.1G 11G 44% /
/dev/sda1 xfs 497M 165M 333M 34% /boot
tmpfs tmpfs 98M 12K 98M 1% /run/user/42
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/RALV-1 ext4 2.9G 9.0M 2.8G 1% /LVM
我们向/LVM中写入数据试一试,发现一切正常
[root@lnx1 LVM]# vi test
[root@lnx1 LVM]# ll
总用量 20
drwx------. 2 root root 16384 7月 6 17:13 lost+found
-rw-r--r--. 1 root root 365 7月 6 17:17 test
我们模拟一下当阵列中一块磁盘出现故障时会发生什么,使用mdadm的fail选项
mdadm /dev/md5 -f /dev/sdb1
我们发现,sdb1故障时,spare 设备显示为0 ,我们设置的热备组磁盘sde1补上了位置,起到了保护数据的作用
Update Time : Wed Jul 6 17:21:41 2022
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : lnx1:5 (local to host lnx1)
UUID : 9f1f81fc:f52d4e17:5ea5f494:42aa9071
Events : 37
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
0 8 17 - faulty /dev/sdb1
而sdb1损坏后,我们要把他移除出去:
mdadm /dev/md5 -r /dev/sdb1
前面我们提到过,RAID5只允许损坏一块磁盘,让我们试试在没有热备组设备的情况下,损坏一块磁盘设备会造成什么后果:
mdadm /dev/md5 -f /dev/sdc1
mdadm /dev/md5 -f /dev/sdd1
#再拟sbc1,sdd1磁盘的损坏
此时的RAID5阵列情况:
Update Time : Wed Jul 6 17:31:03 2022
State : clean, FAILED
Active Devices : 1
Working Devices : 1
Failed Devices : 3
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
我们尝试进入/LVM进行io操作
[root@lnx1 LVM]# ls
lost+found test
[root@lnx1 LVM]# cat test
jvbfdvbjdvbjfvbfdbvdfnbjfnbjfnbjgbjnbjnjdnjbdfbsnvjdfbjkdfnvlknvkdsnvjdfnvkldvjk bjfnvlfd jfdnb kfnvkfnb dljgn slkn ldlf/n dln l/dfnb ldlsnbldfnvkarnkanrfjbnfajnb dlf'nbjrnjr ngoenr oreorgjksbvkjdsf gljkrnkdngjdnl;samflkerabjarnkangvlkndfjvn jfaonfgkjfb kdf j.asn fkjdb vker vkda ndf vk vker avnera vknea vkn vkjera kjerav jrkbfenfiebvjerblknfljabvkjaebjeravnjarnv
[root@lnx1 LVM]# touch kkk
touch: 无法创建"kkk": 只读文件系统
这时会发现,文件系统受损成了只读文件系统
总结
RAID和LVM的组合使用与单独创建raid5和lvm的步骤是有区别的
当一块硬盘损坏后要及时添加新的进来