群集 MD 提供在群集环境中使用 RAID1 的支持。每个节点都会访问群集 MD 使用的磁盘或设备。如果群集 MD 的一个设备发生故障,则在运行时可以由另一个设备代替它,并且系统会对其进行重新同步以提供相同数量的冗余。群集 MD 需要使用 Corosync 和分布式锁管理器 (DLM) 进行协调和讯息交换。
群集 MD 设备不会像其他常规 MD 设备一样在引导时自动启动。为确保 DLM 资源已启动,需要使用资源代理来启动群集设备。
一个安装了 Pacemaker 的正在运行的群集。
DLM 的资源代理(有关如何配置 DLM 的信息,请参见过程 17.1 “配置 DLM 的基础组”)。
至少两个共享磁盘设备。您可以使用另外一个设备作为备用设备,该备用设备会在设备发生故障时自动进行故障转移。
一个已安装的包 cluster-md-kmp-default。
请确保 DLM 资源在群集的每个节点上都正常运行,并使用以下命令检查资源状态:
root #
crm_resource
-r dlm -W
创建群集 MD 设备:
如果您没有现有的常规 RAID 设备,请使用以下命令在运行 DLM 资源的节点上创建群集 MD 设备:
root #
mdadm
--create /dev/md0 --bitmap=clustered \ --metadata=1.2 --raid-devices=2 --level=mirror /dev/sda /dev/sdb
由于群集 MD 只能与 1.2 版的元数据配合使用,因此建议使用 --metadata
选项来指定版本。有关其他有用选项,请参见 mdadm
手册页。在 /proc/mdstat
中监控重新同步进度。
如果您有现有的常规 RAID,请先清除现有位图,然后再创建群集位图:
root #
mdadm
--grow /dev/mdX --bitmap=noneroot #
mdadm
--grow /dev/mdX --bitmap=clustered
(可选)要创建带有用于自动故障转移的备用设备的群集 MD 设备,请在一个群集节点上运行以下命令:
root #
mdadm
--create /dev/md0 --bitmap=clustered --raid-devices=2 \ --level=mirror --spare-devices=1 /dev/sda /dev/sdb /dev/sdc --metadata=1.2
获取 UUID 以及相关的 MD 路径:
root #
mdadm
--detail --scan
该 UUID 必须与超级块中储存的 UUID 匹配。有关 UUID 的细节,请参见 mdadm.conf
手册页。
打开 /etc/mdadm.conf
并添加 MD 设备名称以及与其关联的设备。使用上一步中获得的 UUID:
DEVICE /dev/sda /dev/sdb ARRAY /dev/md0 UUID=1d70f103:49740ef1:af2afce5:fcf6a489
打开 Csync2 的配置文件 /etc/csync2/csync2.cfg
,添加 /etc/mdadm.conf
:
group ha_group { # ... list of files pruned ... include /etc/mdadm.conf }
按如下所示配置 CRM 资源:
创建 Raid1
原始资源:
crm(live)configure#
primitive
raider Raid1 \ params raidconf="/etc/mdadm.conf" raiddev=/dev/md0 \ force_clones=true \ op monitor timeout=20s interval=10 \ op start timeout=20s interval=0 \ op stop timeout=20s interval=0
将 raider
资源添加到您已为 DLM 创建的储存基础组:
crm(live)configure#
modgroup
g-storage add raider
add
子命令默认会追加新的组成员。
如果尚未克隆 g-storage
组,请执行该操作,以使其在所有节点上运行:
crm(live)configure#
clone
cl-storage g-storage \ meta interleave=true target-role=Started
使用 show
查看更改。
如果所有配置正确无误,请使用 commit
提交您的更改。
要将某个设备添加到现有的活动群集 MD 设备,请先使用命令 cat /proc/mdstat
确保该设备在每个节点上均“可见”。如果设备不可见,则命令将会失败。
在一个群集节点上使用以下命令:
root #
mdadm
--manage /dev/md0 --add /dev/sdc
所添加的新设备的行为取决于群集 MD 设备的状态:
如果只有一个镜像设备处于活动状态,则新设备将会成为镜像设备中的第二个设备,并且会启动恢复进程。
如果群集 MD 设备的两个设备都处于活动状态,则新添加的设备将会成为备用设备。
故障常常是短暂发生的,并且仅限于一个节点。如果在 I/O 操作期间有任何节点发生了故障,则会针对整个群集将设备标记为失败。
例如,其中一个节点发生电缆故障,可能就会导致发生这种情况。更正此问题后,您可以重新添加设备。与添加新设备会同步整个设备不同,这样只会同步过时的部件。
要重新添加设备,请在一个群集节点上运行以下命令:
root #
mdadm
--manage /dev/md0 --re-add /dev/sdb
在运行时去除设备以进行替换之前,请执行以下操作:
检查 /proc/mdstat
以确保设备已失败。查看设备前面有无 (F)
。
在一个群集节点上运行以下命令,以使设备失败:
root #
mdadm
--manage /dev/md0 --fail /dev/sda
在一个群集节点上使用以下命令去除失败的设备:
root #
mdadm
--manage /dev/md0 --remove /dev/sda