22.3.2. 使用 mdadm创建多路径设备
除了创建 RAID 阵列外,mdadm 还可用于利用支持单个 SCSI LUN(磁盘驱动器)的多个 I/O 路径的硬件。多路径存储旨在在硬件故障或单个路径饱和时继续数据可用性。由于此配置包含多个路径(每个都充当独立虚拟控制器)访问通用 SCSI LUN(磁盘驱动器),因此 Linux 内核会检测到每个共享驱动器一次"穿过"每个路径。换句话说,称为
/dev/sda
的 SCSI LUN(磁盘驱动器)也可以作为 /dev/sdb
、/dev/sdc
等访问,具体取决于具体配置。
为了提供一个在 I/O 路径失败或饱和时仍然可以访问的单个设备,mdadm 包括了其
级别
选项的额外参数。在出现 I/O 路径失败时,这个参数 多路径
会将 Linux 内核中的 md 层从一个途径重新路由到另一个路径。
要创建多路径设备,请编辑
/etc/mdadm.conf
文件,以定义 DEVICE
和 ARRAY
行的值来反映您的硬件配置。
备注
与前面的 RAID 示例不同(在
/etc/mdadm.conf
中指定的每个设备都必须代表不同的物理磁盘驱动器),此文件中的每个设备都引用相同的共享磁盘驱动器。
用于创建多路径设备的命令与创建 RAID 设备类似 ; 不同之处在于使用
multipath
参数替换 RAID 级别参数:
mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 Continue creating array? yes mdadm: array /dev/md0 started.
由于 mdadm 命令行的长度,它已被分成两行。
在这个示例中,硬件由一个 SCSI LUN 组成,作为四个独立的 SCSI 设备,每个设备都通过不同的途径访问相同的存储。创建多路径设备
/dev/md0
后,引用 /dev/md0 的所有 I/O 操作都定向到 /dev/sda1
、/dev/sdb
1、/dev/sdc1
或 /dev/sdd1
(取决于哪个路径当前处于活动状态且正常运行)。
使用 命令 md adm --detail
/dev/md0
来验证 /dev/md0 的配置实际上是一个多路径设备:
/dev/md0: Version : 00.90.00 Creation Time : Tue Mar 2 10:56:37 2004 Raid Level : multipath Array Size : 3905408 (3.72 GiB 3.100 GB) Raid Devices : 1 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Mar 2 10:56:37 2004 State : dirty, no-errors Active Devices : 1 Working Devices : 4 Failed Devices : 0 Spare Devices : 3 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 1 8 17 1 spare /dev/sdb1 2 8 33 2 spare /dev/sdc1 3 8 1 3 spare /dev/sda1 UUID : 4b564608:fa01c716:550bd8ff:735d92dc Events : 0.1
mdadm 的另一个功能是能够强制设备(使其成为 RAID 阵列的成员或多路径配置中的路径)从操作配置中删除。在以下示例中,
/dev/sda1
将标记为故障,然后删除,最后将其重新添加到配置中。对于多路径配置,这些操作不会影响当时发生的任何 I/O 活动:
# mdadm /dev/md0 -f /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0 # mdadm /dev/md0 -r /dev/sda1 mdadm: hot removed /dev/sda1 # mdadm /dev/md0 -a /dev/sda1 mdadm: hot added /dev/sda1 #