一、RAID
1. RAID概述
RAID(独立磁盘冗余阵列)是一种将多个硬盘驱动器组合成一个逻辑单元的数据存储虚拟化技术。RAID的主要目的是提高数据的可靠性、容错能力和性能。它通过将数据分散存储在多个硬盘上,来实现数据的冗余备份和性能提升;当其中一个磁盘损坏,不会影响整个阵列的使用。RAID有多种不同的级别,每种级别都有其特定的优势和用途:
- RAID 0(条带化):将数据分散存储在两个或多个硬盘上,提高读写速度,但没有冗余,任何一个硬盘损坏都会导致数据丢失。需要定期备份数据。
- 条带化存储技术就是将数据分成多个部分,并存储到不同磁盘上去;缺点是一个硬盘损坏,就会导致数据丢失;但读写性能好,可以并发读写数据。
- 适用场景:数据安全要求较低的场景。
- 硬盘数量:N块硬盘。但实际上,1块硬盘做RAID 0没有实际意义。
- 硬盘利用率:100%,即可用容量是N块硬盘的容量。
- RAID 1(镜像):数据在两个硬盘上完全复制,提供冗余,如果一个硬盘损坏,另一个硬盘上的数据仍然可用。写数据性能较低。可以使用不同容量大小的硬盘组RAID 1,可用容量取决于容量最小的硬盘。
- 镜像存储技术是指对存储数据实现副本复制,原数据和副本数据具有一致性,并支持存储系统对源数据和副本数据的独立访问。
- 适用场景:对数据冗余和高可用性要求较高的场景。
- 硬盘数量:2N块硬盘。
- 硬盘利用率:50%,即可用容量是N块硬盘的容量。
- RAID 5(奇偶校验的条带化):数据被分散存储在多个磁盘驱动器上,通过分布式奇偶校验实现数据的冗余备份。也就是说,奇偶校验位并不是单独存储在一个硬盘上的,而是存储在除了数据所在硬盘的其他硬盘上。允许损坏一块硬盘,系统通过重新计算奇偶校验位来恢复丢失的数据。
- 数据、校验位数据分散存入各个硬盘。当一个硬盘损坏时,系统可以根据同一条带的其他数据和对应的校验数据来重建损坏的数据。
- 适用场景:性能增强和数据冗余的场景。
- 硬盘数量:N块硬盘(N >= 3)。
- 硬盘利用率:(N-1)/N%,可用容量是N-1块硬盘的容量。
- RAID 6(双奇偶校验的条带化):与RAID 5类似,但有两个奇偶校验位,允许两个硬盘同时损坏。
- 适用场景:更高级别的数据冗余和性能增强的场景。
- 硬盘数量:N块硬盘(N >= 4)。
- 硬盘利用率:(N-2)/N%,可用容量是N-2块硬盘的容量。
- RAID 10(也叫做RAID 1+0):结合了RAID 1和RAID 0,实现了数据的条带化存储和镜像存储。先做数据的镜像存储(RAID 1),再做数据的条带化存储(RAID 0)。每个组里可用损坏一块硬盘。
- 比如有4块硬盘做RAID 10,是先将硬盘分为两个镜像组(RAID1),再对这两个镜像组做条带化(RAID 0)。
- 硬盘数量:2N块硬盘(2N >= 4)。
- 硬盘利用率:50%,即可用容量是N块硬盘的容量。
- RAID 01(也叫做RAID 0+1):与RAID 10类似,但是先做数据的条带化存储(RAID 0),再做数据的镜像存储(RAID 1)。只能有一个镜像组的硬盘损坏。
- 比如有4块硬盘做RAID 01,是先将两个硬盘做条带化(RAID 0),再对这两个硬盘做镜像(RAID 1)。
- 硬盘数量:2N块硬盘(2N >= 4)。
- 硬盘利用率:50%,即可用容量是N块硬盘的容量。
RAID级别 | 硬盘数量 | 硬盘利用率 | 冗余能力 | 读写性能 | 容错能力 |
---|---|---|---|---|---|
RAID 0 | N | 100% | 无 | 读写性能最好 | 不能损坏 |
RAID 1 | 2N | 50% | 有 | 读取性能好,写入性能低 | 只能损坏一块硬盘 |
RAID 5 | N(N>=3) | (N-1)/N% | 有 | 读取性能中,写入性能低 | 只能损坏一块硬盘 |
RAID 6 | N(N>=4) | (N-2)/N% | 有 | 读取性能中,写入性能低 | 只能损坏两块硬盘 |
RAID 10 | 2N(2N>=4) | 50% | 有 | 读取性能高,写入性能中 | 每个镜像组只能损坏一块硬盘 |
2. mdadm命令 – 管理RAID设备
mdadm命令来自英文词组multiple devices admin的缩写,功能是管理RAID设备,mdadm命令可以进行创建、调整、监控、删除等全套管理操作。
mdadm 选项 设备
常见的选项:
选项 | 功能 |
---|---|
-C | 创建RAID |
-D | 显示RAID信息 |
-l | 设置RAID级别 |
-n | 设置RAID的硬盘数量 |
-x | 设置RAID的热备份硬盘数量 |
3. 创建RAID的基本流程
- 准备硬盘(或分区、逻辑卷)。
- 创建RAID。
- 格式化RAID的文件系统。
- 挂载。
二、创建RAID
-
准备硬盘,这里使用6个逻辑卷。
vgcreate vg01 /dev/sdb1 Physical volume "/dev/sdb1" successfully created. Volume group "vg01" successfully created lvcreate -n lv01 -L 3G vg01 Logical volume "lv01" created. lvcreate -n lv02 -L 3G vg01 Logical volume "lv02" created. lvcreate -n lv03 -L 3G vg01 Logical volume "lv03" created. lvcreate -n lv04 -L 3G vg01 Logical volume "lv04" created. lvcreate -n lv05 -L 3G vg01 Logical volume "lv05" created. lvcreate -n lv06 -L 3G vg01 Logical volume "lv06" created.
-
使用4个逻辑卷组RAID 10,并设置两个逻辑卷做热备份。
mdadm -C -v /dev/md10 -l 10 -n 4 /dev/vg01/lv0{1..4} -x 2 /dev/vg01/lv0{5,6}
这个命令的意思是创建一个名为md10的 RAID 10 设备,使用 /dev/vg01/lv01 到 /dev/vg01/lv04 这四个逻辑卷作为数据磁盘,并且使用 /dev/vg01/lv05 和 /dev/vg01/lv06 作为热备磁盘。
-
格式化创建好的磁盘阵列md10的文件系统,并挂载。
mkfs.xfs /dev/md10 mkdir /mnt/md10 && mount /dev/md10 /mnt/md10
-
查看挂载情况。
df -h 文件系统 大小 已用 可用 已用% 挂载点 …… /dev/md10 6.0G 76M 6.0G 2% /mnt/md10