21 GFS2 #
全局文件系统 2 或称 GFS2 是适用于 Linux 计算机群集的共享磁盘文件系统。GFS2 允许所有节点直接同时访问同一个共享块存储。GFS2 不提供断开操作模式,也没有客户端角色或服务器角色。GFS2 群集中的所有节点以对等体的形式运行。GFS2 最多支持 32 个群集节点。在群集中使用 GFS2 需要通过硬件来访问共享存储,并需要通过一个锁管理器来控制对存储的访问。
如果性能是其中一个主要要求,SUSE 建议为群集环境使用 OCFS2 而不要使用 GFS2。我们的测试表明,与采用此设置的 GFS2 相比,OCFS2 的表现更好。
SUSE 只支持只读模式的 GFS2。不支持写入操作。
21.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
.
21.2 配置 GFS2 服务和 STONITH 资源 #
在创建 GFS2 卷之前,必须先配置 DLM 和 STONITH 资源。
您需要配置屏蔽设备。没有一个适当的 STONITH 机制(如 external/sbd
),则配置会失败。
启动壳层,并以
root
用户身份或同等身份登录。如过程 13.3 “初始化 SBD 设备”中所述,创建 SBD 分区。
运行
crm configure
.将
external/sbd
配置为屏蔽设备,并将/dev/sdb2
作为共享存储设备上专用于存储检测信号和屏蔽信息的分区:crm(live)configure#
primitive sbd_stonith stonith:external/sbd \ params pcmk_delay_max=30 meta target-role="Started"
使用
show
查看所做的更改。如果所有设置均正确无误,请使用
commit
提交更改,然后使用quit
离开 crm 在线配置。
有关为 DLM 配置资源的细节,请参见第 19.2 节 “配置 DLM 群集资源”。
21.3 创建 GFS2 卷 #
按第 21.2 节 “配置 GFS2 服务和 STONITH 资源”中所述将 DLM 配置为群集资源后,将系统配置为使用 GFS2 并创建 GFS2 卷。
我们建议您通常应将应用程序文件和数据文件存储在不同的 GFS2 卷上。如果应用程序卷和数据卷具有不同的挂载要求,则必须将它们存储在不同的卷上。
开始之前要准备计划用于 GFS2 卷的块设备。将这些设备留作可用空间。
然后,按mkfs.gfs2
中所述使用 过程 21.2 “创建并格式化 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
手册页。例如,要在
/dev/sdb1
上创建最多支持 32 个群集节点的新 GFS2 文件系统,请使用以下命令:#
mkfs.gfs2 -t hacluster:mygfs2 -p lock_dlm -j 32 /dev/sdb1
hacluster
名称与文件/etc/corosync/corosync.conf
中的cluster_name
项相关(这是默认设置)。
21.4 挂载 GFS2 卷 #
可以手动挂载 GFS2 卷,也可以按过程 21.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/sdb1" 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
原始资源添加到您在过程 19.1 “配置 DLM 的基础组”中创建的g‑storage
组。crm(live)configure#
modgroup g-storage add gfs2-1
受限于基本组的内部共置和顺序约束,
gfs2-1
资源将仅在已有dlm
资源在运行的节点上启动。使用
show
查看所做的更改。如果所有设置均正确无误,请使用
commit
提交更改,然后使用quit
离开 crm 在线配置。