第 51 章 集群中的 GFS2 文件系统
使用以下管理流程在红帽高可用性集群中配置 GFS2 文件系统。
51.1. 在集群中配置 GFS2 文件系统 复制链接链接已复制到粘贴板!
您可以按照以下流程设置包含 GFS2 文件系统的 Pacemaker 集群。在这个示例中,您在双节点集群的三个逻辑卷上创建三个 GFS2 文件系统。
先决条件
- 在集群节点上安装并启动集群软件,并创建一个基本的双节点集群。
- 为集群配置隔离。
有关创建 Pacemaker 集群并为集群配置隔离的详情,请参考 创建一个带有 Pacemaker 的红帽高可用性集群。
流程
在集群中的两个节点上,启用与您的系统架构对应的弹性存储存储库。例如,要为 x86_64 系统启用 Resilient Storage 存储库,您可以输入以下
subscription-manager
命令:subscription-manager repos --enable=rhel-8-for-x86_64-resilientstorage-rpms
# subscription-manager repos --enable=rhel-8-for-x86_64-resilientstorage-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,弹性存储存储库是高可用性存储库的超集。如果启用弹性存储存储库,则不需要启用高可用性存储库。
在集群的两个节点上安装
lvm2-lockd
、gfs2-utils
和dlm
软件包。要支持这些软件包,您必须订阅 AppStream 频道和 Resilient Storage 频道。yum install lvm2-lockd gfs2-utils dlm
# yum install lvm2-lockd gfs2-utils dlm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在群集的两个节点上,将
/etc/lvm/lvm.conf
文件中的use_lvmlockd
配置选项设为use_lvmlockd=1
。... use_lvmlockd = 1 ...
... use_lvmlockd = 1 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将全局 Pacemaker 参数
no-quorum-policy
设置为freeze
。注意默认情况下,将
no-quorum-policy
的值设置为stop
,表示一旦仲裁丢失,剩余分区上的所有资源都会立即停止。通常,这个默认行为是最安全、最优的选项,但与大多数资源不同,GFS2 要求使用 quorum 才可以正常工作。当使用 GFS2 挂载的应用程序和 GFS2 挂载都丢失时,就无法正确停止 GFS2 挂载。任何在没有 quorum 的情况下停止这些资源的尝试都会失败,并最终会在每次 quorum 都丢失时保护整个集群。要解决这个问题,请在使用 GFS2 时将
no-quorum-policy
设置为freeze
。这意味着,当 quorum 丢失时,剩余的分区将不会进行任何操作,直到 quorum 功能被恢复。pcs property set no-quorum-policy=freeze
[root@z1 ~]# pcs property set no-quorum-policy=freeze
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
dlm
资源。这是在集群中配置 GFS2 文件系统所需的依赖软件包。这个示例创建dlm
资源作为名为locking
的资源组的一部分。pcs resource create dlm --group locking ocf:pacemaker:controld op monitor interval=30s on-fail=fence
[root@z1 ~]# pcs resource create dlm --group locking ocf:pacemaker:controld op monitor interval=30s on-fail=fence
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 克隆
locking
资源组,以便资源组可以在集群的两个节点上都活跃。pcs resource clone locking interleave=true
[root@z1 ~]# pcs resource clone locking interleave=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
lvmlockd
资源设置为locking
资源组的一部分。pcs resource create lvmlockd --group locking ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence
[root@z1 ~]# pcs resource create lvmlockd --group locking ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查集群的状态,以确保在集群的两个节点上启动了
locking
资源组。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群的一个节点中,创建两个共享卷组。一个卷组将包含两个 GFS2 文件系统,另一个卷组将包含一个 GFS2 文件系统。
注意如果您的 LVM 卷组包含一个或多个位于远程块存储上的物理卷,如 iSCSI 目标,红帽建议您确保服务在 Pacemaker 启动前启动。有关为 Pacemaker 集群使用的远程物理卷配置启动顺序的详情,请参考 为不由 Pacemaker 管理的资源依赖项配置启动顺序。
以下命令在
/dev/vdb
上创建共享卷组shared_vg1
。vgcreate --shared shared_vg1 /dev/vdb
[root@z1 ~]# vgcreate --shared shared_vg1 /dev/vdb Physical volume "/dev/vdb" successfully created. Volume group "shared_vg1" successfully created VG shared_vg1 starting dlm lockspace Starting locking. Waiting until locks are ready...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下命令在
/dev/vdc
上创建共享卷组shared_vg2
。vgcreate --shared shared_vg2 /dev/vdc
[root@z1 ~]# vgcreate --shared shared_vg2 /dev/vdc Physical volume "/dev/vdc" successfully created. Volume group "shared_vg2" successfully created VG shared_vg2 starting dlm lockspace Starting locking. Waiting until locks are ready...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群的第二个节点上:
(RHEL 8.5 及更高版本)如果您通过在
lvm.conf
文件中设置use_devicesfile = 1
来启用设备文件的使用,请将共享设备添加到设备文件中。默认情况下,不启用设备文件的使用。lvmdevices --adddev /dev/vdb lvmdevices --adddev /dev/vdc
[root@z2 ~]# lvmdevices --adddev /dev/vdb [root@z2 ~]# lvmdevices --adddev /dev/vdc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个共享卷组启动锁管理器。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在集群的一个节点中,创建共享逻辑卷并使用 GFS2 文件系统格式化卷。每个挂载文件系统的节点都需要一个日志。确保为集群中的每个节点创建足够日志。锁表名称的格式为 ClusterName:FSName,其中 ClusterName 是创建 GFS2 文件系统的集群名称,FSName 是文件系统名称,它必须在集群中所有
lock_dlm
文件系统是唯一的。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个逻辑卷创建一个
LVM-activate
资源,以便在所有节点中自动激活该逻辑卷。为卷组
shared_vg1
中的逻辑卷shared_lv1
创建名为sharedlv1
的LVM-activate
资源。此命令还会创建包含该资源的资源组shared_vg1
。在这个示例中,资源组的名称与包含逻辑卷的共享卷组的名称相同。pcs resource create sharedlv1 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg1 activation_mode=shared vg_access_mode=lvmlockd
[root@z1 ~]# pcs resource create sharedlv1 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg1 activation_mode=shared vg_access_mode=lvmlockd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为卷组
shared_vg1
中的逻辑卷shared_lv2
创建名为sharedlv2
的LVM-activate
资源。此资源也是资源组shared_vg1
的一部分。pcs resource create sharedlv2 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv2 vgname=shared_vg1 activation_mode=shared vg_access_mode=lvmlockd
[root@z1 ~]# pcs resource create sharedlv2 --group shared_vg1 ocf:heartbeat:LVM-activate lvname=shared_lv2 vgname=shared_vg1 activation_mode=shared vg_access_mode=lvmlockd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为卷组
shared_vg2
中的逻辑卷shared_lv1
创建名为sharedlv3
的LVM-activate
资源。此命令还会创建包含该资源的资源组shared_vg2
。pcs resource create sharedlv3 --group shared_vg2 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg2 activation_mode=shared vg_access_mode=lvmlockd
[root@z1 ~]# pcs resource create sharedlv3 --group shared_vg2 ocf:heartbeat:LVM-activate lvname=shared_lv1 vgname=shared_vg2 activation_mode=shared vg_access_mode=lvmlockd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
克隆两个新资源组。
pcs resource clone shared_vg1 interleave=true pcs resource clone shared_vg2 interleave=true
[root@z1 ~]# pcs resource clone shared_vg1 interleave=true [root@z1 ~]# pcs resource clone shared_vg2 interleave=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置排序限制,以确保首先启动包含
dlm
和lvmlockd
资源的locking
资源组。pcs constraint order start locking-clone then shared_vg1-clone pcs constraint order start locking-clone then shared_vg2-clone
[root@z1 ~]# pcs constraint order start locking-clone then shared_vg1-clone Adding locking-clone shared_vg1-clone (kind: Mandatory) (Options: first-action=start then-action=start) [root@z1 ~]# pcs constraint order start locking-clone then shared_vg2-clone Adding locking-clone shared_vg2-clone (kind: Mandatory) (Options: first-action=start then-action=start)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置共存限制,以确保
vg1
和vg2
资源组在与locking
资源组相同的节点上启动。pcs constraint colocation add shared_vg1-clone with locking-clone pcs constraint colocation add shared_vg2-clone with locking-clone
[root@z1 ~]# pcs constraint colocation add shared_vg1-clone with locking-clone [root@z1 ~]# pcs constraint colocation add shared_vg2-clone with locking-clone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中的两个节点中,验证逻辑卷是否活跃。这可能会延迟几秒钟。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建文件系统资源在所有节点中自动挂载每个 GFS2 文件系统。
您不应该将文件系统添加到
/etc/fstab
文件,因为它将作为 Pacemaker 集群资源进行管理。可以通过options=options
将挂载选项指定为资源配置的一部分。运行pcs resource describe Filesystem
命令显示完整的配置选项。以下命令可创建文件系统资源。这些命令在包含该文件系统逻辑卷资源的资源组中添加每个资源。
pcs resource create sharedfs1 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv1" directory="/mnt/gfs1" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence pcs resource create sharedfs2 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv2" directory="/mnt/gfs2" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence pcs resource create sharedfs3 --group shared_vg2 ocf:heartbeat:Filesystem device="/dev/shared_vg2/shared_lv1" directory="/mnt/gfs3" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence
[root@z1 ~]# pcs resource create sharedfs1 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv1" directory="/mnt/gfs1" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence [root@z1 ~]# pcs resource create sharedfs2 --group shared_vg1 ocf:heartbeat:Filesystem device="/dev/shared_vg1/shared_lv2" directory="/mnt/gfs2" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence [root@z1 ~]# pcs resource create sharedfs3 --group shared_vg2 ocf:heartbeat:Filesystem device="/dev/shared_vg2/shared_lv1" directory="/mnt/gfs3" fstype="gfs2" options=noatime op monitor interval=10s on-fail=fence
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证 GFS2 文件系统是否挂载到集群的两个节点中。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查集群的状态。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow