Mdadm介绍

MDADM是Linux系统下的一款软件RAID工具,用于创建、管理及监控软RAID阵列。通过它可以将多个物理硬盘设备虚拟化为一个逻辑的RAID设备,提供数据冗余、性能提升等功能。

mdadm所支持的raid类型

  • RAID 0 - 带区(Stripe)阵列:提供数据分块并行读写的能力,从而提升磁盘I/O性能。但不提供数据冗余,任何一个硬盘故障都会导致整个阵列数据丢失。
  • RAID 1 - 镜像(Mirror)阵列:通过将相同的数据复制到两个或多个硬盘上实现数据冗余,任何一块硬盘发生故障时,系统可以继续从镜像盘中读取数据,保持可用性。
  • RAID 5 - 带奇偶校验的分布式阵列:在一个硬盘数量大于等于3的情况下,使用分布式奇偶校验技术来达到数据冗余和一定程度的性能提升。单个硬盘故障时仍能恢复数据,但是重建过程会占用系统资源。
  • RAID 6 - 带双重奇偶校验的分布式阵列:类似于RAID 5,但在更大数量的硬盘组成的阵列中提供更高的冗余度,能够容忍同时出现两块硬盘故障的情况。
  • RAID 10RAID 0+1 - 分级阵列:结合了RAID 0和RAID 1的特点,通常由至少四个硬盘组成,先进行镜像操作再进行带区操作,既保证了高性能又提供了较好的数据安全冗余。
  • RAID 50RAID 60 - 分级分布式阵列:是RAID 5和RAID 6的扩展版本,将多个RAID 5或RAID 6阵列通过RAID 0进行条带化,进一步提高存储容量和性能,同时保持较高的容错能力。
  • 需要注意的是,不同级别的RAID在实际应用中会有不同的性能、空间利用率以及对硬件成本的要求。选择合适的RAID级别需要根据具体的应用场景和业务需求来决定。

1、mdadm安装

  1. 在大多数Linux发行版中,MDADM已经是默认安装的一部分,如果没有,请使用以下命令进行安装:
    apt-get install mdadm # 对于基于Debian和Ubuntu的系统
    yum install mdadm # 对于基于Red Hat和CentOS的系统

2、创建RAID阵列

创建RAID 0阵列

RAID 0至少需要2块硬盘才能创建提供数据条带化以提高读写性能,但不提供任何冗余或错误恢复能力。
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb
上述命令创建了一个名为/dev/md0的RAID 0阵列,由两个设备(/dev/sda1 和 /dev/sdb1)组成。

创建RAID 1阵列

RAID 1至少需要2块硬盘才能创建当其中任意一块硬盘发生故障时,另一块硬盘上的数据仍然是完整的,因此适用于对数据安全性要求较高的场景。
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1
此命令创建了一个镜像RAID 1阵列,同样由两个设备(/dev/sdc1 和 /dev/sdd1)组成。

创建RAID 5阵列

RAID 5至少需要3块硬盘才能创建,并且能够容忍单个硬盘故障而不丢失数据。
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc
此命令创建了一个名为/dev/md0RAID5阵列,由3个设备(/dev/sda、/dev/sdb、/dev/sdc)组成

给RAID 5添加热备盘

使用mdadm为RAID 5阵列添加热备盘(spare disk)的步骤如下。假设你有一个已存在的RAID 5阵列 /dev/md0,并且有一块新的硬盘/dev/sdc准备作为热备盘:
mdadm --manage /dev/md0 --add /dev/sdc

参数解释:

  • --manage /dev/md0 指定要管理的RAID阵列是 /dev/md0。
  • --add /dev/sdc 表示将新磁盘 /dev/sdc 添加到该RAID阵列作为热备盘。执行上述命令后,mdadm 会自动识别 /dev/sdc 是一个备用磁盘,并将其置于待命状态。当RAID 5阵列中的某个成员硬盘发生故障时,这个热备盘将会自动被启用以替换故障硬盘并开始重建数据。
创建RAID 6阵列

RAID 6至少需要4块硬盘才能创建在数据冗余和容错方面优于RAID 5因为它允许在两块硬盘同时故障的情况下仍能保持数据的完整性。
mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

创建RAID 10阵列

RAID 10至少需要2对相同的磁盘才能创建适用于既要求高数据安全性又追求高性能的应用场景。但请注意,RAID 10会消耗所有参与磁盘的存储空间,有效可用空间等于一半的物理磁盘总容量。
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
参数解释:

  • --create /dev/md0 表示创建一个新的RAID设备,名为 /dev/md0。
  • --level=0 指定RAID级别为0,即条带化(Striping)。
  • --raid-devices=2 表示将使用2块硬盘来创建这个RAID阵列。
  • /dev/sda /dev/sdb 是参与构建RAID阵列的具体硬盘设备名。

3、检查RAID状态

查看当前系统中的RAID阵列状态:
mdadm --detail /dev/md0
cat /proc/mdstat

4、添加或移除硬盘

添加硬盘至现有RAID阵列

mdadm --add /dev/md0 /dev/sde1
这条命令将/dev/sde1添加到RAID阵列/dev/md0中。

移除硬盘

mdadm --remove /dev/md0 /dev/sde1
该命令从RAID阵列/dev/md0中移除/dev/sde1设备。

5、RAID阵列维护

同步新添加的硬盘:

当新增硬盘至RAID阵列后,可能需要进行同步操作以保持数据一致。

mdadm --manage /dev/md0 --grow --raid-disks=3

监测RAID阵列状态:

可以设置邮件告警,当RAID阵列出现故障时发送通知。

mdadm --monitor --scan --mail root@example.com

备份与恢复RAID配置:

使用mdadm --examine获取阵列详细信息,然后用mdadm --create重建阵列,或者保存/加载阵列详细信息文件。