停止/启动(组装)和移除 RAID 数组
要停止现有数组并将其从系统中完全删除:
# mdadm --stop /dev/md0 # mdadm --remove /dev/md0
启动(组装)一个停止的数组:
# mdadm --asemble /dev/md0
在 RAID 设备上创建文件系统
要在 RAID 设备上创建 ext4 文件系统并挂载它:
# mkfs.ext4 /dev/md0 # mkdir /data01 # mount /dev/md0 /data01
确保在 /etc/fstab 中创建一个条目,以使其在重新启动后保持不变。
# vi /etc/fstab /dev/md0 /data01 ext4 defaults 0 0
创建 RAID 设备
要列出使用 mdadm 创建 RAID 设备的选项,请使用 -help 选项。
使用 mdadm 创建 RAID 时有几个选项。
我将列出几个重要的。
# mdadm --create --help -C | --create /dev/mdn -l | --level 0|1|4|5 -n | --raid-devices device [..] -x | --spare-devices device [..]
线性模式(Linear)
两个或者多个磁盘合并为一个物理设备。
磁盘彼此“添加”,因此线性写入 RAID 设备将首先填满磁盘 0,然后是磁盘 1,依此类推。
磁盘不必具有相同的大小。
该级别没有冗余。
单次读写不会提高读写性能。
但是,如果多个用户使用该设备,多个用户同时使用不同的磁盘,我们将看到性能提升。
要在运行 mdadm 的线性模式下创建两个磁盘,只需键入一个命令行:
# mdadm --create --verbose /dev/md0 --level=linear --raid-devices=2 /dev/sdb /dev/sdc mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
可以使用较短版本的选项运行相同的命令:
# mdadm --Cv /dev/md0 --l linear -n2 /dev/sdb /dev/sdc
RAID 0
也称为“条纹(stripe)”模式。
设备应具有相同的大小。
这个级别也没有冗余。
如果驱动器出现故障,则无法进行数据救援。
读写性能会提高,因为读写是在设备上并行完成的。
在 RAID 0 模式下创建两个磁盘:
# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
RAID 1
这个级别有冗余。
RAID-1 可用于具有零个或者多个备用磁盘的两个或者多个磁盘。
此模式在另一个磁盘上维护一个磁盘上的信息的精确镜像。
当然,磁盘必须具有相同的大小。
如果一个磁盘大于另一个, RAID 设备将是最小磁盘的大小。
如果多达 N-1 个磁盘被移除(或者崩溃),所有数据仍然完好无损。
如果有可用的备用磁盘,并且系统在崩溃中幸存下来,则在检测到驱动器故障后,将立即其中一个备用磁盘上开始重建镜像。
写入性能通常比在单个设备上更差,因为必须在 2 个或者更多设备上同时写入相同的数据。
我们可以使用两个磁盘和一个备用磁盘设置 RAID 1:
# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc --spare-devices=/dev/sdd
RAID 4
此 RAID 级别不经常使用。
它可以在三个或者更多磁盘上使用。
它不是完全镜像信息,而是将奇偶校验信息保留在一个驱动器上,并以类似 RAID-0 的方式将数据写入其他磁盘。
由于保留了一个磁盘用于奇偶校验信息,因此数组的大小将为 (N-1)*S,其中 S 是数组中最小驱动器的大小。
如果一个驱动器出现故障,奇偶校验信息可用于重建所有数据。
如果两个驱动器发生故障,则所有数据都将丢失。
要使用 4 个磁盘和 1 个备用磁盘设置 RAID 4:
# mdadm --create --verbose /dev/md0 --level=4 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde spare-devices=/dev/sdf
RAID 5
RAID-5 可用于三个或者更多磁盘,具有零个或者多个备用磁盘。
生成的 RAID-5 设备大小将为 (N-1)*S,就像 RAID-4 一样。
RAID-5 和-4 的最大区别在于,奇偶校验信息在参与的驱动器之间均匀分布,避免了 RAID-4 中的瓶颈问题。
如果其中一个磁盘出现故障,由于奇偶校验信息,所有数据仍然完好无损。
如果有备用磁盘,设备故障后将立即开始重建。
如果两个磁盘同时发生故障,则所有数据都将丢失。
RAID-5 可以承受一次磁盘故障,但不能承受两次或者更多次磁盘故障。
读取类似于 RAID-0 读取,写入通常很昂贵,因为必须写入奇偶校验,这成为开销。
要使用 mdadm 设置具有 3 个磁盘和 1 个备用磁盘的 RAID 5:
# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd --spare-devices=/dev/sde
管理数组中的设备
添加设备
将新设备添加到数组:
# mdadm --add /dev/md0 /dev/sdd
移除设备
我们可以使数组中的设备 (-f) 失败,然后将其删除 (-r):
# mdadm --manage /dev/md0 -f /dev/sdd # mdadm --manage /dev/mdadm -r /dev/sdd
mdadm
mdadm(多设备管理)是一个非常有用的运行 RAID 系统的工具。
它是一个使用 md 驱动程序创建、管理和监控 RAID 设备的工具。
它可以用作raidtools的替代品,或者作为补充。
我们可以使用整个磁盘(/dev/sdb、/dev/sdc)或者单个分区(/dev/sdb1. /dev/sdc1)作为数组的一个组件。
使用 mdadm 的好处是:
mdadm 可以诊断、监视和收集有关数组的详细信息。
mdadm 是一个单一的集中程序,而不是分散程序的集合,因此每个 RAID 管理命令都有一个通用的语法。
mdadm 可以在没有配置文件的情况下完成它的几乎所有功能,并且默认不使用一个。
mdadm 软件工具适用于所有 Linux 发行版,使用相同的语法。
验证配置
/proc/mdstat 是内核维护的文件,其中包含有关 RAID 数组和设备的实时信息。
# cat /proc/mdstat Personalities : [linear] md0 : active linear sdc[1] sdb[0] 4194288 blocks super 1.2 0k rounding unused devices: [none]
要获取有关特定数组的详细信息,请使用:
# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Nov 3 06:03:03 2014 Raid Level : linear Array Size : 4194288 (4.00 GiB 4.29 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Mon Nov 3 06:03:03 2014 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Rounding : 0K Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : a50ac9f2:62646d92:725255bd:7f9d30e3 Events : 0 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc
安装 mdadm
确保我们进行系统更新,然后将最新的 mdadm 程序安装到系统中:
# yum clean all # yum update # yum install mdadm -y
配置文件
/etc/mdadm.conf 文件用于识别哪些设备是 RAID 设备以及特定设备属于哪个数组。
这是在启动时自动构建 RAID 设备所必需的。
默认情况下,此文件不可用,需要手动创建。
完成创建 RAID 设备后,我们可以通过重定向命令的输出来简单地创建 mdadm.conf 文件:
# mdadm --detail -scan ARRAY /dev/md0 level=linear num-devices=2 metadata=1.2 name=localhost.localdomain:0 UUID=a50ac9f2:62646d92:725255bd:7f9d30e3 devices=/dev/sdb,/dev/sdc
如上面的输出所示,我有一个带有 2 个设备 /dev/sdb 和 /dev/sdc 的线性数组 md0。
# mdadm --verbose --detail -scan > /etc/mdadm.conf