适用于 SUSE Linux Enterprise High Availability Extension 12 SP5

22 群集多设备(群集 MD)

摘要

群集多设备(群集 MD)是一项基于软件的群集 RAID 储存解决方案。群集 MD 为群集提供了 RAID1 镜像的冗余。目前只支持 RAID1。本章介绍如何创建和使用群集 MD。

22.1 概念概述

群集 MD 提供在群集环境中使用 RAID1 的支持。每个节点都会访问群集 MD 使用的磁盘或设备。如果群集 MD 的一个设备发生故障,则在运行时可以由另一个设备代替它,并且系统会对其进行重新同步以提供相同数量的冗余。群集 MD 需要使用 Corosync 和分布式锁管理器 (DLM) 进行协调和讯息交换。

群集 MD 设备不会像其他常规 MD 设备一样在引导时自动启动。为确保 DLM 资源已启动,需要使用资源代理来启动群集设备。

22.2 创建群集 MD RAID 设备

要求
  • 一个安装了 Pacemaker 的正在运行的群集。

  • DLM 的资源代理(有关如何配置 DLM 的信息,请参见过程 17.1 “配置 DLM 的基础组”)。

  • 至少两个共享磁盘设备。您可以使用另外一个设备作为备用设备,该备用设备会在设备发生故障时自动进行故障转移。

  • 一个已安装的包 cluster-md-kmp-default

  1. 请确保 DLM 资源在群集的每个节点上都正常运行,并使用以下命令检查资源状态:

    root # crm_resource -r dlm -W
  2. 创建群集 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=none
      root # 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
  3. 获取 UUID 以及相关的 MD 路径:

    root # mdadm --detail --scan

    该 UUID 必须与超级块中储存的 UUID 匹配。有关 UUID 的细节,请参见 mdadm.conf 手册页。

  4. 打开 /etc/mdadm.conf 并添加 MD 设备名称以及与其关联的设备。使用上一步中获得的 UUID:

    DEVICE /dev/sda /dev/sdb
    ARRAY /dev/md0 UUID=1d70f103:49740ef1:af2afce5:fcf6a489
  5. 打开 Csync2 的配置文件 /etc/csync2/csync2.cfg,添加 /etc/mdadm.conf

    group ha_group
    {
       # ... list of files pruned ...
       include /etc/mdadm.conf
    }

22.3 配置资源代理

按如下所示配置 CRM 资源:

  1. 创建 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
  2. 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
  3. 使用 show 查看更改。

  4. 如果所有配置正确无误,请使用 commit 提交您的更改。

22.4 添加设备

要将某个设备添加到现有的活动群集 MD 设备,请先使用命令 cat /proc/mdstat 确保该设备在每个节点上均可见。如果设备不可见,则命令将会失败。

在一个群集节点上使用以下命令:

root # mdadm --manage /dev/md0 --add /dev/sdc

所添加的新设备的行为取决于群集 MD 设备的状态:

  • 如果只有一个镜像设备处于活动状态,则新设备将会成为镜像设备中的第二个设备,并且会启动恢复进程。

  • 如果群集 MD 设备的两个设备都处于活动状态,则新添加的设备将会成为备用设备。

22.5 重新添加暂时发生故障的设备

故障常常是短暂发生的,并且仅限于一个节点。如果在 I/O 操作期间有任何节点发生了故障,则会针对整个群集将设备标记为失败。

例如,其中一个节点发生电缆故障,可能就会导致发生这种情况。更正此问题后,您可以重新添加设备。与添加新设备会同步整个设备不同,这样只会同步过时的部件。

要重新添加设备,请在一个群集节点上运行以下命令:

root # mdadm --manage /dev/md0 --re-add /dev/sdb

22.6 去除设备

在运行时去除设备以进行替换之前,请执行以下操作:

  1. 检查 /proc/mdstat 以确保设备已失败。查看设备前面有无 (F)

  2. 在一个群集节点上运行以下命令,以使设备失败:

    root # mdadm --manage /dev/md0 --fail /dev/sda
  3. 在一个群集节点上使用以下命令去除失败的设备:

    root # mdadm --manage /dev/md0 --remove /dev/sda
打印此页