22 GFS2 #
全局文件系统 2 或称 GFS2 是适用于 Linux 计算机群集的共享磁盘文件系统。GFS2 允许所有节点直接同时访问同一个共享块存储。GFS2 不提供断开操作模式,也没有客户端角色或服务器角色。GFS2 群集中的所有节点以对等体的形式运行。GFS2 最多支持 32 个群集节点。在群集中使用 GFS2 需要通过硬件来访问共享存储设备,并需要通过一个锁管理器来控制对存储空间的访问。
如果性能是其中一个主要要求,SUSE 建议为群集环境使用 OCFS2 而不要使用 GFS2。我们的测试表明,与采用此设置的 GFS2 相比,OCFS2 的表现更好。
SUSE 只支持只读模式的 GFS2。不支持写入操作。
22.1 GFS2 软件包和管理实用程序 #
要使用 GFS2,请确保群集的每个节点上均已安装适用于您的内核的 gfs2-utils 和匹配的 gfs2-kmp-* 软件包。
gfs2-utils 软件包提供以下实用程序,用于管理 GFS2 卷。有关语法信息,请参见其手册页。
- fsck.gfs2
检查文件系统的错误并进行选择性的修改。
- gfs2_jadd
将其他日记添加到 GFS2 文件系统。
- gfs2_grow
产生 GFS2 文件系统。
- mkfs.gfs2
在设备上创建 GFS2 文件系统,这通常是一个共享设备或分区。
- tunegfs2
用于查看和调整 GFS2 文件系统参数,例如
UUID
、label
、lockproto
和locktable
。
22.2 配置 GFS2 服务和 STONITH 资源 #
在创建 GFS2 卷之前,必须先配置 DLM 和 STONITH 资源。
您需要配置屏蔽设备。如果未实施 STONITH 机制(如 external/sbd
),配置将会失败。
启动外壳,并以
root
用户或同等身份登录。如过程 13.3 “初始化 SBD 设备”中所述,创建 SBD 分区。
运行
crm configure
.将
external/sbd
配置为屏蔽设备:crm(live)configure#
primitive sbd_stonith stonith:external/sbd \ params pcmk_delay_max=30 meta target-role="Started"
使用
show
查看所做的更改。如果所有设置均正确无误,请使用
commit
提交更改,然后使用quit
退出 crm 实时配置。
有关为 DLM 配置资源的细节,请参见第 20.2 节 “配置 DLM 群集资源”。
22.3 创建 GFS2 卷 #
按第 22.2 节 “配置 GFS2 服务和 STONITH 资源”中所述将 DLM 配置为群集资源后,将系统配置为使用 GFS2 并创建 GFS2 卷。
我们建议您通常应将应用程序文件和数据文件存储在不同的 GFS2 卷上。如果应用程序卷和数据卷具有不同的装入要求,则必须将它们存储在不同的卷上。
开始之前要准备计划用于 GFS2 卷的块设备。将这些设备留作可用空间。
然后按过程 22.2 “创建并格式化 GFS2 卷”中所述,使用 mkfs.gfs2
创建并格式化 GFS2 卷。下面列出了此命令最重要的参数。有关详细信息和命令语法,请参见 mkfs.gfs2
手册页。
- 锁定协议名称 (
-p
) 要使用的锁定协议的名称。可接受的锁定协议包括 lock_dlm(用于共享存储);如果您将 GFS2 用作本地文件系统(只有 1 个节点),则可以指定 lock_nolock 协议。如果未指定此选项,将采用 lock_dlm 协议。
- 锁定表名称 (
-t
) 与您正在使用的锁定模块对应的锁定表字段。其为 clustername:fsname。clustername 值必须与群集配置文件
/etc/corosync/corosync.conf
中的值匹配。只允许此群集的成员使用此文件系统。fsname 值是唯一的文件系统名称(1 到 16 个字符),用于将此 GFS2 文件系统与创建的其他文件系统区分开。- 日志数量 (
-j
) 要为 gfs2_mkfs 创建的日志数量。要挂载该文件系统的每台计算机至少需要一个日志。如果未指定此选项,将创建一个日志。
只在群集节点之一上执行以下步骤。
打开终端窗口并以
root
用户身份登录。使用命令
crm status
检查群集是否已上线。使用
mkfs.gfs2
实用程序创建并格式化卷。有关此命令的语法的信息,请参见mkfs.gfs2
手册页。例如,要创建最多支持 32 个群集节点的新 GFS2 文件系统,请使用以下命令:
#
mkfs.gfs2 -t hacluster:mygfs2 -p lock_dlm -j 32 /dev/disk/by-id/DEVICE_ID
hacluster
名称与文件/etc/corosync/corosync.conf
中的cluster_name
项相关(这是默认设置)。始终使用稳定的设备名称(例如
/dev/disk/by-id/scsi-ST2000DM001-0123456_Wabcdefg
)。
22.4 挂载 GFS2 卷 #
可以手动挂载 GFS2 卷,也可以按过程 22.4 “使用群集管理器挂载 GFS2 卷”中所述使用群集管理器挂载。
打开终端窗口并以
root
用户身份登录。使用命令
crm status
检查群集是否已上线。使用
mount
命令从命令行挂载卷。
如果您为了进行测试手动挂载了 GFS2 文件系统,在开始将其作为群集资源使用前,请务必将其卸载以恢复原状。
要使用高可用性软件挂载 GFS2 卷,请在群集中配置 OCF 文件系统资源。以下过程使用 crm
外壳配置群集资源。或者,您可以使用 Hawk2 配置资源。
启动外壳,并以
root
用户或同等身份登录。运行
crm configure
.配置 Pacemaker 以在群集中的每个节点上挂载 GFS2 文件系统:
crm(live)configure#
primitive gfs2-1 ocf:heartbeat:Filesystem \ params device="/dev/disk/by-id/DEVICE_ID" directory="/mnt/shared" fstype="gfs2" \ op monitor interval="20" timeout="40" \ op start timeout="60" op stop timeout="60" \ meta target-role="Stopped"
将
gfs2-1
原始资源添加到您在过程 20.1 “配置 DLM 的基础组”中创建的g‑storage
组。crm(live)configure#
modgroup g-storage add gfs2-1
受限于基础组的内部共置和顺序约束,
gfs2-1
资源仅可在已有dlm
资源在运行的节点上启动。使用
show
查看所做的更改。如果所有设置均正确无误,请使用
commit
提交更改,然后使用quit
退出 crm 实时配置。