RAID磁盘阵列
简称:独立冗余磁盘阵列
作用:把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘)。从而提供比单个硬盘更高的存储性能和提供数据备份技术。
RAID级别
常用的RAID级别
RAID0、RAID1、RAID5、RAID6、RAID1+0等
RAID 0(条带化存储)
- RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余。
- RAID 0只是单纯的提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据
RAID 1(镜像存储)
- 通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
- 当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能
- RAID 1是磁盘阵列中单位成本最高的。但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
RAID 5
- N(N≥3)块盘组成阵列,一份数据产生N-1个条带,同时还有一份校验数据,共N份数据在N块盘上循环均衡存储 N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高
- (N-1)/N 磁盘利用率
- 可靠性高,允许坏一块盘,不影响所有数据
RAID 6
- N(N≥4)块盘组成阵列,(N-2)/N 磁盘利用率
- 与RAID 5相比,RAID 6增加了第二块独立的奇偶校验信息块
- 两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用
- 相对于RAID 5有更大的“写损失”,因此写性能较差
RAID 1+0(先做镜象,再做条带)
- N (偶数,N>=4)。块盘两两镜像后,再组合成一个RAID 0
- N/2磁盘利用率
- N/2块盘同时写入,N块盘同时读取
- 性能高,可靠性高
RAID 0+1(先做条带,再做镜象)
- 读写性能与RAID 10相同
- 安全性低于RAID 10
RADI级别 | 磁盘数量 | 磁盘利用率 | 读性能 | 写性能 | 高可用 | 特点 |
---|---|---|---|---|---|---|
RADI0 | N | N 100% | 高 | 高 | 无 | 追求大容量和读写速度 |
RAID1 | N(偶数) | N/2 | 低 | 低 | 中等 | 追求安全,损坏一块不影响使用 |
RAID5 | N≥3 | (N-1)N | 高 | 低 | 高 | 成本控制前提下,追求最大容量,速度和高可用性 |
RAID6 | N≥4(偶数) | (N-2)/N | 高 | 低 | 很高 | 比RAID5的数据安全更高,但写速度慢 |
RAID10 | N≥4(偶数) | N/2 | 高 | 中等 | 中等 | 综合RAID0和RAID1,每个基组可坏一个 |
RAID热备盘
作用:
相当于是在 raid里面再做一个备份,比如说本来Raid里面是只允许坏一个盘的情况下系统和数据依然正常运行,但是坏两个就不行了,但是加了热备之后就可以同时坏两个盘都没问题,就多了个保险。
创建 RAID 磁盘阵列
检查安装mdadm 软件包
在虚拟机添加硬盘
对分区进行管理
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x1b864092 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
创建RIAD 6卷,并查看详细信息。
[root@localhost ~]# mdadm -C -v /dev/md6 -l6 -n4 /dev/sd{b..e}1 -x1 /dev/sdf1
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/md6 started.
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md6 : active raid6 sdf1[4](S) sde1[3] sdd1[2] sdc1[1] sdb1[0]
41908224 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
[=======>.............] resync = 37.2% (7809152/20954112) finish=1.0min speed=206452K/sec
unused devices: <none>
格式化RAID 6卷,将文件系统格式化为xfs格式。
[root@localhost ~]# mkfs.xfs /dev/md6
meta-data=/dev/md6 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
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
在 /mnt/目录下新建一个md6目录用来做挂载点,然后将RAID 6卷md6挂载上去,查看是否挂载成功。
[root@localhost ~]# mkdir /mnt/md6
[root@localhost ~]# mount /dev/md6 /mnt/md6
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 4.9G 46G 10% /
devtmpfs 1.2G 0 1.2G 0% /dev
tmpfs 1.2G 0 1.2G 0% /dev/shm
tmpfs 1.2G 9.1M 1.2G 1% /run
tmpfs 1.2G 0 1.2G 0% /sys/fs/cgroup
/dev/sda1 5.0G 179M 4.9G 4% /boot
tmpfs 230M 4.0K 230M 1% /run/user/42
tmpfs 230M 28K 230M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/md6 40G 33M 40G 1% /mnt/md6
验证RAID 6磁盘阵列
在 /mnt/md6/ 目录下新建一些空文件。
[root@localhost ~]# touch /mnt/md6/test{1..50}
[root@localhost ~]# ls /mnt/md6
test1 test14 test19 test23 test28 test32 test37 test41 test46 test50
test10 test15 test2 test24 test29 test33 test38 test42 test47 test6
test11 test16 test20 test25 test3 test34 test39 test43 test48 test7
test12 test17 test21 test26 test30 test35 test4 test44 test49 test8
test13 test18 test22 test27 test31 test36 test40 test45 test5 test9
用“mdadm -D /dev/md6”命令查看一下RAID 的信息,可以看到sdb1、sdc1、sdd1、sde1处于活跃状态,sdf1、sdg1处于备用状态。
[root@localhost ~]# mdadm -D /dev/md6
/dev/md6:
Version : 1.2
Creation Time : Tue May 9 16:04:32 2023
Raid Level : raid6
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue May 9 16:07:58 2023
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:6 (local to host localhost.localdomain)
UUID : 49e0b98a:3d8b1822:e677fdd2:852a2316
Events : 19
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
4 8 81 - spare /dev/sdf1
用“mdadm -f ”命令将sdb1从RAID磁盘阵列md6中移除,来模拟磁盘损坏,看备用磁盘sdf1能否自动顶替上去。
[root@localhost ~]# mdadm -f /dev/md6 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md6
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md6 : active raid6 sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0](F)
41908224 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [_UUU]
[=====>...............] recovery = 28.1% (5901788/20954112) finish=1.2min speed=203509K/sec
unused devices: <none>
[root@localhost ~]# mdadm -D /dev/md6
/dev/md6:
Version : 1.2
Creation Time : Tue May 9 16:04:32 2023
Raid Level : raid6
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue May 9 16:30:11 2023
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 49% complete
Name : localhost.localdomain:6 (local to host localhost.localdomain)
UUID : 49e0b98a:3d8b1822:e677fdd2:852a2316
Events : 28
Number Major Minor RaidDevice State
4 8 81 0 spare rebuilding /dev/sdf1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
0 8 17 - faulty /dev/sdb1
再次查看/mnt/md6/目录,之前创建的文件还在没有丢失。
[root@localhost ~]# ls /mnt/md6
test1 test14 test19 test23 test28 test32 test37 test41 test46 test50
test10 test15 test2 test24 test29 test33 test38 test42 test47 test6
test11 test16 test20 test25 test3 test34 test39 test43 test48 test7
test12 test17 test21 test26 test30 test35 test4 test44 test49 test8
test13 test18 test22 test27 test31 test36 test40 test45 test5 test9
用LVM做RAID5
建逻辑卷
[root@localhost ~]# pvcreate /dev/sd{b..e}1
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdd1" successfully created.
Physical volume "/dev/sde1" successfully created.
[root@localhost ~]# vgcreate vg1 /dev/sd{b..e}1
Volume group "vg1" successfully created
[root@localhost ~]# lvcreate -L 10G -n ky29 vg1
Logical volume "ky29" created.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 5G 0 part /boot
└─sda2 8:2 0 55G 0 part
├─centos-root 253:0 0 50G 0 lvm /
└─centos-swap 253:1 0 5G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─vg1-ky29 253:2 0 10G 0 lvm
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
sde 8:64 0 20G 0 disk
└─sde1 8:65 0 20G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
创建RAID5卷
[root@localhost ~]# mdadm -C /dev/md5 -l5 -n3 /dev/vg1/ky29 /dev/vg1/ky28 /dev/vg1/ky30 -x1 /dev/sde1
mdadm: largest drive (/dev/sde1) exceeds size (10477568K) by more than 1%
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue May 9 18:52:46 2023
Raid Level : raid5
Array Size : 20955136 (19.98 GiB 21.46 GB)
Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue May 9 18:53:38 2023
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 6494eb98:484f4fcf:a15aa43d:1c2a5b6b
Events : 18
Number Major Minor RaidDevice State
0 253 2 0 active sync /dev/dm-2
1 253 3 1 active sync /dev/dm-3
4 253 4 2 active sync /dev/dm-4
3 8 65 - spare /dev/sde1
格式化RAID5卷并挂载
[root@localhost ~]# mkfs.xfs /dev/md5
meta-data=/dev/md5 isize=512 agcount=16, agsize=327296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5236736, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount /dev/md5 data
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 4.9G 46G 10% /
devtmpfs 1.2G 0 1.2G 0% /dev
tmpfs 1.2G 0 1.2G 0% /dev/shm
tmpfs 1.2G 9.2M 1.2G 1% /run
tmpfs 1.2G 0 1.2G 0% /sys/fs/cgroup
/dev/sda1 5.0G 179M 4.9G 4% /boot
tmpfs 230M 4.0K 230M 1% /run/user/42
tmpfs 230M 28K 230M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
/dev/md5 20G 33M 20G 1% /root/data
验证RAID5
[root@localhost ~]# mdadm /dev/md5 -f /dev/vg1/ky29
mdadm: set /dev/vg1/ky29 faulty in /dev/md5
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue May 9 18:52:46 2023
Raid Level : raid5
Array Size : 20955136 (19.98 GiB 21.46 GB)
Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue May 9 19:00:41 2023
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : localhost.localdomain:5 (local to host localhost.localdomain)
UUID : 6494eb98:484f4fcf:a15aa43d:1c2a5b6b
Events : 37
Number Major Minor RaidDevice State
3 8 65 0 active sync /dev/sde1
1 253 3 1 active sync /dev/dm-3
4 253 4 2 active sync /dev/dm-4
0 253 2 - faulty /dev/dm-2