fsck 命令
用途
检查文件系统的一致性并且以交互方式修复文件系统。
语法
fsck [ -n ] [ -p ] [ -y ] [ -dBlockNumber ] [ -f ] [ -ii-NodeNumber ] [ -o Options ] [ -tFile ] [ -V VfsName ] [ FileSystem1 - FileSystem2 ... ]
描述
- 对于一个已经安装好了的文件系统,fsck 命令不会做出矫正。
- fsck 命令出于某些原因可以在一个已经安装好了的文件系统中运行,但不是进行修复。但是当文件系统安装完毕之后,也许会返回不准确的错误消息。
fsck 命令检查并以交互方式修复不连贯的文件系统。在安装文件系统之前,应该运行这个命令。您必须能够读设备文件,在这个设备上驻留着文件系统(例如/dev/hd0 设备)。通常,文件系统是连贯的,fsck 命令仅仅是报告文件系统中文件的数量、被使用的块和空闲的块。如果文件系统是不连贯的,fsck 命令显示关于那些找到的不连贯性的信息并且提示您修复它们的许可。
fsck 命令在修复中是有保留的并且会尽力避免那些可能导致有效数据丢失的动作。在特定的情况下,fsck 命令会建议破坏已经损坏的文件。如果您不允许 fsck 命令进行必要的修复,那么或许会产生一个不连贯的文件系统。安装一个不连贯的文件系统也许会导致系统的崩溃。
如果 JFS2 文件系统有快照,fsck 命令将试图保留这些快照。如果此操作失败,则无法保证快照包含来自捕捉到的文件系统的全部先前就存在的映像。fsck 命令将删除这些快照和快照逻辑卷。
如果您不用 FileSystem 参数指定文件系统,fsck 命令将会检查在/etc/filesystems中列出的所有文件系统,文件的check属性将全部设为 True。您可以通过在每一节中加入一行启用这种检查,如下所示:
check=true
fsck 命令可以在多文件系统中进行同步的检查动作。这个过程可以减少检查大量文件系统所需的时间。当文件系统被指定为参数的一部分的时候,采用负号“-”来分隔这些文件系统。
您也可以通过在 /etc/filesystems 文件中将文件系统分组来进行多文件系统的同步检查工作。为了做这项工作,在/etc/filesystems 文件中修改 check属性,如下所示:
check=Number
Number参数告诉 fsck 命令哪一组包含特定的文件系统。使用公共记录设备的文件系统应该被放置在同一个组中。每一个组在分隔的平行进程中被检查。文件系统被检查的时候,一次检查一个,以便它们能够在/etc/filesystems文件中被列出。所有的 check=true 的文件系统被分到 1 组。fsck 命令在其它文件系统之前会试着检查根文件系统而不管在命令行中或者 /etc/filesystems 文件中指定的顺序。
fsck 命令检查下列的不连贯性:
- 分配给多个文件的块或者段。
- 包含交叠块或者段数目的索引节点。
- 包含超出范围的块或者段数目的索引节点。
- 在对文件的目录引用数量和文件链接计数之间的差异。
- 非法分配的块或者段。
- 包含在磁盘映射中标记为空闲的块或者段数量的索引节点。
- 包含被破坏的块或者段数目的索引节点。
- 在索引节点中不是最后磁盘地址的段。检查不会被用于压缩文件系统。
- 包含一个段的超过 32KB 段的文件。检查不会被用于压缩文件系统。
- 尺寸检查:
- 块的不正确数量。
- 目录的大小不是 512 字节的整数倍。
- 目录检查:
- 目录条目包含一个在索引节点映射中被标记为空闲的索引节点号。
- 超出范围的索引节点号。
- 点(.)链接丢失或未指向其本身。
- 点点(..)链接丢失或未指向父目录。
- 没有引用的文件或者不可到达的目录。
- 不连贯的磁盘映射。
- 不连贯的索引节点映射。
如果您允许,那些孤立的文件和目录(那些无法到达的)可以通过将它们加到在文件系统根目录下的 lost+found 子目录下面使它们重新连接起来。指定的名称是索引节点号。如果您不允许 fsck 命令重新配属一个孤立的文件,它会请求破坏这个文件的许可。
除了它的消息之外,fsck 命令会通过它的出口值来记录检查和修复的结果。这个出口值可能是下列情况的任意和:
0 | 所有被检查的文件系统现在都好了。 |
2 | fsck 命令在结束检查或修复之前被中断了。 |
4 | fsck 命令改变了文件系统;用户必须立即重新启动系统。 |
8 | 文件系统包含没有修复的损坏部分。 |
当系统从磁盘进行引导,引导过程会很明确的运行 fsck 命令,以 //usrx、/var、/tmp 文件系统中的 -f 和 -p 标志指定。如果没有成功的在这些文件系统之一执行 fsck 命令,系统不会引导。在这样的系统引导之前,从可删除的介质引导并进行维护工作将会被需要。
如果 fsck 命令成功的在/、/usr、/var 和 /tmp中运行, 正常的系统初始化将会继续进行。在正常的系统初始化过程中,fsck 命令同 -f 和 -p 标志一同指定,从/ etc/rc 文件中运行。这个命令序列检查所有的文件系统,在其中check属性设成了 True( check=true)。如果 fsck 命令从 /etc/rc 文件中执行,命令不能保证文件系统的连贯性,系统初始化继续进行。任何不连贯文件系统的安装也许会失败。安装失败也许会导致系统不完全的初始化。
- 引导过程在//usr 、/var、和 /tmp 文件系统中明确的运行了fsck 命令。
- 当 /etc/rc 文件被执行的时候,/ /usr 、 /var 和 /tmp文件系统就被安装了。fsck 命令不会修改一个已经安装了的文件系统。此外,在一个已经安装好了的文件系统上运行的 fsck 命令产生不可靠的结果。
您可以使用在基于 Web 的系统管理器 (wsm) 中的文件系统 应用程序来改变文件系统的特征。您也可以系统管理界面程序(SMIT)smit fsck 快速路径来运行这个命令。
标志
-d BlockNumber | 搜索指定磁盘块的参考。无论 fsck 命令遇到包含特定块的文件,它将会显示索引节点号和所有指向它的路径名称。对于 JFS2 文件系统,引用指定模块的索引节点号将会被显示,但是不是它们的路径名称。 |
-f | 进行快速检查。在正常情况下,通过非正确方式关闭系统来停机仅有的文件系统很可能被影响,这个文件系统就是当系统停止时在安装的那些。 -f 标志会提示 fsck 命令不要检查没有成功安装的文件系统。fsck 命令通过检查文件系统超级块中的 s_fmod 标志来决定这件事。
当文件系统没有成功安装的时候,无论何时文件系统被安装和被清除,这个标志都将被设定。如果文件系统被成功的卸载,这不大可能会存在什么问题。因为多数文件系统没有成功安装,不检查这些文件系统能减少检查时间。 |
-i i-NodeNumber | 搜索指定索引节点的参考。无论何时 fsck 命令遇到一个指向指定索引节点的目录,它都会显示这个参考的完整路径名称。 |
-n | 对 fsck 命令所提出的所有问题给出一个no的回应;不打开指定的文件系统来写。 |
-o 选项 | 向 fsck 命令传递逗号分隔的选项。这些选项被认为是文件系统的实现细节,除了下面目前为了所有文件系统而当前被支持的选项:
|
-p | 不显示次要问题的消息但是自动修复问题。这个标志并不是象-y 标志那样授予大规模许可,当系统正常启动的时候对自动进行检查工作有用。无论系统在何时自动运行,您应该将这个标志作为系统启动过程的一部分来使用。也允许并行分组检查。如果主要的超级块损坏了,次要的超级块就被验证,并且复制到主要的高级块中。 |
-t文件 | 如果 fsck 命令得不到足够的内存来保存它的表的话,在文件系统中作为一个临时文件而不是被检查的文件来指定File参数。如果没有指定 -t 标志,那么 fsck 命令需要一个临时文件,它会提示您给这个临时文件起名字。但是,如果指定了 -p 标志,fsck 命令是不成功的。如果临时文件不是一个特定的文件,当 fsck 命令结束的时候,它就会被删除。 |
-V VfsName | 使用为文件系统由VFSName变量指定的虚拟文件系统的描述,而不是用 /etc/filesystems 文件决定描述。如果-V VfsName 标志没有在命令行中指定,就会检查 /etc/filesystems 文件并且 vfs= 匹配节的特性被认为是正确的文件系统类型。 |
-y | 对所有 fsck命令提出的所有问题假定一个“yes”的响应。这个标志使 fsck 命令采取它认为必要的行动。仅在损坏严重的文件系统中使用这个标志。 |
示例
- 为了检查所有的缺省文件系统,请输入:
fsck
这个命令检查在 /etc/filesystems 文件中所有标记 check=true 的文件系统。fsck 命令这种形式在对文件系统做出任何更改之前会向您请求许可。
- 为了利用缺省的文件系统自动修复较次要的问题,请输入:
fsck -p
- 为了检查一个特定的文件系统,请输入:
fsck /dev/hd1
这个命令检查位于 /dev/hd1 设备上的未安装的文件系统。
文件
/usr/sbin/fsck | 包含 fsck 命令。 |
/etc/filesystems | 列出已知的文件系统并且定义它们的特征。 |
/var/spool/mail/* | 包含虚拟文件系统类型的描述。 |
/usr/bin/from | 包含当系统启动的时候运行的命令(包括 fsck 命令)。 |