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

摘要 #

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

21.1 概念概述

21.2 群集式 LVM 的配置

21.3 显式配置合格的 LVM2 设备

21.4 从镜像 LV 联机迁移到群集 MD

21.5 更多信息

21.1 概念概述 #

系统通过不同的工具来协调群集 LVM:

分布式锁管理器 (DLM)

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

逻辑卷管理器 (LVM2)

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

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

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

卷组和逻辑卷

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

21.2 群集式 LVM 的配置 #

确保满足以下要求:

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

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

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

21.2.1 创建群集资源 #

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

过程 21.1︰ 创建 DLM 资源 #

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

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

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

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

过程 21.2︰ 创建 LVMLOCKD 资源 #

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

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

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

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

    root # crm configure modgroup g-storage add lvmlockd
    COPY
  5. 查看所做的更改:

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

    root # crm status full
    COPY

过程 21.3︰ 创建共享 VG 和 LV #

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

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

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

    root # lvcreate -an -L10G -n lv1 vg1
    COPY

过程 21.4︰ 创建 LVM 激活资源 REPORT DOCUMENTATION BUG#

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

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

    root # crm configure ra info LVM-activate
    COPY

    此资源负责管理 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
      COPY
    • 对于 OCFS2,请使用共享激活模式,并将其添加到克隆的 g-storage 组:

      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 g-storage add vg1
      COPY
  4. 检查资源是否运行正常:

    root # crm status full
    COPY

21.2.2 方案:在 SAN 上将群集 LVM 与 iSCSI 搭配使用 REPORT DOCUMENTATION BUG#

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

图 21.1︰ 使用群集 LVM 设置共享磁盘 REPORT DOCUMENTATION BUG#

警告:数据丢失

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

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

过程 21.5︰ 配置 ISCSI 目标 (SAN) REPORT DOCUMENTATION BUG#

  1. 运行 YaST,然后单击 网络服务 ›  iSCSI LIO 目标 启动 iSCSI 服务器模块。

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

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

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

  5. 添加新的 iSCSI 目标:

    1. 切换到目标选项卡。

    2. 单击添加。

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

      iqn.DATE.DOMAIN
      COPY

      有关格式的更多信息,请参见 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 发起程序:

