适用于 SUSE Linux Enterprise High Availability Extension 15

19 群集式逻辑卷管理器(群集式 LVM)

摘要

当管理群集上的共享储存区时,所有节点必须收到有关对储存子系统所做更改的通知。Linux 卷管理器 2 (LVM2) 广泛用于管理本地储存,已扩展为支持对整个群集中的卷组进行透明管理。在多个主机之间共享的卷组可使用与本地储存相同的命令进行管理。

19.1 概念概述

群集 LVM 集成了不同工具:

分布式锁管理器(DLM)

通过群集范围的锁定协调对多个主机之间共享资源的访问。

逻辑卷管理器 (LVM2)

LVM2 提供磁盘空间的虚拟池,允许将一个逻辑卷灵活分布到多个磁盘。

群集式逻辑卷管理器(群集式 LVM2)

群集式 LVM2 一词表示群集环境中使用 LVM2。这需要进行一些配置调整,以保护共享储存上的 LVM2 元数据。自 SUSE Linux Enterprise 15 起,群集扩展使用 lvmlockd,取代了众所周知的 clvmd。有关 lvmlockd 的详细信息,请参见 lvmlockd 命令 的手册页(man 8 lvmlockd)。

卷组和逻辑卷

卷组 (VG) 和逻辑卷 (LV) 都属于 LVM2 的基本概念。卷组是多个物理磁盘的储存池。逻辑卷属于卷组,可视为一种弹性卷,您可以在其上创建文件系统。在群集环境中,存在共享 VG 的概念,共享 VG 由共享储存组成,可被多个主机同时使用。

19.2 群集式 LVM 的配置

确保满足以下要求:

  • 有共享储存设备可用,例如,该共享储存设备可通过光纤通道、FCoE、SCSI、iSCSI SAN 或 DRBD* 提供。

  • 确保已安装以下包:lvm2lvm2-lockd

  • 自 SUSE Linux Enterprise 15 起,我们使用 lvmlockd 作为 LVM2 群集扩展,而不再使用 clvmd。确保 clvmd 守护程序未运行,否则 lvmlockd 将无法启动。

19.2.1 创建群集资源

在一个节点上执行以下基本步骤,以在群集中配置共享 VG:

过程 19.1︰ 创建 DLM 资源
注意
注意:用于 LVM2 和 OCFS2 的 DLM 资源

LVM2 和 OCFS2 都需要在群集的所有节点上运行的 DLM 资源,因此该资源通常会配置为克隆资源。如果您的设置包含 OCFS2 和 LVM2,则只需为 OCFS2 和 LVM2 配置一个 DLM 资源就够了。

  1. root 用户身份启动外壳并登录。

  2. 检查群集资源的当前配置:

    root # crm configure show
  3. 如果已经配置 DLM 资源(及相应的基本组和基本克隆),则继续过程 19.2 “创建 lvmlockd 资源”

    否则,如过程 16.2 “配置 DLM 资源”中所述配置 DLM 资源和相应的基本组和基本克隆。

过程 19.2︰ 创建 lvmlockd 资源
  1. root 用户身份启动外壳并登录。

  2. 运行以下命令以查看此资源的使用情况:

    root # crm configure ra info lvmlockd
  3. 按如下所示配置 lvmlockd 资源:

    root # crm configure primitive lvmlockd ocf:heartbeat:lvmlockd \
      op start timeout="90" \
      op stop timeout="100" \
      op monitor interval="30" timeout="90"
  4. 为了确保在每个节点上都启动 lvmlockd 资源,请将原始资源添加到您在过程 19.1 “创建 DLM 资源”中创建的基本组:

    root # crm configure modgroup base-group add lvmlockd
  5. 查看所做的更改:

    root # crm configure show
  6. 检查资源是否运行正常:

    root # crm status full
过程 19.3︰ 创建共享 VG 和 LV
  1. root 用户身份启动外壳并登录。

  2. 假设您已有两个共享磁盘,并使用它们创建共享 VG:

    root # vgcreate --shared vg1 /dev/sda /dev/sdb
  3. 创建 LV,但一开始不激活它:

    root # lvcreate -an -L10G -n lv1 vg1
