fsck 命令

用途

检查文件系统的一致性并且以交互方式修复文件系统。

语法

fsck [ -n ] [ -p ] [ -y ] [ -d区块编号 ] [ -f ] [ -ii-节点编号 ] [ -o 选项 ] [ -t文件 ] [ -V VfsName ] [ FileSystem1 - FileSystem2 ... ]

描述

注意: 发生系统故障后,始终在文件系统上运行 fsck 命令。 矫正的动作也许会导致某些数据的丢失。 每次一致性更正的缺省操作是等待操作员输入yesno. 如果您对受影响的文件系统没有写许可权,那么 fsck 命令缺省为no响应,而不管您的实际响应。
注意:
  1. 对于一个已经安装好了的文件系统,fsck 命令不会做出矫正。
  2. fsck 命令出于某些原因可以在一个已经安装好了的文件系统中运行,但不是进行修复。 但是当文件系统安装完毕之后,也许会返回不准确的错误消息。

fsck 命令检查并以交互方式修复不连贯的文件系统。 在安装文件系统之前,应该运行此命令。 您必须能够读设备文件,在此设备上驻留着文件系统(例如 /dev/hd0 设备)。 通常,文件系统是连贯的,fsck 命令仅仅是报告文件系统中文件的数量、被使用的块和空闲的块。 如果文件系统是不连贯的,fsck 命令显示关于那些找到的不连贯性的信息并且提示您修复它们的许可。

fsck 命令在修复中是有保留的并且会尽力避免那些可能导致有效数据丢失的动作。 在特定的情况下,fsck 命令会建议破坏已经损坏的文件。 如果您不允许 fsck 命令进行必要的修复,那么或许会产生一个不连贯的文件系统。 安装一个不连贯的文件系统也许会导致系统的崩溃。

如果 JFS2 文件系统具有快照,那么 fsck 命令将尝试保留这些快照。 如果此操作失败,那么无法保证快照包含来自捕捉到的文件系统的全部先前就存在的映像。 fsck 命令将删除快照和快照逻辑卷。 如果 fsck 命令修改文件系统,那么将删除内部快照。

如果未使用 FileSystem 参数指定文件系统,那么 fsck 命令将检查 /etc/filesystems 文件中列出的所有文件系统,该文件系统的 check 属性设置为 True。 您可以通过在每一节中加入一行启用这种检查,如下所示:

check=true
您还可以通过对 /etc/filesystems 文件中的文件系统进行分组来对多个文件系统执行检查。 要做这项工作,在 /etc/filesystems 文件中更改检查属性,如下所示:
check=Number

Number 参数告诉 fsck 命令哪一组包含特定的文件系统。 使用公共记录设备的文件系统应该被放置在同一个组中。 以文件系统在 /etc/filesystems 文件中列示的顺序检查它们,一次检查一个。 所有 check=true 文件系统都在组 1中。 fsck 命令尝试在任何其他文件系统之前检查根文件系统,而不考虑命令行或 /etc/filesystems 文件中指定的顺序。

fsck 命令检查以下的不连贯性:

  • 分配给多个文件的块或者段。
  • 包含交叠块或者段数目的索引节点。
  • 包含超出范围的块或者段数目的索引节点。
  • 在对文件的目录引用数量和文件链接计数之间的差异。
  • 非法分配的块或者段。
  • 包含在磁盘映射中标记为空闲的块或者段数量的索引节点。
  • 包含被破坏的块或者段数目的索引节点。
  • 在索引节点中不是最后磁盘地址的段。 检查不会被用于压缩文件系统。
  • 包含一个段的超过 32KB 段的文件。 检查不会被用于压缩文件系统。
  • 尺寸检查:
    • 块的不正确数量。
    • 目录的大小不是 512 字节的整数倍。
    这些检查不被用于压缩的文件系统。
  • 目录检查:
    • 目录条目包含一个在索引节点映射中被标记为空闲的索引节点号。
    • 超出范围的索引节点号。
    • 缺少点 (.) 链接,或者该链接未指向它本身。
    • 缺少点点 (..) 链接,或者该链接未指向父目录。
    • 没有引用的文件或者不可到达的目录。
  • 不连贯的磁盘映射。
  • 不连贯的索引节点映射。

如果您允许,那些孤立的文件和目录(那些无法到达的)可以通过将它们加到在文件系统根目录下的 lost+found 子目录下面使它们重新连接起来。 指定的名称是索引节点号。 如果您不允许 fsck 命令重新配属一个孤立的文件,它会请求破坏这个文件的许可。

除了它的消息之外,fsck 命令会通过它的出口值来记录检查和修复的结果。 这个出口值可能是以下情况的任意和:

描述
重大安全事件数量 所有被检查的文件系统现在都好了。
2 fsck 命令在结束检查或修复之前被中断了。
4 fsck 命令更改了文件系统;用户必须立即重新启动系统。
8 周 文件系统包含没有修复的损坏部分。

fsck 命令要求对文件系统的底层逻辑卷设备进行互斥访问。 如果 fsck 由于底层设备不可用而失败,那么您应该在该设备可打开之后重试 fsck。

当系统从磁盘引导时,引导进程会对 //usr/var/tmp 文件系统显式运行用 -f-p 标志指定的 fsck 命令。 如果没有成功地在这些文件系统之一执行 fsck 命令,系统不会引导。 在这样的系统引导之前,从可删除的介质引导并进行维护工作将会被需要。

