全局文件系统 2 (GFS2) 准备工作

在创建 GFS2 文件系统之前:

  • 确保 gfs2-utils 包安装在所有集群节点上。
  • 确保有一个可从所有集群节点访问的集群逻辑卷,在该卷上创建 GFS2 文件系统。
  • 确保所有集群节点之间的时钟同步(最好使用 ntp 或者 chronyd)。

此外,创建 GFS2 文件系统时需要一些信息:

  • 将使用文件系统的集群的名称。
  • 将同时访问文件系统的节点数,包括将来可能添加的任何节点。
  • 用于新文件系统的名称。
  • 将用于存储文件系统的集群逻辑卷的设备节点。
如何创建 GFS2 格式的集群文件系统

挂载 GFS2 文件系统

在挂载 GFS2 文件系统之前,文件系统必须存在,文件系统所在的卷必须被激活,并且必须启动支持的集群和锁定系统。
出于测试目的,GFS2 文件系统可以以与任何其他典型 Linux 文件系统相同的方式安装。
对于正常的生产操作,应该通过将 GFS2 文件系统配置为集群资源来挂载它。

在系统关闭时卸载文件系统时,系统将不知道已手动而非通过 Pacemaker 自动安装的 GFS2 文件系统。
因此,GFS2 脚本不会卸载 GFS2 文件系统。
在 GFS2 关闭脚本运行后,标准关闭进程会终止所有剩余的用户进程,包括集群基础设施,并尝试卸载文件系统。
如果没有集群基础设施,此卸载将失败,系统将挂起。

要在卸载 GFS2 文件系统时防止系统挂起,请执行以下操作之一:

  • 始终使用 Pacemaker 将 GFS2 文件系统作为集群资源进行管理。
  • 如果 GFS2 文件系统已通过 mount 命令手动挂载,请务必在重新启动或者关闭系统之前使用 umount 命令手动卸载文件系统。

如果在这些情况下系统关闭期间卸载文件系统时文件系统挂起,请执行硬件重新引导。
由于文件系统在关闭过程中较早同步,因此任何数据都不太可能丢失。

挂载 GFS2 文件系统的基础与任何其他常规文件系统相同:

# mount [-t gfs2] [-o mount_options] [blockdevice] [mountpoint]

要在 GFS2 文件系统上使用 POSIX ACL(使用 getfacl 和 setfacl),需要使用 acl 挂载选项挂载它。
/etc/fstab 中 GFS2 文件系统的一行可能如下所示:

# cat /etc/fstab
/dev/clustererdvg/lv_gfs2   /mouhtpoint   gfs2 acl 0 0

说明

将 /etc/fstab 中任何条目的最后一列(fs_passno 列)设置为 0 是至关重要的,这样 fsck.gfs2 就不会在启动时运行。
GFS2 文件系统可能在启动时已安装在另一个集群节点上。
在当前挂载的 GFS2 文件系统(甚至在另一个节点上)上运行 fsck 可能会导致文件系统严重损坏和数据丢失。
如需进一步讨论,请参阅 fsck.gfs2(8) 手册页。

通常,不建议将 GFS2 文件系统添加到 /etc/fstab。
Pacemaker 应该优先将它们作为集群资源在启动时挂载。
如果在 Pacemaker 之外挂载用于测试目的,最好手动挂载 GFS2 文件系统,然后在不再需要时手动将其从所有节点卸载,然后再关闭集群节点。

全局文件系统 2 (GFS2)

全局文件系统 2 (GFS2 - Global File System2) 是一个直接与内核 VFS 层接口的集群文件系统。
这意味着多个集群节点可以同时挂载和使用同一个文件系统,同时仍然提供完整的常规文件系统,包括支持 POSIX ACL、扩展属性和配额等功能。

为了实现这一点,每个访问 GFS2 文件系统的节点都使用 Corosync 和 Pacemaker 提供的集群基础设施来提供防护和锁定等服务。
挂载 GFS2 文件系统的每个集群节点将使用单独的日志。
如果一个节点出现故障,集群中的其他节点之一将在故障节点被隔离后重播故障节点的日志。
为防止访问文件系统时两个节点之间出现争用情况,GFS2 使用分布式锁管理器 (DLM) 来协调文件和目录上的锁。

https://onitroad.com 更多教程

创建 GFS2 文件系统

一旦所有准备工作都到位,请使用 mkfs。
gfs2 命令从任一节点创建 GFS2 文件系统。
下表列出了 mkfs.gfs2 最常见的选项。

-t [lock_table_name]锁定表的名称(不与 lock_nolock 一起使用)。 对于 lock_dlm,这应该是 [cfustername]:[fs_name]。 只有属于 [clustername] 成员的节点才被允许挂载此文件系统。 [fs_name] 应该是一个唯一的名称,以区分该文件系统的长度为 1 到 16 个字符。
-j [number_of_journals]最初创建的期刊数量(以后可以添加更多期刊)。 同时访问文件系统的每个节点都需要一个日志。 如果省略,此选项将默认为一个日记帐。
-J [journal_size]要创建的日志大小(以 MiB 为单位)。 期刊至少需要 8 MiB。 如果未指定大小,日志大小将默认为 128 MiB。

例如,要在 /dev/clusteredvg/lv_gfs 集群逻辑卷上创建一个名为 examplegfs2 的 GFS2 文件系统,属于 examplecluster.cluster,具有三个 64 MiB 日志,请使用以下命令:

# mkfs.gfs2 -t examplecluster:examplegfs2 -j 3 -J 64 /dev/clusteredvg/lv_gfs

运行 mkfs.gfs2 命令创建 GFS2 文件系统时,可以指定日志的大小。
如果未指定大小,则默认为 128 MB,这对于大多数应用程序来说应该是最佳的。
通常建议使用 128 MB 的默认日志大小。
如果文件系统非常小(例如 5GB),拥有 128 MB 的日志可能不切实际。
如果我们有一个更大的文件系统并且可以负担得起空间,那么使用 256 MB 的日志可能会提高性能。

日期:2020-09-17 00:14:17 来源:oir作者:oir