磁盘阵列
磁盘阵列(Redundant Arrays of Independent Disks,RAID)是一种将多个独立的磁盘驱动器(如硬盘或光盘)组合成一个逻辑单元,以提供数据冗余、提高数据访问速度以及增强数据保护能力的技术。
概述
一、定义与组成
- 定义:磁盘阵列是由许多台磁盘机或光盘机按一定的规则(如分条、分块、交叉存取等)组成一个快速、超大容量的外存储器子系统。
- 组成:它主要包括多个磁盘驱动器、RAID控制器(也称为RAID卡)、缓存、CPU、IO处理器等组件。RAID控制器负责控制和管理磁盘阵列中的数据存取和冗余处理。
二、工作原理
- 磁盘阵列通过RAID技术将数据分割成多个部分(通常称为“块”或“条带”),并将这些部分分散存储在多个磁盘上。这种分散存储的方式可以提高数据传输的并行性,从而加快数据访问速度。
- 同时,RAID还利用奇偶校验信息或冗余数据来提供数据冗余。当某个磁盘发生故障时,可以利用其他磁盘上的数据和冗余信息来恢复故障磁盘上的数据,确保数据的完整性和可用性。
RAID级别
RAID(Redundant Arrays of Independent Disks,独立磁盘冗余阵列)是一种用于提高数据存储性能和可靠性的技术。RAID通过将多个物理驱动器组合成一个虚拟存储设备,不仅提供了更大的存储容量,还增强了数据的容错能力。以下是几种常见的RAID级别的详细介绍:
1. RAID 0
- 概述:RAID 0也被称为数据分条(Data Stripping)技术,它将数据分割成多个部分并并行地存储在多个磁盘上,以提高数据传输速度和吞吐量。
- 磁盘数:至少需要两块硬盘。
- 读写性能:读和写性能都非常高,因为数据可以并行地在多个磁盘上存取。
- 容错性:无冗余,因此任何一块硬盘的故障都会导致整个RAID 0阵列的数据丢失。
- 应用场景:适合对数据安全性要求不高,但要求极高速度和吞吐量的场景,如大规模并发读取应用。
2. RAID 1
- 概述:RAID 1也被称为磁盘镜像(Disk Mirroring),它将数据完全复制到另一个磁盘上,形成镜像关系。
- 磁盘数:至少需要两块硬盘。
- 读写性能:读性能较好,因为可以从两个磁盘中的任意一个读取数据;写性能较差,因为每次写操作都需要同时写入两个磁盘。
- 容错性:具有很高的数据冗余能力,任何一块磁盘的故障都不会影响数据的访问,因为还有另一块磁盘上的镜像数据。
- 应用场景:适合对数据安全性要求极高,但对性能要求不高的场景,如系统盘和监控服务器。
3. RAID 5
- 概述:RAID 5是RAID 0和RAID 1的折中方案,它结合了数据分条和分布式奇偶校验技术。
- 磁盘数:至少需要三块硬盘。
- 读写性能:读性能接近RAID 0,因为数据可以并行地从多个磁盘上读取;写性能处于平均水准,因为需要计算并写入奇偶校验信息。
- 容错性:允许一块磁盘损坏,利用剩下的数据和奇偶校验信息可以恢复被损坏的数据。
- 应用场景:适合对性能和安全都有一定要求的场景,如数据库、文件服务器、Web服务器等。
4. RAID 6
- 概述:RAID 6与RAID 5类似,但每个磁盘上存储了两个独立的奇偶校验块,以增加数据冗余和容错能力。
- 磁盘数:至少需要四块硬盘。
- 读写性能:读性能较好,但写性能较差,因为需要计算并写入两个奇偶校验块。
- 容错性:可以在阵列中同时容忍两块磁盘的故障,而不会丢失数据。
- 应用场景:适用于对数据安全性要求极高,且需要高容错能力的场景,如关键业务应用、数据中心等。
5. RAID 10(RAID 1+0)
- 概述:RAID 10是RAID 1和RAID 0的组合体,它首先创建多个RAID 1镜像对,然后将这些镜像对条带化成RAID 0阵列。
- 磁盘数:至少需要四块硬盘。
- 读写性能:读写性能都非常高,因为结合了RAID 0的速度和RAID 1的冗余性。
- 容错性:可以容忍一半数量的镜像对中的磁盘故障,只要每个镜像对中至少有一块磁盘正常工作。
- 应用场景:适用于对性能和数据安全性都有极高要求的场景,如高并发或高访问量的数据库主库、存储主库等。
6. RAID 50和RAID 60
- 概述:RAID 50和RAID 60是跨区RAID级别,它们分别由多个RAID 5或RAID 6阵列组成,并通过条带化技术进一步提高性能和容量。
- 磁盘数:需要多个硬盘(通常超过6个)。
- 读写性能:读写性能非常高,因为它们结合了多个RAID 5或RAID 6阵列的优势。
- 容错性:可以容忍多个磁盘的故障(具体取决于RAID 5或RAID 6阵列的数量和配置)。
- 应用场景:适用于需要极高容量、性能和容错能力的场景,如大型数据中心、云计算环境等。
总结:
RAID级别 | 硬盘数量 | 利用率 | 读写性能 | 容错性 | 常用作 | 成本评估 |
---|---|---|---|---|---|---|
RAID 0 | ≥2 | 100% | 高(并行读写) | 无冗余 | 数据盘(高性能需求) | 低(无冗余,硬件成本最低) |
RAID 1 | ≥2 | 50% | 读高(并行),写低(同步) | 完全冗余 | 系统盘、数据盘(高可用性需求) | 中(需要双倍硬盘,但提供高可用性) |
RAID 5 | ≥3 | (n-1)/n | 读高(并行),写中等(需计算奇偶校验) | 可容忍一块硬盘故障 | 数据盘(中等性能与冗余需求) | 中等偏低(较RAID 1成本低,但提供数据冗余) |
RAID 6 | ≥4 | (n-2)/n | 读高(并行),写较低(需计算两个奇偶校验) | 可容忍两块硬盘故障 | 数据盘(高冗余需求) | 中等偏高(比RAID 5成本高,因为需要更多的冗余信息) |
RAID 10 (RAID 1+0) | ≥4(偶数) | 50% | 高(结合RAID 0的速度和RAID 1的冗余) | 可容忍每组镜像中的一块硬盘故障 | 系统盘、数据盘(高性能与高可用性需求) | 高(需要双倍于RAID 0的硬盘数量,但提供高性能和高冗余) |
RAID 50 (RAID 5+0) | ≥6(偶数) | (n/2-1)/n | 非常高(结合多个RAID 5的性能) | 可容忍每个RAID 5组中的一块硬盘故障 | 数据盘(大容量、高性能与高冗余需求) | 中等偏高(需要多个RAID 5组,但比RAID 10成本低) |
RAID 60 (RAID 6+0) | ≥8(偶数) | (n/2-2)/n | 非常高(结合多个RAID 6的性能) | 可容忍每个RAID 6组中的两块硬盘故障 | 数据盘(极高冗余与性能需求) | 高(需要多个RAID 6组,提供极高的冗余,但成本也较高) |
RAID 0+1 | ≥4(通常是偶数对) | 25% | 高(RAID 0条带化),冗余(RAID 1镜像) | 可容忍整个RAID 0条带集的镜像中的一块硬盘故障 | 数据盘(极高性能与高冗余需求),但成本高昂 | 非常高(需要四倍于单个RAID 0条带集的硬盘数量,成本最高) |
补充:
- 常用作:这一列提供了RAID级别通常被用作的场景。然而,这些并不是绝对的,具体使用场景还需根据实际需求和环境来决定。
- 系统盘:通常要求高可用性和稳定性,因此RAID 1和RAID 10由于其冗余特性常被用作系统盘。
- 数据盘:对于需要高性能、大容量或高冗余的数据存储,RAID 0、RAID 5、RAID 6、RAID 50和RAID 60都是合适的选择。具体选择取决于对性能、冗余和成本的需求。
- 缓存盘:虽然RAID本身不是直接用作缓存的,但RAID阵列中的一部分硬盘或SSD可以配置为缓存层,以提高读写性能。这通常通过专门的缓存技术(如SSD缓存、混合RAID等)来实现。然而,这些不是标准的RAID级别,而是RAID配置的扩展或优化方式。
- RAID 0+1的利用率:由于RAID 0+1实际上是将RAID 0条带集镜像成RAID 1,因此其利用率通常远低于RAID 10(RAID 1+0)。在这个例子中,我假设了25%的利用率,但这取决于具体的实现方式。实际上,由于需要为每个RAID 0条带集创建镜像,利用率可能会更低。
- RAID 0+1的常用作:由于其高昂的成本和复杂的配置,RAID 0+1通常用于对数据安全性、性能和容量都有极高要求的场景。然而,由于其成本问题,这种配置并不常见。
- 实际部署:在实际部署中,更常见的是使用RAID 10(RAID 1+0),因为它提供了类似的高性能和冗余性,但成本更低,因为它不需要为整个RAID 0条带集创建镜像,而是将多个磁盘组合成镜像对,并将这些镜像对条带化成RAID 0。
关于成本评估:
- RAID 0:成本最低,因为没有冗余,所需硬盘数量最少。
- RAID 1:成本中等,需要双倍硬盘来提供完全的数据冗余,但提高了数据可用性。
- RAID 5 和 RAID 6:成本中等偏低到中等偏高,具体取决于所需的冗余级别。RAID 6由于需要存储两个奇偶校验信息,因此成本略高于RAID 5。
- RAID 10:成本较高,因为它结合了RAID 0的速度和RAID 1的冗余,需要双倍于RAID 0的硬盘数量。
- RAID 0+1:成本非常高,因为它需要四倍于单个RAID 0条带集的硬盘数量来提供冗余,这种配置在实际应用中较为罕见。
- RAID 50 和 RAID 60:成本中等偏高到高,因为它们结合了多个RAID 5或RAID 6组的性能,但提供了更高的冗余和更大的容量。
RAID配置实例过程
通用前置
1. 检查是否安装mdadm:
rpm -qa | grep "mdadm"
如果未安装,可以通过yum安装:
yum install -y mdadm
2. 检查有没有磁盘已经安装了raid:
mdadm -E /dev/sdx(n)
其中 /dev/sdx
是要检查的设备名称(例如 /dev/sda
、/dev/sdb
等)
3. 配置磁盘分区:
如果未进行分区,可以通过fdisk
配置磁盘分区:
fdisk /dev/sd(n)
此处注意,在fdisk中不要忘记令你的分区支持raid
Command (m for help): t
Partition number (1-4, default 4): 1
Hex code (type L to list all codes): fd
Changed type of partition 'Linux' to 'Linux raid autodetect'
RAID 0
创建RAID 0阵列
- 查找并确定硬盘分区:
- 使用
lsblk
或fdisk -l
命令查看所有可用的磁盘和分区。 - 确定要用于RAID 0的分区,例如
/dev/sda1
和/dev/sdb1
。
- 使用
- 创建RAID 0阵列:
- 使用
mdadm
命令创建RAID 0阵列。例如,要创建一个名为/dev/md0
的RAID 0阵列,包含两块硬盘分区/dev/sda1
和/dev/sdb1
,可以使用以下命令:mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1
- 这里,
--create
选项用于创建新的RAID设备,--level=0
指定RAID级别为0,--raid-devices=2
指定使用两块硬盘。
- 使用
验证RAID 0配置
- 使用
cat /proc/mdstat
命令查看RAID设备的状态,确认RAID 0阵列已成功创建并处于活动状态。
格式化和挂载RAID设备
- 格式化RAID设备:
- 使用
mkfs
命令对RAID设备进行格式化。例如,要创建一个ext4文件系统,可以使用:mkfs.xfs /dev/md0
- 使用
- 创建挂载点并挂载:
- 创建一个目录作为挂载点,例如
/mnt/raid0
。 - 使用
mount
命令将RAID设备挂载到该目录:mkdir /mnt/raid0 mount /dev/md0 /mnt/raid0
- 创建一个目录作为挂载点,例如
- 永久挂载:
- 要在系统重启后自动挂载RAID设备,需要在
/etc/fstab
文件中添加相应的条目。
- 要在系统重启后自动挂载RAID设备,需要在
- 可以用
blkid
命令查找/dev/md0
的UUID。 - 然后,编辑
/etc/fstab
文件,添加一行类似于以下内容的条目:UUID=<RAID设备的UUID> /mnt/raid0 xfs defaults 0 0
- 将
<RAID设备的UUID>
替换为实际的UUID值或绝对路径。
RAID 1
创建RAID 1阵列
- 使用
mdadm
命令创建RAID 1阵列。例如,要创建一个名为/dev/md0
的RAID 1阵列,包含两块硬盘分区/dev/sda1
和/dev/sdb1
,可以使用以下命令:mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
--create
选项用于创建新的RAID设备,--level=1
指定RAID级别为1(镜像),--raid-devices=2
指定使用两块硬盘。
验证RAID 1配置
- 使用
cat /proc/mdstat
命令查看RAID设备的状态,确认RAID 1阵列已成功创建并处于活动状态。在输出中,你应该能看到/dev/md0
的状态为“active raid1”,并列出了两块硬盘的分区。
格式化
使用mkfs
命令对RAID设备进行格式化
mkfs.xfs /dev/md0
挂载RAID设备
- 创建挂载点并挂载:
- 创建一个目录作为挂载点,例如
/mnt/raid1
。 - 使用
mount
命令将RAID设备挂载到该目录:mkdir /mnt/raid1 mount /dev/md0 /mnt/raid1
- 创建一个目录作为挂载点,例如
设置开机自动挂载(可选)
- 要在系统重启后自动挂载RAID设备,需在
/etc/fstab
文件中添加相应的条目。- 可以用
blkid
命令查找/dev/md0
的UUID。 - 然后,编辑
/etc/fstab
文件,添加一行类似于以下内容的条目:UUID=<RAID设备的UUID> /mnt/raid1 xfs defaults 0 0
- 将
<RAID设备的UUID>
替换为实际的UUID值或绝对路径。
- 可以用
热备盘
- 可以在创建RAID 1阵列时指定
--spare-devices
选项,或者在阵列创建后使用mdadm --add
命令添加热备盘。
RAID 5
配置RAID 5
- 查看硬盘信息:
- 使用
fdisk -l
或lsblk
命令查看系统中所有硬盘的详细信息,包括硬盘名称(如/dev/sda、/dev/sdb等)和分区情况。
- 使用
- 对硬盘进行分区:
- 使用
fdisk
或parted
等工具对每块硬盘进行分区。RAID 5使用硬盘的分区来创建,而不是直接使用整个硬盘。 - 分区时,确保每块硬盘的分区大小相同,并且分区类型适合RAID(通常使用Linux RAID autodetect类型)。
- 使用
- 创建RAID 5:
- 使用
mdadm
命令创建RAID 5。命令格式大致如下:
其中,mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
/dev/md0
是创建的RAID设备名称,--level=5
指定RAID级别为5,--raid-devices=3
指定用于RAID 5的硬盘分区数量,--spare-devices=1
指定热备盘数量。/dev/sdb1
、/dev/sdc1
、/dev/sdd1
是三个用于RAID 5的分区,/dev/sde1
是热备盘分区。 - 注意:在创建RAID时,请确保指定正确的分区名称,并且分区已正确格式化。
- 使用
- 查看RAID状态:
- 使用
cat /proc/mdstat
命令查看RAID的状态和进度。RAID 5在创建过程中会进行数据同步,可能需要一些时间。
- 使用
- 保存RAID配置:
- 为了在系统重启后能够自动识别和组装RAID设备,需要将RAID配置保存到配置文件中。使用以下命令将RAID配置信息保存到
/etc/mdadm/mdadm.conf
文件中:mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf
- 为了在系统重启后能够自动识别和组装RAID设备,需要将RAID配置保存到配置文件中。使用以下命令将RAID配置信息保存到
格式化文件系统
- 在RAID 5设备创建并同步完成后,使用文件系统工具
mkfs.
对RAID设备进行格式化。mkfs.xfs /dev/md0
挂载RAID设备
- 创建一个挂载点目录(如
/mnt/raid5
),并使用mount
命令将RAID设备挂载到该目录上:mkdir /mnt/raid5 mount /dev/md0 /mnt/raid5
- 为了在系统启动时自动挂载RAID设备,可以将挂载信息添加到
/etc/fstab
文件中。例如:/dev/md0 /mnt/raid5 xfs defaults 0 0
验证和测试
- 验证RAID设备是否已正确挂载并可用。可以使用
df -h
命令查看挂载点信息,或使用ls /mnt/raid5
命令查看挂载点下的文件和目录。 - 进行RAID 5的容错测试,模拟硬盘故障并观察RAID是否能够自动重建数据。可以使用
mdadm --fail /dev/md0 /dev/sdb1
命令模拟/dev/sdb1
分区故障,并观察RAID状态。
RAID 10
方法一、RAID12+RAID 01
在Linux系统中,创建RAID 10时,采用先创建两个RAID 1,然后再将这两个RAID 1组合成一个RAID 0的方法,是一种嵌套RAID配置方式。以下是这个过程的详细步骤:
创建两个RAID 1
- 查找并确定硬盘分区:
- 使用
lsblk
或fdisk -l
命令查看所有可用的磁盘和分区。 - 确定要用于创建RAID 1的硬盘,例如
/dev/sdb
和/dev/sdc
用于第一个RAID 1,/dev/sdd
和/dev/sde
用于第二个RAID 1。
- 使用
- 创建第一个RAID 1:
- 使用
mdadm
命令创建第一个RAID 1。例如,要创建一个名为/dev/md1
的RAID 1,包含/dev/sdb
和/dev/sdc
,可以使用以下命令:mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
- 使用
- 创建第二个RAID 1:
- 类似地,使用
mdadm
命令创建第二个RAID 1。例如,要创建一个名为/dev/md2
的RAID 1,包含/dev/sdd
和/dev/sde
,可以使用以下命令:mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdd /dev/sde
- 类似地,使用
- 验证RAID 1状态:
- 使用
cat /proc/mdstat
命令查看两个RAID 1的状态,确保它们都已成功创建并处于活动状态。
- 使用
创建RAID 0
- 使用两个RAID 1创建RAID 0:
- 使用
mdadm
命令将前面创建的两个RAID 1(/dev/md1
和/dev/md2
)组合成一个RAID 0。例如,要创建一个名为/dev/md0
的RAID 0,可以使用以下命令:mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/md1 /dev/md2
- 注意:这里使用
--level=0
来指定RAID级别为0,因为我们是将两个RAID 1作为RAID 0的底层设备。
- 使用
- 验证RAID 10状态:
- 实际上,由于RAID 0不提供数据冗余,所以这里的配置并不是传统意义上的RAID 10。但是,从逻辑结构上看,它实现了两个RAID 1的条带化组合,类似于RAID 10的嵌套方式。
- 要查看RAID 0的状态,可以使用
cat /proc/mdstat
命令。然而,由于这是RAID 0,它不会显示像RAID 10那样的镜像和条带化信息。
格式化RAID设备挂载RAID设备
mkfs.fxs /dev/md0
挂载RAID设备
- 创建挂载点:
在Linux中,你不能直接访问设备文件(如/dev/md0
)来读写文件,你需要先将其挂载到一个目录(称为挂载点)上。因此,你需要先创建一个目录作为挂载点。
使用mkdir
命令创建一个新的目录作为挂载点。例如,创建一个名为/mnt/raid0
的目录:mkdir /mnt/raid0
- 挂载RAID设备:
使用mount
命令将/dev/md0
挂载到/mnt/raid0
目录:mount /dev/md0 /mnt/raid0
- 验证挂载:
为了确认RAID设备已经成功挂载,你可以使用df -h
命令来查看磁盘使用情况,或者使用ls /mnt/raid0
来列出挂载点下的文件和目录(如果挂载点下还没有文件或目录,这个命令可能不会显示任何内容)。 - 永久挂载(可选):
- 要在系统重启后自动挂载RAID设备,需要在
/etc/fstab
文件中添加相应的条目。 - 首先,使用
blkid
命令查找/dev/md0
的UUID。 - 然后,编辑
/etc/fstab
文件,添加一行类似于以下内容的条目:UUID=<RAID设备的UUID> /mnt/raid10 xfs defaults 0 0
- 将
<RAID设备的UUID>
替换为实际的UUID值或者设备的绝对路径。
保存/etc/fstab
文件后,下次系统启动时/dev/md0
将自动挂载到/mnt/raid0
。
注意
- 上述步骤创建的是RAID 0+RAID 1的组合,而不是传统意义上的RAID 10。在真正的RAID 10配置中,数据会同时进行条带化和镜像,而这通常是通过硬件RAID控制器或高级软件RAID解决方案来实现的。
- 由于RAID 0不提供任何数据冗余,因此将RAID 1作为RAID 0的底层设备并不提供额外的数据保护。如果其中一个RAID 1出现故障,整个RAID 0阵列的数据将会丢失。
- 如果需要真正的RAID 10配置,请考虑使用支持RAID 10的硬件RAID控制器,或者在支持的软件RAID解决方案中直接使用RAID 10级别创建阵列。
- 上述步骤中的
/dev/md0
、/dev/md1
和/dev/md2
是示例设备
方法二、直接创建RAID 10阵列
创建RAID 10阵列:
- 使用
mdadm
命令创建RAID 10阵列。创建名为/dev/md0
的RAID 10阵列的示例命令:mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
- 或者,如果硬盘名称具有连续性,可以使用通配符来简化命令:
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[b-e]
- 这里,
--create
选项用于创建新的RAID设备,--level=10
指定RAID级别为10,--raid-devices=4
指定使用四块硬盘。
验证RAID 10配置
- 使用
cat /proc/mdstat
命令查看RAID设备的状态,确认RAID 10阵列已成功创建并处于活动状态。在输出中,你应该能看到/dev/md0
的状态为“active raid10”,并列出了四块硬盘。
格式化和挂载RAID设备
- 格式化RAID设备:
- 使用
mkfs
命令对RAID设备进行格式化。mkfs.xfs /dev/md0
- 使用
- 创建挂载点并挂载:
- 创建一个目录作为挂载点,例如
/mnt/raid10
。 - 使用
mount
命令将RAID设备挂载到该目录:mkdir /mnt/raid10 mount /dev/md0 /mnt/raid10
- 创建一个目录作为挂载点,例如
设置开机自动挂载
- 要在系统重启后自动挂载RAID设备,需要在
/etc/fstab
文件中添加相应的条目。- 首先,使用
blkid
命令查找/dev/md0
的UUID。 - 然后,编辑
/etc/fstab
文件,添加一行类似于以下内容的条目:UUID=<RAID设备的UUID> /mnt/raid10 xfs defaults 0 0
- 将
<RAID设备的UUID>
替换为实际的UUID值或者设备的绝对路径。
- 首先,使用
RAID的删除
删除raid里的所有硬盘:
mdadm --misc --zero-superblock /dev/sdc
mdadm --misc --zero-superblock /dev/sdd
mdadm --misc --zero-superblock /dev/sde
mdadm --misc --zero-superblock /dev/sdf
也可以写在一条命令:
mdadm --misc --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
删除配置文件:
rm -rf /etc/mdadm.conf
补充——命令
madam
mdadm是Linux系统中用于管理磁盘阵列(RAID)的工具,它提供了丰富的选项和命令来创建、管理、监控和维护RAID设备。
常用选项
通用选项:
--verbose
:增加输出信息的详细程度。--config
:指定mdadm的配置文件。
创建RAID阵列时的选项:--create
或-C
:创建新的RAID阵列。--level
:指定RAID级别,如0, 1, 5, 6, 10等。--raid-devices
或-n
:指定参与RAID的设备数量。--spare-devices
或-x
:指定备用设备的数量。--chunk
:设置条带大小(单位KB),默认为64KB。
管理RAID阵列时的选项:--manage
:对正在运行的RAID阵列进行管理操作。--add
:向RAID阵列中添加一个成员设备。--remove
:从RAID阵列中移除一个成员设备。--fail
:将RAID阵列中的一个成员设备标记为故障状态。--stop
:停止RAID阵列。--detail
或-D
:显示RAID阵列的详细信息。
其他选项:--zero-superblock
:清除磁盘上的RAID超级块信息,使其不再属于任何RAID阵列。--assemble
或-A
:组装已存在的RAID阵列。--grow
:调整RAID阵列的大小或设备数量。
常用命令及示例
创建RAID阵列:
mdadm --create /dev/md0 --level=5 --raid-devices=3 --chunk=128 /dev/sda1 /dev/sdb1 /dev/sdc1
该命令创建了一个RAID 5阵列,名为/dev/md0,包含三个成员盘(/dev/sda1, /dev/sdb1, /dev/sdc1),条带大小为128KB。
查看RAID阵列状态:
创建RAID的进度:
cat /proc/mdstat
或
mdadm --detail /dev/md0
这两个命令都可以查看/dev/md0的当前状态和详细信息。
添加热备盘到RAID阵列:
mdadm --add /dev/md0 /dev/sdd1
该命令将/dev/sdd1添加为/dev/md0的热备盘。
移除RAID阵列中的磁盘:
mdadm --fail /dev/md0 /dev/sda1
mdadm --remove /dev/md0 /dev/sda1
这两个命令首先将/dev/sda1标记为故障状态,然后将其从/dev/md0中移除。
停止并移除RAID阵列:
mdadm --stop /dev/md0
mdadm --remove /dev/md0
这两个命令停止并移除了/dev/md0。
清除磁盘上的超级块:
mdadm --zero-superblock /dev/sda1
该命令清除了/dev/sda1上的RAID超级块信息。
生成配置文件:
mdadm --detail --scan > /etc/mdadm.conf
或
/usr/share/mdadm/mkconf --generate > /etc/mdadm.conf
这两个命令都可以生成mdadm的配置文件,以便于在系统重启后自动恢复RAID阵列。
注意
- 在执行任何mdadm命令之前,请确保已经正确安装了mdadm软件包,并且你有足够的权限来执行这些命令(通常需要root权限)。
- 在创建或管理RAID阵列时,请仔细选择RAID级别、设备数量和条带大小等参数,以确保它们符合你的存储需求和性能要求。
- 在更改RAID配置之前,请务必备份重要数据,以防止数据丢失。
简略版
删除配置文件:
rm -rf /etc/mdadm.conf
生成配置:
mdadm -D -s >> /etc/mdadm.conf
停止设备:
mdadm -S /dev/md0
激活设备:
mdadm -A -s /dev/md0
强行启动:
mdadm -R /dev/md0
增加新的成员:
mdadm -G /dev/md0 -n5 -a /dev/sdg
命令解析:
mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1
-C
:表示新建;
-v
:显示创建过程中的详细信息。
/dev/md5
:创建 RAID5 的名称。
-a yes
:–auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
-l
:指定 RAID 的级别,l5
表示创建 RAID5。
-n
:指定使用几块硬盘创建 RAID,n3
表示使用 3 块硬盘创建 RAID。
/dev/sd[bcd]1
:指定使用这四块磁盘分区去创建 RAID。
-x
:指定使用几块硬盘做RAID的热备用盘,-x1表示保留1块空闲的硬盘作备用
/dev/sde1
:指定用作于备用的磁盘
查看创建RAID的进度:
cat /proc/mdstat
查看RAID磁盘详细信息:
mdadm -D /dev/md5
mdadm命令其它常用选项:
r:移除设备
-a:添加设备
-S:停止RAID
-A:启动RAID