目录
一.RAID磁盘阵列介绍
1.RAID是Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。
(1)是把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
(2)具有冗余能力,即使某个硬盘发生故障,也能通过同位检查(Parity Check)的观念读出数据,保证数据的可靠性和安全性。
2.组成磁盘阵列的不同方式称为RAID级别(RAID Levels);常用的RAID级别有:
RAID0,RAID1,RAID5,RAID6,RAID1+0 等
二.常用的RAID磁盘阵列的介绍
1.RAID 0 (条带化存储)
(1)RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输
率,但它没有数据冗余
(2)RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将
影响到所有数据;
(3)RAID 0不能应用于数据安全性要求高的场合
RAID 0是两个磁盘组成的,两块磁盘都用于数据存储和传输,数据传输具有很高的传输率,但是没有冗余能力;磁盘受损后,数据容易丢失。
2.RAID 1(镜像存储)
(1)通过磁盘数据镜像实现数据几余,在成对的独立磁盘上产生互为备份的数据
(2)当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能
(3)RAID 1是磁盘阵列中单位成本最高的但提供了很高的数据安全性和可用性。当一个磁盘失效
时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据
RAID1 也是由两个磁盘组成的,他的两个磁盘是互为备份的,记录的都是一样的内容,具有很强的安全性。
3.RAID 5
(1)N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据共N份数据在N块盘
上循环均衡存储
(2)N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高
(3)(N-1)/N磁盘利用率
(4)可靠性高,允许坏1块盘,不影响所有数据
RAID 5 是由至少三块磁盘组成,可以通过纠删码还原数据;内存利用率为(N-1)N;损坏一块磁盘后,可以根据其他几块磁盘还原数据。
4.RAID 6
(1)N(N>=4)块盘组成阵列,(N-2)/N磁盘利用率
(2)与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块
(3)两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用
(4)相对于RAID 5有更大的“写损失”,因此写性能较差
RAID 6 由至少四块磁盘组成,磁盘利用率为(N-2)N;比RAID5多谢一份纠删码,且是独立的一份纠删码,RAID5的纠删码是分布在所有的磁盘上的。
5.RAID 1+0(先做镜像,再做条带)
(1)N(偶数,N>=4)块盘两两镜像后,再组合成一个RAID 0
(2)N/2磁盘利用率
(3)N/2块盘同时写入,N块盘同时读取
(4)性能高,可靠性高
6.RAID 0+1 (先做条带,再做镜像)
(1)读写性能与RAID 10 相同
(2)安全性能低于RAID 10
7.RAID 磁盘阵列的区别
RAID级别 | 硬盘要求数量 | 磁盘利用率 | 是否有冗余能力 | 读写性能 |
RAID0 | N | N | 无 | 单个硬盘的N倍 |
RAID1 | N(偶数) | N/2 | 有,允许一个设备故障 | 读性能提升,写没有提升 |
RAID5 | N>=3 | (N-1)/N | 有,允许一个设备故障 | 需要多写一份纠删码,所以写性能相对RAID0低一些 |
RAID6 | N>=4 | (N-2)/N | 有,允许两个设备故障 | 需要多写两份纠删码,所以写性能相对RAID5更低一些 |
RAID10 | N>=4(偶数) | N/2 | 有,允许不同组中各坏一个 | 读性能可提升N倍,写性能提升N/2倍 |
8.阵列卡介绍
(1)阵列卡是用来实现RAID功能的板卡
(2)通常是由I/0处理器、硬盘控制器、硬盘连接器和缓存等一系列组件构成的
(3)不同的RAID卡支持的RAID功能不同:例如支持RAID0、RAID1、RAID5、RAID10等
(4)RAID卡的接口类型:IDE接口、SCSI接口、SATA接口和SAS接口
三.构建软RAID磁盘阵列
1.添加硬盘,fdisk分区,分区类型ID设置为 fd
[root@192 ~]# fdisk /dev/sdb #设置分区(这里添加四块)
欢迎使用 fdisk (util-linux 2.23.2)。 #四块都是同样操作
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x895b7142 创建新的 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
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区“Linux”的类型更改为“Linux raid autodetect”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
2.使用mdadm创建软raid
[root@192 ~]# mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20953088K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
[root@192 ~]# watch -n 5 'cat /proc/mdstat'
[root@192 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
watch -n 5 'cat /proc/mdstat' 进入下图界面
拓展:创建raid10:(先做镜像,再做条带) mdadm -Cv /dev/md0 -l1 -n2 /dev/sdXX
mdadm -Cv /dev/md1 -l1 -n2 /dev/sdXX
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1
3.格式化
[root@192 ~]# mkfs -t xfs /dev/md5
meta-data=/dev/md5 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
[root@192 ~]# mkdir /opt/test
[root@192 ~]# ls /opt/
rh test
4.挂载使用
[root@192 ~]# mount /dev/md5 /opt/test
[root@192 ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 36G 4.9G 31G 14% /
/dev/sda1 xfs 509M 181M 329M 36% /boot
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/md5 xfs 40G 33M 40G 1% /opt/test
5.查看RAID5配置信息
[root@192 ~]# echo 'DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
[root@192 ~]# mdadm --detail --scan >> /etc/mdadm.conf
[root@192 ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=192.168.80.202:5 UUID=f4af24d8:dea93504:28db9825:9272b88e
6.尝试损坏一块硬盘后是否还能还原数据
[root@192 ~]# cd /opt/test/
[root@192 test]# touch file{1..50}
[root@192 test]# mkdir file{51..100}
[root@192 test]# ls
file1 file16 file23 file30 file38 file45 file52 file6 file67 file74 file81 file89 file96
file10 file17 file24 file31 file39 file46 file53 file60 file68 file75 file82 file9 file97
file100 file18 file25 file32 file4 file47 file54 file61 file69 file76 file83 file90 file98
file11 file19 file26 file33 file40 file48 file55 file62 file7 file77 file84 file91 file99
file12 file2 file27 file34 file41 file49 file56 file63 file70 file78 file85 file92
file13 file20 file28 file35 file42 file5 file57 file64 file71 file79 file86 file93
file14 file21 file29 file36 file43 file50 file58 file65 file72 file8 file87 file94
file15 file22 file3 file37 file44 file51 file59 file66 file73 file80 file88 file95
[root@192 test]# mdadm /dev/md5 -f /dev/sdc1 #-f 选项指定某个硬盘损坏
mdadm: set /dev/sdc1 faulty in /dev/md5
[root@192 test]# mdadm -D /dev/md5 #查看RAID情况
/dev/md5:
Version : 1.2
Creation Time : Tue Apr 16 23:42:47 2024
Raid Level : raid5
Array Size : 41906176 (39.96 GiB 42.91 GB)
Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Apr 16 23:53:48 2024
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 14% complete
Name : 192.168.80.202:5 (local to host 192.168.80.202)
UUID : f4af24d8:dea93504:28db9825:9272b88e
Events : 24
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 65 1 spare rebuilding /dev/sde1
4 8 49 2 active sync /dev/sdd1
1 8 33 - faulty /dev/sdc1
[root@192 test]# cat /proc/mdstat #查看取代的过程,需要等待
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3] sdc1[1](F) sdb1[0]
41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
[===========>.........] recovery = 55.3% (11600384/20953088) finish=0.7min speed=206256K/sec
unused devices: <none>
[root@192 test]# watch -n 5 'cat /proc/mdstat'
[root@192 test]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Apr 16 23:42:47 2024
Raid Level : raid5
Array Size : 41906176 (39.96 GiB 42.91 GB)
Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Apr 16 23:55:20 2024
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : 192.168.80.202:5 (local to host 192.168.80.202)
UUID : f4af24d8:dea93504:28db9825:9272b88e
Events : 43
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 65 1 active sync /dev/sde1
4 8 49 2 active sync /dev/sdd1
1 8 33 - faulty /dev/sdc1
[root@192 test]# cd /opt/
[root@192 opt]# ls
rh test
[root@192 opt]# ls test/
file1 file16 file23 file30 file38 file45 file52 file6 file67 file74 file81 file89 file96
file10 file17 file24 file31 file39 file46 file53 file60 file68 file75 file82 file9 file97
file100 file18 file25 file32 file4 file47 file54 file61 file69 file76 file83 file90 file98
file11 file19 file26 file33 file40 file48 file55 file62 file7 file77 file84 file91 file99
file12 file2 file27 file34 file41 file49 file56 file63 file70 file78 file85 file92
file13 file20 file28 file35 file42 file5 file57 file64 file71 file79 file86 file93
file14 file21 file29 file36 file43 file50 file58 file65 file72 file8 file87 file94
file15 file22 file3 file37 file44 file51 file59 file66 file73 file80 file88 file95
7.mdadm命令其它常用选项
-r:移除设备
-a:添加设备
-S:停止RAID
-A:启动RAID
查看软raid的状态信息
cat /proc/mdstat
mdadm -D /dev/mdX
8.删除坏的硬盘和加入新的硬盘
[root@192 opt]# mdadm /dev/md5 -r /dev/sdc1 #-r 选项删除硬盘
mdadm: hot removed /dev/sdc1 from /dev/md5
[root@192 opt]# mdadm -D /dev/md5 #查看RAID情况
/dev/md5:
Version : 1.2
Creation Time : Tue Apr 16 23:42:47 2024
Raid Level : raid5
Array Size : 41906176 (39.96 GiB 42.91 GB)
Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Apr 16 23:57:56 2024
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : 192.168.80.202:5 (local to host 192.168.80.202)
UUID : f4af24d8:dea93504:28db9825:9272b88e
Events : 44
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 65 1 active sync /dev/sde1 #sde1会取代sdc1
4 8 49 2 active sync /dev/sdd1
[root@192 opt]# mdadm /dev/md5 -a /dev/sdc1 #重新添加sdc1
mdadm: added /dev/sdc1
[root@192 opt]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Tue Apr 16 23:42:47 2024
Raid Level : raid5
Array Size : 41906176 (39.96 GiB 42.91 GB)
Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Apr 16 23:58:40 2024
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : 192.168.80.202:5 (local to host 192.168.80.202)
UUID : f4af24d8:dea93504:28db9825:9272b88e
Events : 45
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
3 8 65 1 active sync /dev/sde1
4 8 49 2 active sync /dev/sdd1
5 8 33 - spare /dev/sdc1
9.停止 和启动 RAID 的步骤
需要保证配置文件存在,且需要解挂载后才能停止
[root@192 opt]# ls /etc/mdadm.conf #确保文件存在
/etc/mdadm.conf
[root@192 opt]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=192.168.80.202:5 UUID=f4af24d8:dea93504:28db9825:9272b88e
[root@192 opt]# umount /opt/test #解挂载后才能停止RAID
[root@192 opt]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 1913552 0 1913552 0% /dev
tmpfs 1930628 0 1930628 0% /dev/shm
tmpfs 1930628 12624 1918004 1% /run
tmpfs 1930628 0 1930628 0% /sys/fs/cgroup
/dev/mapper/centos-root 37202180 5094412 32107768 14% /
/dev/sda1 520868 184532 336336 36% /boot
tmpfs 386128 12 386116 1% /run/user/42
tmpfs 386128 0 386128 0% /run/user/0
[root@192 opt]# mdadm -S /dev/md5 #停止RAID
mdadm: stopped /dev/md5
[root@192 opt]# ls /dev/md5 #查看RAID
ls: 无法访问/dev/md5: 没有那个文件或目录
[root@192 opt]# cat /proc/mdstat #查看RAID
Personalities : [raid6] [raid5] [raid4]
unused devices: <none>
[root@192 opt]# mdadm -As /dev/md5 #启动RAID
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
[root@192 opt]# ls /dev/md5 #查看RAID
/dev/md5
[root@192 opt]# cat /proc/mdstat #查看RAID
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdb1[0] sdc1[5](S) sdd1[4] sde1[3]
41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>