过程 21.6︰ 配置 ISCSI 发起程序 REPORT DOCUMENTATION BUG#

  1. 运行 YaST,然后单击 网络服务 ›  iSCSI 发起程序 。

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

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

  4. 添加 iSCSI 目标的 IP 地址和端口(请参见过程 21.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
    COPY
  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
    COPY

    使用 lsscsi 查看设备名:

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

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

过程 21.7︰ 创建共享卷组 REPORT DOCUMENTATION BUG#

  1. 打开已按过程 21.6 “配置 iSCSI 发起程序”运行 iSCSI 发起程序的一个节点上的 root 外壳。

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

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

    root # lvcreate --name lv1 --size 500M testvg
    COPY
  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
    COPY

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

21.2.3 方案:将群集 LVM 与 DRBD 搭配使用 REPORT DOCUMENTATION BUG#

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

过程 21.8︰ 创建使用 DRBD 的群集感知卷组 REPORT DOCUMENTATION BUG#

  1. 创建主/主 DRBD 资源:

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

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

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

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

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

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

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

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

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

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

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

21.3 显式配置合格的 LVM2 设备 REPORT DOCUMENTATION BUG#

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

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

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

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

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

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

    "r|^/dev/sdb1$|"
    COPY

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

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

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

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

21.4 从镜像 LV 联机迁移到群集 MD REPORT DOCUMENTATION BUG#

随着 SUSE Linux Enterprise High Availability Extension 15 的推出,群集 LVM 中的 cmirrord 已弃用。我们强烈建议将群集中的镜像逻辑卷迁移到群集 MD。群集 MD 表示“群集多设备”,是适用于群集的基于软件的 RAID 储存解决方案。

21.4.1 迁移之前的示例设置 REPORT DOCUMENTATION BUG#

假设您采用以下示例设置:

  • 您有一个双节点群集,它由节点 alice 和 bob 组成。

  • 名为 test-lv 的镜像逻辑卷是基于名为 cluster-vg2 的卷组创建的。

  • 卷组 cluster-vg2 由磁盘 /dev/vdb 和 /dev/vdc 组成。

root # lsblk
NAME                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda                                   253:0    0   40G  0 disk
├─vda1                                253:1    0    4G  0 part [SWAP]
└─vda2                                253:2    0   36G  0 part /
vdb                                   253:16   0   20G  0 disk
├─cluster--vg2-test--lv_mlog_mimage_0 254:0    0    4M  0 lvm
│ └─cluster--vg2-test--lv_mlog        254:2    0    4M  0 lvm
│   └─cluster--vg2-test--lv           254:5    0   12G  0 lvm
└─cluster--vg2-test--lv_mimage_0      254:3    0   12G  0 lvm
  └─cluster--vg2-test--lv             254:5    0   12G  0 lvm
vdc                                   253:32   0   20G  0 disk
├─cluster--vg2-test--lv_mlog_mimage_1 254:1    0    4M  0 lvm
│ └─cluster--vg2-test--lv_mlog        254:2    0    4M  0 lvm
│   └─cluster--vg2-test--lv           254:5    0   12G  0 lvm
└─cluster--vg2-test--lv_mimage_1      254:4    0   12G  0 lvm
  └─cluster--vg2-test--lv             254:5    0   12G  0 lvm

COPY

重要:避免迁移失败

在启动迁移过程之前,请检查逻辑卷和物理卷的容量与利用率。如果逻辑卷使用了 100% 的物理卷容量,则迁移可能会失败,并在目标卷上显示可用空间不足错误。如何防止这种迁移失败取决于镜像日志所用的选项:

  • 镜像日志本身是否已镜像(mirrored 选项),并且已在镜像根所在的同一个设备上进行分配?:  (例如,如果您根据 SUSE Documentation 中所述,为 SUSE Linux Enterprise High Availability Extension 11 或 12 上的 cmirrord 设置创建了逻辑卷,则可能符合这种情况)。 

    默认情况下,mdadm 会在设备开头与数组数据开头之间保留一定的空间量。在迁移期间,您可以检查未使用的填充空间,并使用 data-offset 选项减小此空间,如步骤 1.d 和下文所述。

    data-offset 必须在设备上保留足够的空间,使群集 MD 能够将其元数据写入设备。另一方面,偏移量必须足够小,使设备的剩余容量可以容纳所迁移卷的所有物理卷区域。由于卷可能已跨越整个设备但不包括镜像日志,因此,偏移量必须小于镜像日志的大小。

    我们建议将 data-offset 设置为 128 KB。如果未指定偏移量的值,其默认值为 1 KB(1024 字节)。

  • 镜像日志是已写入不同的设备(disk 选项)还是保留在内存中(core 选项)?:  在开始迁移之前,请增大物理卷的大小,或减小逻辑卷的大小(以便为物理卷释放更多的空间)。

21.4.2 将镜像 LV 迁移到群集 MD REPORT DOCUMENTATION BUG#

以下过程基于第 21.4.1 节 “迁移之前的示例设置”。请根据设置调整指令,并相应地替换 LV、VG、磁盘和群集 MD 设备的名称。

迁移过程完全不会造成停机。在迁移过程中仍可装入文件系统。

  1. 在节点 alice 上执行以下步骤:

    1. 将镜像逻辑卷 test-lv 转换为线性逻辑卷:

      root # lvconvert -m0 cluster-vg2/test-lv /dev/vdc
      COPY
    2. 从卷组 cluster-vg2 中去除物理卷 /dev/vdc

      root # vgreduce cluster-vg2 /dev/vdc
      COPY
    3. 从 LVM 中去除以下物理卷:

      root # pvremove /dev/vdc
      COPY

      如果现在就运行 lsblk,您将会看到:

      NAME                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      vda                     253:0    0   40G  0 disk
      ├─vda1                  253:1    0    4G  0 part [SWAP]
      └─vda2                  253:2    0   36G  0 part /
      vdb                     253:16   0   20G  0 disk
      └─cluster--vg2-test--lv 254:5    0   12G  0 lvm
      vdc                     253:32   0   20G  0 disk
      COPY
    4. 使用磁盘 /dev/vdc 创建群集 MD 设备 /dev/md0

      root # mdadm --create /dev/md0 --bitmap=clustered \
      --metadata=1.2 --raid-devices=1 --force --level=mirror \
      /dev/vdc --data-offset=128
      COPY

      有关为何要使用 data-offset 选项的细节,请参见重要:避免迁移失败

  2. 在节点 bob 上组装以下 MD 设备:

    root # mdadm --assemble md0 /dev/vdc
    COPY

    如果您的群集由两个以上的节点组成,请在该群集中的所有剩余节点上执行此步骤。

  3. 返回到节点 alice

    1. 将 MD 设备 /dev/md0 初始化为与 LVM 搭配使用的物理卷:

      root # pvcreate /dev/md0
      COPY
    2. 将 MD 设备 /dev/md0 添加到卷组 cluster-vg2

      root # vgextend cluster-vg2 /dev/md0
      COPY
    3. 将磁盘 /dev/vdb 中的数据移到 /dev/md0 设备:

      root # pvmove /dev/vdb /dev/md0
      COPY
    4. 从卷组 cluster-vg2 中去除物理卷 /dev/vdb

      root # vgreduce cluster-vg2 /dev/vdb
      COPY
    5. 从设备中去除标签,使 LVM 不再将该设备识别为物理卷:

      root # pvremove /dev/vdb
      COPY
    6. 将 /dev/vdb 添加到 MD 设备 /dev/md0

      root # mdadm --grow /dev/md0 --raid-devices=2 --add /dev/vdb
      COPY

21.4.3 迁移之后的示例设置 REPORT DOCUMENTATION BUG#

如果现在就运行 lsblk,您将会看到:

NAME                      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
vda                       253:0    0   40G  0 disk
├─vda1                    253:1    0    4G  0 part  [SWAP]
└─vda2                    253:2    0   36G  0 part  /
vdb                       253:16   0   20G  0 disk
└─md0                       9:0    0   20G  0 raid1
  └─cluster--vg2-test--lv 254:5    0   12G  0 lvm
vdc                       253:32   0   20G  0 disk
└─md0                       9:0    0   20G  0 raid1
  └─cluster--vg2-test--lv 254:5    0   12G  0 lvm

COPY

21.5 更多信息 REPORT DOCUMENTATION BUG#

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

可从 Support - ClusterLabs 处的 pacemaker 邮件列表中获取完整信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值