什么是快(R
)乐(A
)星(I
)球(D
)
磁盘阵列(Redundant Arrays of Independent Disks
,RAID
),有数块独立磁盘构成具有冗余能力的阵列
之意
RAID 和 LVM 的区别
RAID 分为两种
- 硬 RAID
- 需要 RAID 卡,插在主板的 PCIE 插槽上
- 控制器在 RAID 卡上,不消耗主机资源
- 分为带电池和不带电池
- 发生意外断电的情况下,带电池的 RAID 卡能继续给 RAID 卡供电一段时间,能有效的保护数据
- 软 RAID
- 通过操作系统工具实现,比如 Liunx的
mdadm
命令- 会消耗主机资源
VM是 Logical Volume Manager
(逻辑卷管理
)的简写,它是 Linux
环境下对磁盘分区
进行管理的一种机制,可以对文件系统做伸缩扩容
RAID 除了 RAID 0 以外,其他级别都是有数据冗余的功能,不同级别下的 RAID 可以坏掉几块硬盘也不会影响数据,不过在替换磁盘后,RAID 之间的数据同步过程中也会影响磁盘的速率
LVM 没有数据冗余的功能,并且 LVM 是可以简历在 RAID 0 之上的,是属于系统软件层面的管理工具,可以将一大块容量分割给不同的文件系统
RAID 等级
目前主流的 RAID 级别为 RAID 0,RAID 1,RAID 5,RAID 10(跟我读,
RAID 一零
,不是RAID 十
)
RAID 0
- 又称
条带集
- 将数据分割成不同条带(Stripe)分散写入到所有的硬盘中同时进行读写
- 最少需要两块磁盘
- 读写速率
100 * <磁盘数量>
- 没有数据冗余,一块盘都不能坏
- 一般只用在不需要数据安全的情况下,只是需要加快磁盘的速率
RAID 1
- 把一个磁盘的数据镜像到另一个闲置的磁盘上
- 最少两块磁盘,磁盘数量需要是偶数
- 最好是磁盘容量一致,否则是安装容量最小的来计算
- 使用率:
50%
- 读写速率一般,但是可以容错
RAID 5
- 又称
奇偶校验条带集
- 将当前磁盘的奇偶校验码存储在其他磁盘上
- 最少三块磁盘
- 利用率:
<磁盘数量> - 1
- 允许有一块硬盘坏了(多了,奇偶检验码就缺了)
- 读速率快,写速率一般,可以容错
RAID 10
跟我读,
RAID 一零
,不是RAID 十
- 其实就是将 RAID 1 和 RAID 0 结合起来使用
- 最少四块磁盘
- 利用率:
50%
- 允许坏一半的磁盘,前提是不在一个组
- 数据安全性更好,就是成本比较高,成本有限的情况下,可以选择 RAID 5
硬件 RAID 卡需要在安装系统之前就完成,大致的思路是进入 BIOS 或者主板提示的按键进入 RAID 的设置,按照 RAID 卡可用的等级来设置
为什么要安装系统之前?
因为 RAID 阵列在创建的时候会删除磁盘上的所有数据
Linux 软 RAID
软 RAID 一般不太会去使用,一般服务器都是用的硬 RAID
输入 mdadm
如果返回 -bash: mdadm: command not found
,表示没有安装
centos 只需要使用下面的方式安装就行
yum install -y mdadm
常用参数
短格式 | 长格式 | 作用 |
-C |
--create |
创建一个新阵列组 |
-l |
--level= |
指定 RAID 等级 (0、1、4、5、6、10) |
-x |
--spare-devices= |
指定热备盘数量 (当有磁盘损坏的情况下,热备盘会上位做数据同步,成为阵列的一部分) |
-r |
--remove |
移除阵列中故障的磁盘 |
-f |
--fail |
将列出的磁盘标记为故障 (模拟阵列损坏的时候可以用) |
-S |
--stop |
停用阵列,释放所有资源。 |
-n |
--raid-devices= |
指定阵列中活动设备的数量 |
-Q |
--query |
检查设备是否是md设备 |
-D |
--detail |
打印一个或多个md设备的详细信息。 |
创建 RAID 阵列
创建一个 RAID 5 阵列,并且设置一块热备盘
先准备四块空磁盘
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 95G 0 lvm / └─centos-swap 253:1 0 4G 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 1024M 0 rom
注意,-l
、-n
、-x
参数后面直接跟数字,参数和值之间不要有空格
mdadm -C /dev/md/data_md -l5 -n3 -x1 /dev/sd{b,c,d,e}
查看 md 设备
mdadm -Q /dev/md/data_md
可以看到,容量是 40G ,级别为 RAID 5,三个盘设备,有一个是闲置的(热备盘)
RAID 在创建的时候会有点慢,一开始可能看到的是两个闲置设备,只需要多等一会,再看看
/dev/md/data_md: 39.97GiB raid5 3 devices, 1 spare. Use mdadm --detail for more detail.
查看 md 设备详细信息
mdadm -D /dev/md/data_md
RAID 在建过程中,会有 Rebuild Status
信息
/dev/md/data_md: Version : 1.2 Creation Time : Sun Mar 13 15:47:35 2022 Raid Level : raid5 Array Size : 41908224 (39.97 GiB 42.91 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Sun Mar 13 15:47:56 2022 State : clean, degraded, recovering Active Devices : 2 Working Devices : 4 Failed Devices : 0 Spare Devices : 2 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 28% complete # 完成了 28% Name : localhost.localdomain:data_md (local to host localhost.localdomain) UUID : 9aec55e1:6cd2da33:209861f6:4ad7c4b6 Events : 5 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 4 8 48 2 spare rebuilding /dev/sdd 3 8 64 - spare /dev/sde
创建完成后,就不会再有 Rebuild Status
信息了
/dev/md/data_md: Version : 1.2 Creation Time : Sun Mar 13 15:47:35 2022 Raid Level : raid5 Array Size : 41908224 (39.97 GiB 42.91 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Sun Mar 13 15:48:50 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 : localhost.localdomain:data_md (local to host localhost.localdomain) UUID : 9aec55e1:6cd2da33:209861f6:4ad7c4b6 Events : 18 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 4 8 48 2 active sync /dev/sdd 3 8 64 - spare /dev/sde [root@localhost ~]# mdadm -Q /dev/md/data_md /dev/md/data_md: 39.97GiB raid5 3 devices, 1 spare. Use mdadm --detail for more detail.
使用 RAID 阵列
创建文件系统
mkfs.ext4 /dev/md/data_md
创建目录并挂载
mkdir /test_md mount /dev/md/data_md /test_md
写入一些文件,然后破坏整列后,看看热备效果以及数据是否完整
for i in $(seq 1 10);do mkdir /test_md/test_$i;echo "this is no.$i" > /test_md/test_$i/test.log;done for i in $(seq 1 10);do cat /test_md/test_$i/test.log;done
正常情况输出如下内容
this is no.1 this is no.2 this is no.3 this is no.4 this is no.5 this is no.6 this is no.7 this is no.8 this is no.9 this is no.10
模拟磁盘坏了
前面的详细信息里面咱看到
/dev/sde
是热备盘,咱不可能去破坏热备盘,那没意思
mdadm /dev/md/data_md -f /dev/sdc -r /dev/sdc
再次查看 md 详细信息
mdadm -D /dev/md/data_md
可以看到,/dev/sde 取代了 /dev/sdc
/dev/md/data_md: Version : 1.2 Creation Time : Sun Mar 13 15:47:35 2022 Raid Level : raid5 Array Size : 41908224 (39.97 GiB 42.91 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Sun Mar 13 16:02:47 2022 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Rebuild Status : 9% complete # 完成了 9% Name : localhost.localdomain:data_md (local to host localhost.localdomain) UUID : 9aec55e1:6cd2da33:209861f6:4ad7c4b6 Events : 22 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 3 8 64 1 spare rebuilding /dev/sde # /dev/sde 取代了 /dev/sdc 4 8 48 2 active sync /dev/sdd
热备恢复的过程中,也可以查看数据
for i in $(seq 1 10);do cat /test_md/test_$i/test.log;done
依旧返回之前一样的信息
this is no.1 this is no.2 this is no.3 this is no.4 this is no.5 this is no.6 this is no.7 this is no.8 this is no.9 this is no.10
再次查看 md 详细信息
mdadm -D /dev/md/data_md
耗费了大约四分钟的样子
/dev/md/data_md: Version : 1.2 Creation Time : Sun Mar 13 15:47:35 2022 Raid Level : raid5 Array Size : 41908224 (39.97 GiB 42.91 GB) Used Dev Size : 20954112 (19.98 GiB 21.46 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Sun Mar 13 16:06:22 2022 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : localhost.localdomain:data_md (local to host localhost.localdomain) UUID : 9aec55e1:6cd2da33:209861f6:4ad7c4b6 Events : 38 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 3 8 64 1 active sync /dev/sde 4 8 48 2 active sync /dev/sdd