过程 19.4︰ 创建 LVM 激活资源
  1. root 用户身份启动外壳并登录。

  2. 运行以下命令以查看此资源的使用情况:

    root # crm configure ra info LVM-activate

    此资源负责管理 VG 的激活。在共享 VG 中,有两种不同的 LV 激活模式:排它模式和共享模式。排它模式是默认模式,通常应在 ext4 等本地文件系统使用 LV 时使用。共享模式仅应用于 OCFS2 等群集文件系统。

  3. 配置资源以管理 VG 的激活。根据您的方案,选择下列其中一个选项:

    • 对于本地文件系统使用,请使用排它激活模式:

      root # crm configure primitive vg1 ocf:heartbeat:LVM-activate \
        params vgname=vg1 vg_access_mode=lvmlockd \
        op start timeout=90s interval=0 \
        op stop timeout=90s interval=0 \
        op monitor interval=30s timeout=90s
    • 对于 OCFS2 请使用共享激活模式,并将它添加到克隆的基本组:

      root # crm configure primitive vg1 ocf:heartbeat:LVM-activate \
        params vgname=vg1 vg_access_mode=lvmlockd activation_mode=shared \
        op start timeout=90s interval=0 \
        op stop timeout=90s interval=0 \
        op monitor interval=30s timeout=90s
      root # crm configure modgroup base-group add vg1
  4. 检查资源是否运行正常:

    root # crm status full

19.2.2 方案:SAN 上 LVM2 与 iSCSI 搭配使用

以下方案使用两个 SAN 盒,将其 iSCSI 目标导出到多个客户端。大致想法如图 19.1 “使用 cLVM 设置共享磁盘”所示。

使用 cLVM 设置共享磁盘
图 19.1︰ 使用 cLVM 设置共享磁盘
警告
警告:数据丢失

以下过程将损坏磁盘上的所有数据!

首先只配置一个 SAN 盒。每个 SAN Box 都需要导出自己的 iSCSI 目标。按如下所示继续:

过程 19.5︰ 配置 iSCSI 目标 (SAN)
  1. 运行 YaST,然后单击 网络服务 ›  iSCSI LIO 目标 启动 iSCSI 服务器模块。

  2. 如果要在计算机引导时启动 iSCSI 目标,请选择引导时,否则请选择手动

  3. 如果正在运行防火墙,请启用打开防火墙中的端口

  4. 切换到全局选项卡。如果需要身份验证,请启用传入及/或传出身份验证。在本例中,我们选择无身份验证

  5. 添加新的 iSCSI 目标:

    1. 切换到目标选项卡。

    2. 单击添加

    3. 输入目标名称。名称需要采用如下所示的格式:

      iqn.DATE.DOMAIN

      有关格式的更多信息,请参见 3.2.6.3.1. Type "iqn." (iSCSI Qualified Name)(3.2.6.3.1.“iqn.”(iSCSI 限定名称)类型)一节,网址:http://www.ietf.org/rfc/rfc3720.txt

    4. 如果需要描述性更强的名称,可以进行更改,但要确保不同目标之间的标识符是唯一的。

    5. 单击添加

    6. 路径中输入设备名,并使用 Scsiid

    7. 单击下一步两次。

  6. 出现警告框时单击进行确认。

  7. 打开配置文件 /etc/iscsi/iscsid.conf,将参数 node.startup 更改为 automatic

现在按如下方式设置 iSCSI 发起程序:

过程 19.6︰ 配置 iSCSI 发起程序
  1. 运行 YaST,然后单击 网络服务 ›  iSCSI 发起程序

  2. 如果要在计算机引导时启动 iSCSI 发起程序,请选择引导时,否则请将其设置为手动

  3. 切换到发现选项卡并单击发现按钮。

  4. 添加 iSCSI 目标的 IP 地址和端口(请参见过程 19.5 “配置 iSCSI 目标 (SAN)”)。通常,可以保留端口并使用其默认值。

  5. 如果使用身份验证,请插入进来的和出去的用户名和口令,否则请激活无身份验证

  6. 选择下一步。找到的连接随即显示在列表中。

  7. 完成继续。

  8. 打开外壳,并以 root 用户身份登录。

  9. 测试 iSCSI 发起程序是否已成功启动:

    root # iscsiadm -m discovery -t st -p 192.168.3.100
    192.168.3.100:3260,1 iqn.2010-03.de.jupiter:san1
  10. 建立会话:

    root # iscsiadm -m node -l -p 192.168.3.100 -T iqn.2010-03.de.jupiter:san1
    Logging in to [iface: default, target: iqn.2010-03.de.jupiter:san1, portal: 192.168.3.100,3260]
    Login to [iface: default, target: iqn.2010-03.de.jupiter:san1, portal: 192.168.3.100,3260]: successful

    使用 lsscsi 查看设备名:

    ...
    [4:0:0:2]    disk    IET      ...     0     /dev/sdd
    [5:0:0:1]    disk    IET      ...     0     /dev/sde

    查找第三列中有 IET 的项。在本例中,设备为 /dev/sdd/dev/sde