如果 fsck 命令成功地在 //usr/var/tmp中运行, 正常的系统初始化将会继续进行。 在正常的系统初始化过程中,fsck 命令同 -f-p 标志一同指定,从 / etc/rc 文件中运行。 此命令序列检查 check 属性设置为 True (check=true)。 如果从 /etc/rc 文件执行的 fsck 命令无法保证任何文件系统的一致性,那么系统初始化将继续。 任何不连贯文件系统的安装也许会失败。 安装失败可能会导致系统初始化无法完成。
注: 缺省情况下, //usr/var, 并且 /tmp 文件系统将 check 属性设置为 False (check=false) 在其 /etc/filesystem 节中。 属性被设成了 False 是由于以下原因:
  1. 引导进程对 //usr/var/tmp 文件系统显式运行 fsck 命令。
  2. 执行 /etc/rc 文件时,会安装 //usr/var/tmp 文件系统。 fsck 命令不会修改一个已经安装了的文件系统。 此外,在一个已经安装好了的文件系统上运行的 fsck 命令产生不可靠的结果。

可以使用系统管理界面工具 (SMIT) smit fsck 快速路径来运行该命令。

标志

描述
-d区块编号 搜索指定磁盘块的引用。 无论何时 fsck 命令遇到包含特定块的文件,它将会显示索引节点号和所有指向它的路径名称。 对于 JFS2 文件系统,引用指定模块的索引节点号将会被显示,但是不是它们的路径名称。
-f 进行快速检查。 在正常情况下,唯一可能被不适当关机停止系统影响的文件系统是系统停止时安装的那些文件系统。 -f 标志会提示 fsck 命令不要检查那些已经成功卸装的文件系统。 fsck 命令通过检查文件系统超块中的 s_fmod 标志来确定这一点。

当安装了文件系统时,将设置该标志;在其成功卸装时,清除该标志。 如果文件系统成功卸装,这不大可能会存在什么问题。 由于多数文件系统都能成功卸装,不检查这些文件系统能减少检查时间。

-ii-节点编号 搜索指定索引节点的引用。 无论何时 fsck 命令遇到一个指定索引节点的目录引用,它都会显示这个引用的完整路径名称。
-n 假定no fsck 命令提出的所有问题的响应; 不打开指定的文件系统进行写入。
-o 选项 fsck 命令传递逗号分隔的选项。 当前对 JFS 支持以下选项(较新的文件系统废弃了以下选项,可以忽略它们):
可安装
如果有问题的文件系统可安装(清除),会使 fsck 命令成功地退出,返回一个“0”值。 如果文件系统不可安装,fsck 命令退出并返回一个值“8”。
mytype
如果所讨论的文件系统与 /etc/filesystems 文件中指定的类型相同或由命令行上的 -V 标志指定的类型相同,那么将导致 Fsck 命令成功退出 (0)。 否则,返回 8。 例如,fsck -o mytype -V jfs如果 / (根文件系统) 是日志文件系统,那么将以值 0 退出。
-p 不显示次要问题的消息但是自动修复问题。 此标志不会授予 -y 标志所执行的批发许可证,并且对于在系统正常启动时执行自动检查很有用。 无论系统在何时自动运行,您应该将此标志作为系统启动过程的一部分来使用。 如果主要的超级块损坏了,次要的超级块就被验证,并且复制到主要的高级块中。
-t文件 如果 fsck 命令无法获得足够的内存来保留其表,那么将 File 参数指定为文件系统上的临时文件,而不是被检查的文件系统。 如果不指定 -t 标志,那么 fsck 命令需要一个临时文件,它会提示您给这个临时文件起名称。 但是,如果指定了 -p 标志,那么 fsck 命令不成功。 如果暂存文件不是一个特殊的文件,当 fsck 命令结束的时候,它就会被除去。
-V VfsName 使用文件系统的 VFSName 变量指定的虚拟文件系统描述而不是用 /etc/filesystems 文件来决定描述。 如果未在命令行上指定 -V VfsName 标志,那么将检查 /etc/filesystems 文件,并假定匹配节的 vfs=属性 是正确的文件系统类型。
-y fsck 命令提出的所有问题假定一个肯定响应。 此标志使 fsck 命令采取它认为必要的行动。 仅在损坏严重的文件系统中使用此标志。

安全性

RBAC 用户和可信AIX用户请注意:此命令可执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 要获取与此命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

  1. 为了检查所有的缺省文件系统,请输入:
    fsck
    此命令检查标记的所有文件系统check=true/etc/filesystems 文件中。 fsck 命令这种形式在对文件系统做出任何更改之前会向您请求许可。
  2. 为了利用缺省的文件系统自动修复较次要的问题,请输入:
    fsck -p
  3. 为了检查一个特定的文件系统,请输入:
    fsck /dev/hd1
    此命令检查位于 /dev/hd1 设备上的已卸装文件系统。

文件

描述
/usr/sbin/fsck 包含 fsck 命令。
/etc/filesystems 列出已知文件系统并定义其特征。
/etc/vfs 包含虚拟文件系统类型的描述。
/etc/rc 包含当系统启动的时候运行的命令(包括 fsck 命令)。