将日志添加到 GFS2 文件系统

当尝试从比文件系统拥有日志的节点数更多的节点挂载 GFS2 文件系统时,将出现错误太多节点挂载文件系统,没有空闲日志。
要了解 GFS2 文件系统有多少日志,请使用以下命令:

# gfs2_edit -p jindex /dev/mapper/cluster_vg-gfsdata | grep journal
3/3 [fc7745eb] 1/20 (0x1/0x14): File journal0 
4/4 (8b70757d] 2/32859 (0x2/0x805b): File journall

注意: Red Hat Enterprise Linux 7 不支持该产品早期版本中的 gfs2_tool 命令。

要添加更多日志,请使用 gfs2_jadd 命令。
此命令有两个选项,-j [new_journals] 和 -J [journalsize_in_MiB] ,以及一个参数:包含 GFS2 文件系统的块设备或者已挂载的 GFS2 文件系统的挂载点。

如果未指定日志大小,则将使用默认大小 128 MiB。
日志是通过将可用的文件系统空间转换为日志来创建的,因此请确保文件系统有足够的可用空间来容纳我们要创建的新日志。

在下一个示例中,两个 64 MiB 日志将添加到挂载在 /gfs 的 GFS2 文件系统中:

# gfs2_jadd -j 2 -J 64 /gfs
Filesystem:       /gfs
Old Journals:     3
New Journals:     5

进行超级块更改

如果需要将 GfS2 文件系统移动到不同的集群,或者需要重命名集群,则需要更新 GFS2 超级块中的锁定表名称。

注意:在对 GFS2 超级块进行任何更改之前,请确保文件系统当前未安装在任何节点上。

要从 GFS2 超级块请求信息,请使用命令 tunegfs2 -l [devicenode] 。
命令 tunegfs2 也可用于修改锁定表和锁定协议。

要更改这些选项之一,请使用以下命令:

# tunegfs2 -o locktable=[filesystem name] [device]

例如,要将位于集群逻辑卷 /dev/cluster_vg/cluster_lv 上的名为 examplegfs 的 GFS2 文件系统的集群名称更改为 newcluster,请像这样调用此命令:

# tunegfs2 -o locktable=clustere0:newcluster /dev/cluster_vg/cluster_lv; tune2gfs -l /dev/cluster_vg/cluster_lv 
tunegfs2 (Jan 16 2015 10:53:28) 
File system volume name: cluster0:testgfs2 
File system UUID: c8fd0a3c-1ad8-bc36-fca0-29eb1c7f2c28 
File system magic number: 0x1161970 
Block size: 4096 
Block Shift: 12 
Root inode: 99316 
M:aster inode: 32854 
Lock protocol: lock_dlm 
Lock table: cluster0:testgfs2
更多: zhilu jiaocheng

扩展 GFS2 文件系统

可以扩展 GFS2 文件系统以利用可能已添加到文件系统所在的集群逻辑卷的任何另外空间。
可以在线扩展 GFS2 文件系统,但建议先执行测试运行。
要增加 GFS2 文件系统,请使用命令 gfs2_grow [mountpoint |设备节点]。
添加 -T 选项将启用测试模式。
除了实际向磁盘提交更改外,测试模式执行正常增长操作会执行的所有操作。

例如,假设集群逻辑卷 /dev/cluster_vg/cluster_lv 上有一个 GFS2 文件系统,挂载在 /gfs 上。
逻辑卷将首先增长 10 GiB,然后增长 GFS2 文件系统以使用新的可用空间。

# lvextend -L +10G /dev/cluster_vg/cluster_lv
# gfs2_grow -T /gfs 
(Test mode--File system will not be changed)
...
The file system grew by 10 GB. 
gfs2_grow complete.
# gfs2_grow /gfs

全局文件系统 2 (GFS2)

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

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

修复 GFS2 文件系统

在正常情况下,GFSZ 文件系统不需要手动修复。
当一个节点出现故障时,该节点的日志将在故障节点被隔离后由另一个节点替换,从而确保文件系统的完整性。

如果由于某种原因系统留下脏的或者损坏的 GFSZ 文件系统,则可以在其上运行正常的 fsck 命令。
fsck 命令会将文件系统识别为 GFSZ 文件系统,并调用 fsck.gfs2 命令进行实际检查。
fsck.gfs2 命令也可以直接运行。

说明

fsck.gfs2 命令只能在从所有节点卸载的文件系统上运行。
当文件系统作为 Pc1cemaker 集群资源进行管理时,禁用文件系统资源,这将卸载文件系统。
运行 fsck.gfs2 命令后,再次启用文件系统资源。
使用 pcs resource disable 命令的 -wait 选项指定的超时值表示以秒为单位的值。
要确保 fsck.gfs2 命令在引导时不在 GfS2 文件系统上运行,请在集群中创建 GfS2 文件系统资源时设置 options 参数的 run_fsck 参数。
指定 run_fsck=no 将指示节点不应在资源激活时运行 fsck 命令。

请注意,fsck.gfs2 命令在以下方面与 gfs2_fsck 的一些早期版本不同: 在运行 fsck 时按 Ct rl+C。
gfs2 命令中断处理并显示一个提示,询问是中止命令、跳过当前传递的其余部分还是继续处理。
使用 -v 选项提高详细程度。
添加第二个 -v 选项会再次增加详细级别。
使用 -q 选项降低详细级别。
添加第二个 -q 选项再次降低级别。
-n 选项以只读方式打开文件系统,并自动对任何查询回答“否”。
该选项提供了一种尝试命令来显示错误的方法,而实际上不允许 fsck.gfs2 命令生效。
有关其他命令选项的更多信息,请参阅 fsck.gfs2 手册页。

# man fsck.gfs2
管理 GFS2 文件系统 - 添加日志、扩展和修复 GFS2
日期:2020-09-17 00:14:18 来源:oir作者:oir