4.11. 修复文件系统
当挂载文件系统节点失败时,文件系统日志允许快速恢复。但如果存储设备断电或者断开物理连接,则会发生文件系统崩溃。(无法使用日志进行存储子系统失败修复。)当这种崩溃发生时,您可以使用
fsck.gfs2
命令修复 GFS2 文件系统。
重要
fsck.gfs2
命令必须只能在从所有节点中卸载的文件系统中运行。
重要
不应在引导时使用
fsck.gfs2
命令检查 GFS2。fsck.gfs2
命令不能在引导时确定是否在集群的另一个节点中挂载该文件系统。应只在系统引导后手动运行 fsck.gfs2
命令。
To ensure that the
fsck.gfs2
command does not run on a GFS2 file system at boot time, modify the /etc/fstab
file so that the final two columns for a GFS2 file system mount point show "0 0" rather than "1 1" (or any other numbers), as in the following example:
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
/dev/VG12/lv_svr_home /svr_home gfs2 defaults,noatime,nodiratime,noquota 0 0
注意
如果您以前有在 GFS 文件系统中使用 gfs_fsck 命令的经验,请注意
fsck.gfs2
命令在以下方面和之前发布的 gfs_fsck
有所不同:
- 在运行
fsck.gfs2
时按 Ctrl+C 会中断进程并显示提示信息,询问您是否要取消该命令,跳过剩余操作或者继续该进程。 - 您可以使用
-v
标签提高详细等级。添加第二个-v
标签会再次提高等级。 - 您可以使用
-q
标签降低详细等级。添加第二个-q
标签会再次降低等级。 -n
会以只读方式打开某个文件系统并自动对所有查询回答no
。该选项提供了在不允许fsck.gfs2
命令生效的前提下使用命令找出错误的方法。
有关其他命令选项详情请参考
fsck.gf2
man page。
运行
fsck.gfs2
命令要求系统内存高于操作系统使用的内存而低于内核使用的内存。GFS2 文件系统中的每块内存本身需要大约 5 比特额外内存,或者 5/8 字节。因此要估算在您的文件系统中运行 fsck.gfs2
命令所需内存字节数,您可以确定包含的文件系统块的数量,然后乘以 5/8。
例如:要确定在大小为 16TB,块大小为 4K 的 GFS2 文件系统中运行
fsck.gfs2
命令大约需要多少内存,首先要确定该文件系统中包含多少内存块,可使用 16TB 除以 4K:
17592186044416 / 4096 = 4294967296
17592186044416 / 4096 = 4294967296
这个文件系统中包含 4294967296 个块,再乘以 5/8 就可确定需要多少内存:
4294967296 * 5/8 = 2684354560
4294967296 * 5/8 = 2684354560
该文件系统大约需要 2.6GB 可用内存方可运行
fsck.gfs2
命令。请注意:如果块大小为 1K,那么运行 fsck.gfs2
命令将需要四倍于以上值的内存,即大约 11GB。
用法 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
fsck.gfs2 -y BlockDevice
fsck.gfs2 -y BlockDevice
-y
-y
标签可使对所有问题的回答都为yes
。如果指定-y
标签,fsck.gfs2
命令则不会在进行修改前提示您回答问题。BlockDevice
- 指定 GFS2 文件系统所在的块设备。
示例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在这个示例中,修复了位于块设备
/dev/testvol/testlv
中的 GFS2 文件系统。所有关于修复查询的回答都自动为 yes
。