目录
一.RAID磁盘阵列
RAID是英文Redundant Array of Independent Disks的缩写,中文简称为
独立磁盘冗余磁盘阵列
。简单的说,RAID是一种
把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘)
,从而提供比单个硬盘更高的存储性能和提供数据备份技术。
组成磁盘阵列的不同方式称为
RAID级别(RAID Levels)
。在用户看起来,组成的磁盘组就像
是一个硬盘
,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。不同的是,
磁盘阵列的存储速度要比单个硬盘高很多,而且可以提供自动数据备份。数据备份的功能是在用户数据一旦发生损坏后,利用备份信息可以使损坏数据得以恢复,从而保障了用户数据的安全性。
常用的磁盘阵列级别: RAID0,RAID1,RAID3,RAID5,RAID1+0,RADI0+1等
1.RAID0
RAID 0 并不是真正的RAID结构,没有数据冗余,没有数据校验的磁盘陈列。实现RAID 0至少需要两块以上的硬盘,它将两块以上的硬盘合并成一块,数据连续地分割在每块盘上。 因为
带宽加倍
,所以
读/写速度加倍
, 但RAID 0在提高性能的同时,并没有提供数据保护功能,只要任何一块硬盘损坏就会
丢失所有数据
。因此RAID 0 不可应用于需要数据高可用性的关键领域。
特点:
RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择。
2.RAID1
RAID1是将一个两块
(偶数块)
硬盘所构成RAID磁盘阵列,其容量仅
等于N一块硬盘的容量
,因为另一块只是当作数据“镜像”。RAID 1磁盘阵列显然是最可靠的一种阵列,因为它总是保持一份完整的数据备份。它的性能自然没有RAID 0磁盘阵列那样好,但其数据读取确实较单一硬盘来的快,因为数据会从两块硬盘中较快的一块中读出。RAID 1磁盘阵列的
写入速度通常较慢
,因为数据得分别写入两块硬盘中并做比较。
RAID 1磁盘阵列一般支持“热交换”,就是说阵列中硬盘的移除或替换可以在系统运行时进行,无须中断退出系统
。RAID 1磁盘阵列是十分安全的,不过也是较贵一种RAID磁盘阵列解决方案,因为两块硬盘仅能提供一块硬盘的容量。RAID 1磁盘阵列主要用在
数据安全性很高
,而且要求能够
快速恢复
被破坏的数据的场合。
特点:
RAID1通过硬盘数据镜像实现
数据的冗余
,保护数据安全,在两块盘上产生互为备份的数据,当原始数据繁忙时,可直接从镜像备份中读取数据,因此RAID1可以提供读取性能。
RAID1是硬盘中单位成本最高的,但提供了很高的
数据安全性
和
可用性
,当一个硬盘失效时,系统可以
自动切换到镜像硬盘上读/写
,并且不需要重组失效的数据。
3.RAID3
RAID 3是把数据分成多个“块”,按照一定的容错算法,存放在N+1个硬盘上,实际数据占用的
有效空间为N个硬盘的空间总和
,而第N+1个硬盘上存储的数据是
校验容错信息
,当这N+1个硬盘中的其中一个硬盘出现故障时,从其它
N个硬盘中的数据也可以恢复原始数据
,这样,仅使用这N个硬盘也可以带伤继续工作(如采集和回放素材),当更换一个新硬盘后,系统可以重新恢复完整的校验容错信息。由于在一个硬盘阵列中,多于一个硬盘同时出现故障率的几率很小,所以一般情况下,使用RAID3,安全性是可以得到保障的。
特点
-
RAID 3使用简单的
奇偶校验
,并用
单块磁盘
存放
奇偶校验信息
。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。 -
RAID3会把
数据
写入操作分散到
多个硬盘
上进行,然而不管是向哪一个数据盘写入数据,都需要同时
重写校验盘中的相关信息
。因此,对于那些经常需要执行
大量写入操作
的应用来说,
校验盘的负载将会很大
,无法满足程序的运行速度,从而导致整个
RAID系统性能的下降
。 -
RAID3
更加适合
应用于那些
写入操作较少
,读取操作较多的应用环境,如数据库和web服务器等。
工作原理
XOR校验原理
A值 | B值 | XOR结果 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1,而且知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。
,GAME OVER…即使是只有一个硬盘坏了,做数据恢复也很慢,因为一半的硬盘要rebuild(大家该知道为什么吧)。
RAID 1+0
优点:
数据安全性好,只要不是1个RAID1上的2个硬盘同时坏,没有问题,还可以继续跑数据。数据恢复快。
缺点:
写性能稍微比RAID 0+1 差(读性能一样)
二.RAID实验
1.RAID0
下载命令 : yum -y install mdadm
准备两个块盘,分区,大小都是2G
制作RAID0
-C 表示新建
-v 显示创建过程中的详细信息
/dev/md0 创建的raid0的名称
-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略
-l 指定raid的等级
-n 表示使用几块盘创建
[root@localhost ~]# mdadm -C -v -a yes /dev/md0 -a yes -l0 -n2 /dev/sdb1 /dev/sdc1 #创建raid0的命令
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
查看RAID0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Jun 13 15:41:13 2023
Raid Level : raid0 #raid的等级
Array Size : 4188160 (3.99 GiB 4.29 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Jun 13 15:41:13 2023
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : be0f0c73:1af1b9f2:b1a60775:0809caf1
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
创建目录,创建文件系统,挂载
[root@localhost ~]# mkfs.xfs /dev/md0 创建文件系统
meta-data=/dev/md0 isize=512 agcount=8, agsize=130944 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1047040, 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 ~]# mkdir /raid0 #创建目录
[root@localhost ~]# mount /dev/md0 /raid0/ #挂载
[root@localhost ~]# df -h /raid0 #查看磁盘大小
Filesystem Size Used Avail Use% Mounted on
/dev/md0 4.0G 33M 4.0G 1% /raid0
2.RAID1
制作RAID1
-C 表示新建
-v 显示创建过程中的详细信息
/dev/md1 创建的raid1的名称
-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略
-l 指定raid的等级
-n 表示使用几块盘创建
[root@localhost ~]# mdadm -C -v -a yes /dev/md1 -l1 -n2 /dev/sdb1 /dev/sdc1 #创建raid1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 2094080K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
查看RAID1
[root@localhost ~]# mdadm -D /dev/md1 #查看raid1
/dev/md1:
Version : 1.2
Creation Time : Tue Jun 13 19:48:24 2023
Raid Level : raid1
Array Size : 2094080 (2045.00 MiB 2144.34 MB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Jun 13 19:48:32 2023
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : localhost.localdomain:1 (local to host localhost.localdomain)
UUID : fb4b37a3:6dc1ddfb:d3db739e:66e26e98
Events : 17
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
创建目录,创建文件系统,挂载
[root@localhost ~]# mkdir /raid1 #创建目录
[root@localhost ~]# mount /dev/md1 /raid1/ #挂载
[root@localhost ~]# df -h /raid1
Filesystem Size Used Avail Use% Mounted on
/dev/md1 2.0G 33M 2.0G 2% /raid1
3.RAID5
制作RAID5
-C 表示新建
-v 显示创建过程中的详细信息
/dev/md5 创建的raid5的名称
-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略
-l 指定raid的等级
-n 表示使用几块盘创建
-x:指定几块空闲硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用盘
[root@localhost ~]# mdadm -Cv /dev/md5 -a yes -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdb2 -x1 /dev/sdc2 #创建raid5,sdc2磁盘做备份
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 2094080K
mdadm: Fail create md5 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
查看RAID5
[root@localhost ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Wed Jun 14 19:14:39 2023
Raid Level : raid5
Array Size : 4188160 (3.99 GiB 4.29 GB)
Used Dev Size : 2094080 (2045.00 MiB 2144.34 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Jun 14 19:14:52 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 : d7220416:544cc27c:535e7eff:405a9c97
Events : 18
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
4 8 18 2 active sync /dev/sdb2
3 8 34 - spare /dev/sdc2 #磁盘用来做备份
创建目录,创建文件系统,挂载
[root@localhost ~]# mkdir /raid5
[root@localhost ~]# mkfs.xfs /dev/md5
[root@localhost ~]# mount /dev/md5 /raid5
[root@localhost ~]# df -h /raid5 #查看磁盘大小
Filesystem Size Used Avail Use% Mounted on
/dev/md5 4.0G 33M 4.0G 1% /raid5
模拟磁盘损坏
[root@localhost ~]# mdadm /dev/md5 -f /dev/sdb1 #模拟sdb1损坏
mdadm: set /dev/sdb1 faulty in /dev/md5
移除损坏的磁盘
mdadm /dev/md5 -r /dev/sdb1
添加新的磁盘
mdadm /dev/md5 -a /dev/sdd1
4.RAID10
制作RAID10
-C 表示新建
-v 显示创建过程中的详细信息
/dev/md10 创建的raid10的名称
-a yes --auto 表示如果有什么设备文件没有存在的话就自动创建,可省略
-l 指定raid的等级
-n 表示使用几块盘创建
先创建两个raid1,在利用两个raid1做成raid0
[root@localhost ~]# mdadm -C -v -a yes /dev/md1 -l1 -n2 /dev/sdb1 /dev/sdc1
[root@localhost ~]# mdadm -C -v -a yes /dev/md2 -l1 -n2 /dev/sdb2 /dev/sdc2
[root@localhost ~]# mdadm -C -v -a yes /dev/md10 -l0 -n2 /dev/md1 /dev/md2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
查看RAID10
[root@localhost ~]# mdadm -D /dev/md10
/dev/md10:
Version : 1.2
Creation Time : Wed Jun 14 20:23:39 2023
Raid Level : raid0
Array Size : 4184064 (3.99 GiB 4.28 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Jun 14 20:23:39 2023
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : none
Name : localhost.localdomain:10 (local to host localhost.localdomain)
UUID : 5e0ddfca:c6f56a7b:e6f7ae0e:8377cc3e
Events : 0
Number Major Minor RaidDevice State
0 9 1 0 active sync /dev/md1
1 9 2 1 active sync /dev/md2
创建目录,创建文件系统,挂载
[root@localhost ~]# mkfs.xfs /dev/md10
meta-data=/dev/md10 isize=512 agcount=8, agsize=130688 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1045504, 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 ~]# mkdir /raid10
[root@localhost ~]# mount /dev/md10 /raid10
[root@localhost ~]# df -h /raid10
Filesystem Size Used Avail Use% Mounted on
/dev/md10 4.0G 33M 4.0G 1% /raid10
三.总结
raid级别 | 读性能 | 写性能 | 利用率 | 是否有备份校验 | 允许损坏盘数 |
---|---|---|---|---|---|
raid0 | N | N | N | 无 | 0 |
raid1 | N/2 | N/2 | N/2 | 有 | 1 |
raid5 | N-1 | (N-1)/n | N-1 | 校验 | 1 |
raid10 | N/2 | N/2 | N/2 | 备份 | 有两个基组各坏一个 |
raid01 | N/2 | N/2 | N/2 | 备份 | 允许坏一组 |
四.删除RAID
1.取消挂载
[root@localhost ~]# umount /dev/md5
2.停止raid
[root@localhost ~]# mdadm -S /dev/md5
mdadm: stopped /dev/md5
3.清除所有磁盘
[root@localhost ~]# mdadm --zero-superblock /dev/sdb1
[root@localhost ~]# mdadm --zero-superblock /dev/sdb2
[root@localhost ~]# mdadm --zero-superblock /dev/sdc1
[root@localhost ~]# mdadm --zero-superblock /dev/sdc2
4.查看是否清除
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 49G 0 part
|-centos-root 253:0 0 44G 0 lvm /
`-centos-swap 253:1 0 5G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
|-sdb1 8:17 0 2G 0 part
`-sdb2 8:18 0 2G 0 part
sdc 8:32 0 20G 0 disk
|-sdc1 8:33 0 2G 0 part
`-sdc2 8:34 0 2G 0 part
sr0 11:0 1 4.3G 0 rom
5.删除配置文件(防止系统启动时启动raid)
参考:https://blog.csdn.net/m0_66900908/article/details/125623824
https://baike.baidu.com/item/RAID%E7%A3%81%E7%9B%98%E9%98%B5%E5%88%97/10588130?fr=aladdin