过程 19.7︰ 创建共享卷组
  1. 打开已按过程 19.6 “配置 iSCSI 发起程序”运行 iSCSI 发起程序的一个节点上的 root 外壳。

  2. 在磁盘 /dev/sdd/dev/sde 上创建共享卷组:

    root # vgcreate --shared testvg /dev/sdd /dev/sde
  3. 根据需要创建逻辑卷:

    root # lvcreate --name lv1 --size 500M testvg
  4. 使用 vgdisplay 检查卷组:

      --- Volume group ---
          VG Name               testvg
          System ID
          Format                lvm2
          Metadata Areas        2
          Metadata Sequence No  1
          VG Access             read/write
          VG Status             resizable
          Clustered             yes
          Shared                no
          MAX LV                0
          Cur LV                0
          Open LV               0
          Max PV                0
          Cur PV                2
          Act PV                2
          VG Size               1016,00 MB
          PE Size               4,00 MB
          Total PE              254
          Alloc PE / Size       0 / 0
          Free  PE / Size       254 / 1016,00 MB
          VG UUID               UCyWw8-2jqV-enuT-KH4d-NXQI-JhH3-J24anD

创建卷并启动资源后,/dev/testvg 下会显示新的设备名称,例如 /dev/testvg/lv1。这表示 LV 已激活,可以使用。

19.2.3 场景:LVM2 与 DRBD 搭配使用

如果数据中心位于城市、国家/地区或大洲的不同区域,则可使用以下方案。

过程 19.8︰ 创建使用 DRBD 的群集感知卷组
  1. 创建主/主 DRBD 资源:

    1. 首先,按过程 18.1 “手动配置 DRBD”中所述将 DRBD 设备设置为主/从模式。确保两个节点上的磁盘状态均为 up-to-date。使用 drbdadm status 确认是否如此。

    2. 将以下选项添加到配置文件(通常类似 /etc/drbd.d/r0.res):

      resource r0 {
        startup {
          become-primary-on both;
        }
      
        net {
           allow-two-primaries;
        }
        ...
      }
    3. 将更改的配置文件复制到另一个节点,例如:

      root # scp /etc/drbd.d/r0.res venus:/etc/drbd.d/
    4. 两个节点上运行以下命令:

      root # drbdadm disconnect r0
      root # drbdadm connect r0
      root # drbdadm primary r0
    5. 检查节点的状态:

      root # drbdadm status r0
  2. 将 lvmlockd 资源作为克隆包含在 Pacemaker 配置中,并使它依赖于 DLM 克隆资源。有关详细指示信息,请参见过程 19.1 “创建 DLM 资源”。继续之前,请确认这些资源已在群集上成功启动。可以使用 crm status 或 Web 界面检查正在运行的服务。

  3. 使用命令 pvcreate 准备 LVM 的物理卷。例如,在设备 /dev/drbd_r0 上,命令应类似于:

    root # pvcreate /dev/drbd_r0
  4. 创建共享卷组:

    root # vgcreate --shared testvg /dev/drbd_r0
  5. 根据需要创建逻辑卷。您有时可能想要更改逻辑卷的大小。例如,使用以下命令创建 4 GB 的逻辑卷:

    root # lvcreate --name lv1 -L 4G testvg
  6. 现在 VG 内的逻辑卷可作为文件系统装入或原始用法提供。确保使用逻辑卷的服务具备适当的依赖项,以便在激活 VG 后对它们进行共置和排序。

完成这些配置步骤后,即可像在任何独立工作站中一样进行 LVM2 配置。

19.3 显式配置合格的 LVM2 设备

如果看似有若干设备共享同一个物理卷签名(多路径设备或 DRBD 就有可能发生这种情况),建议显式配置 LVM2 扫描 PV 的设备。

例如,如果命令 vgcreate 使用物理设备而非镜像块设备,DRBD 会产生混乱。进而导致 DRBD 出现节点分裂情况。

要停用 LVM2 的单个设备,请执行以下操作:

  1. 编辑文件 /etc/lvm/lvm.conf 并搜索以 filter 开头的行。

  2. 其中的模式作为正则表达式来处理。前面的a表示接受扫描的设备模式,前面的r表示拒绝遵守该设备模式的设备。

  3. 要删除名为 /dev/sdb1 的设备,请向过滤规则添加以下表达式:

    "r|^/dev/sdb1$|"

    完整的过滤行将显示如下:

    filter = [ "r|^/dev/sdb1$|", "r|/dev/.*/by-path/.*|", "r|/dev/.*/by-id/.*|", "a/.*/" ]

    接受 DRBD 和 MPIO 设备但拒绝其他所有设备的过滤行如下所示:

    filter = [ "a|/dev/drbd.*|", "a|/dev/.*/by-id/dm-uuid-mpath-.*|", "r/.*/" ]
  4. 编写配置文件并将它复制到所有群集节点。

19.4 更多信息

有关 lvmlockd 的详细信息,请参见 lvmlockd 命令 的手册页(man 8 lvmlockd)。

可从 http://www.clusterlabs.org/wiki/Help:Contents 处的 pacemaker 邮件列表中获取完整信息。

打印此页