Linux命令学习手册-fsck

作者: QuietHeart | 来源:发表于2019-12-23 07:47 被阅读0次

    fsck [-aANPrRsTV][-t <文件系统类型>][文件系统...]

    功能

    检查文件系统并尝试修复错误。

    补充说明:当文件系统发生错误四化,可用 fsck 指令尝试加以修复。

    举例

    • 检查 msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复:

      $fsck -t msdos -a /dev/hda5
      

      此指令可与 /etc/fstab 相互参考操作来加以了解。

    • 检查所有的缺省文件系统:

      $fsck
      

      这个命令检查在 /etc/filesystems 文件中所有标记 check=true 的文件系统。 fsck 命令这种形式在对文件系统做出任何更改之前会向您请求许可。

    • 利用缺省的文件系统自动修复较次要的问题:

      $fsck -p
      
    • 检查一个特定的文件系统:

      $fsck /dev/hd1
      

      这个命令检查位于 /dev/hd1 设备上的未安装的文件系统。

    描述

    参数

    -a 自动修复文件系统,不询问任何问题。

    -A 依照 /etc/fstab 配置文件的内容,检查文件内所列的全部文件系统。

    -N 不执行指令,仅列出实际执行会进行的动作。

    -P 当搭配 -A 参数使用时,则会同时检查所有的文件系统。

    -r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。

    -R 当搭配 -A 参数使用时,则会略过 / 目录的文件系统不予检查。

    -s 依序执行检查作业,而非同时执行。

    -t <文件系统类型> 指定要检查的文件系统类型。

    -T 执行 fsck 指令时,不显示标题信息。

    -V 显示指令执行过程。

    -o f 对系统进行强制检查,不论系统是否在 clean 等状态

    -o p 非交互式检查并修复文件系统,对有的问题则立即退出

    -o b=xx 用来修复超级块的错误,就是将备份的超级块内容拷入超级块中。solaris对超级块很重视,它的备份有很多,一般的 b=32 就可以了,如果不行可以使用命令 newfs -N /dev/rdsk/cxtxdxsx 来查看超级块的位置,其中任何一个备份块都可使用.

    详细参数

    -d BlockNumber 搜索指定磁盘块的参考。无论 fsck 命令遇到包含特定块的文件,它将会显示索引节点号和所有指向它的路径名称。对于 JFS2 文件系统,引用指定模块的索引节点号将会被显示,但是不是它们的路径名称。

    -f 进行快速检查。在正常情况下,通过非正确方式关闭系统来停机仅有的文件系统很可能被影响,这个文件系统就是当系统停止时在安装的那些。 -f 标志会提示 fsck 命令不要检查没有成功安装的文件系统。=fsck= 命令通过检查文件系统超级块中的 s_fmod 标志来决定这件事。 当文件系统没有成功安装的时候,无论何时文件系统被安装和被清除,这个标志都将被设定。如果文件系统被成功的卸载,这不大可能会存在什么问题。因为多数文件系统没有成功安装,不检查这些文件系统能减少检查时间。

    -i i-NodeNumber 搜索指定索引节点的参考。无论何时 fsck 命令遇到一个指向指定索引节点的目录,它都会显示这个参考的完整路径名称。

    -nfsck 命令所提出的所有问题给出一个 no 的回应;不打开指定的文件系统来写。

    -o 选项 向 fsck 命令传递逗号分隔的选项。这些选项被认为是文件系统的实现细节,除了下面目前为了所有文件系统而当前被支持的选项:

    • mountable

      如果有问题的文件系统可安装(清除),促使 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 命令提出的所有问题假定一个 yes 的响应。这个标志使 fsck 命令采取它认为必要的行动。仅在损坏严重的文件系统中使用这个标志。

    一些原理

    大多数系统设置为启动时自动运行 fsck ,因此任何错误将在系统使用前被检测到(并根据希望修正)。自动检查只对启动时自动 mount 的文件系统发生作用,使用 fsck 手工检查其他文件系统,比如软盘。使用有错误的文件系统可能使问题变得更坏。如果系统正常关闭,几乎从不发生错误,因此有一些方法可以不进行检查。如果文件 /etc/fastboot 存在,就不检查。另外,如果 ext2 文件系统在超级块中有一个特定的标记告知该文件系统在上次 mount 后没有正常 unmount . 如果标记指出 unmount 正常完成(假设正常 unmount 指出没问题), e2fsck ( fsckext2 文件系统版) 就不检查系统。 /etc/fastboot 是否影响系统依赖于你的启动手稿,但 ext2 标记则在你使用 e2fsck 时发生作用–基于一个 e2fsck 选项(参阅 e2fsck 手册页)

    运行 fsck 后,该命令会分6个阶段对文件系统进行检查,这六个阶段分别是:

    1. 阶段1: 检查块和块的大小
    2. 阶段2: 检查路径名
    3. 阶段3: 检查连接性
    4. 阶段4: 检查参考记数
    5. 阶段5: 检查自由块列表
    6. 阶段6: 补救自由块列表

    对每个阶段进行检查,常见的一些错误:

    1. 移去一个没有相关文件的目录入口

      这时用户可以回答 YesY 来删除该目录入口。

    2. 重连接一个已分配但不能访问的文件

      fsck 找到了一个已分配的I节点,但却不可访问(该节点没与任何目录连接),这时一般对 fsck 的"RECONNECT?"回答 Yes ,即把该I节点连接到 lost+found 目录下,文件名即是I节点号,之后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。

    3. 连接数调整ADJUST

      在交互方式下, fsck 若发现连接数(与原记录)不一致,将询问用户采取何种行动,本例发现一目录的I节点连接数与该目录的真实连接数不一致。

      这时用户应该回答 YesY 来改正连接数。

    4. 自由块表不一致

      fsck 查出未分配块数与超级块中所给出的自由块表不一致。

      这时用户应该回答 YesY 来修正超级块。

      从上面的出错信息和处理方法可以发现,对于 fsck 询问的问题大多数情况下都可以用 Yes 来回答,所以在实际应用时,可以用 -y 选项来执行该命令对硬盘进行检查和修复。

      这里:

      • RECONNECT

        表示目录丢失,可将其存入 lost+found 中再作转移。回答 yes

      • SUPERBLK坏(注意是坏,不是wrong)

        修复见上面(如果是wrong就随便了,修不修都可以)

      • CLEAR

        删i节点,可能会错

      • REMOVE

        删文件,一般给出文件名。 file=….

      • ADJUST

        调整连接数。实际数与原记录不符。回答 yes

      使用一般都是 yes 过去的,不能在正在 mount 的文件系统上操作,否则有可能导致文件系统损坏。但也没有碰到过用 fsck 导致发生错误的情况,不过还是建议操作的时候规范一些。

      对于一个已经安装好了的文件系统, fsck 命令不会做出矫正。

      fsck 命令出于某些原因可以在一个已经安装好了的文件系统中运行,但不是进行修复。但是当文件系统安装完毕之后,也许会返回不准确的错误消息。

      fsck 命令检查并以交互方式修复不连贯的文件系统。在安装文件系统之前,应该运行这个命令。您必须能够读设备文件,在这个设备上驻留着文件系统(例如 /dev/sda1 )安装一个不连贯的文件系统也许会导致系统的崩溃。

    其它

    (有待实践)

    运行 fsck 命令后产生的文件有什么用?

    当执行 fsck 命令时, fsck 命令如果发现存在孤立的文件或目录,这些孤立的文件或目录对于系统管理员或用户来说,无法访问到它,因为它与它的上级目录失去了关联,如果用户允许 fsck 重新把它们找回来的话, fsck 命令就会把这些孤立的文件或目录放在文件系统的 /lost+found 目录下,并用各自的 i-node 号来命名,以便用户查找自己需要的文件。 Lost+found 目录通过它的英文含义我们都可以知道,它是一个失物认领处。

    因此当某个用户发现自己丢失了某个文件,可以在执行 fsck 之后到 /lost+found 目录下去查找,这时通过文件名已无法辨认出文件的作用,只能用 file 之类的命令来确定文件的类型,如果是数据文件,可以用 morevi 命令来查看,如果是二进制文件,可以用 dbx 命令来调试或者试着执行它(注意它可能是一个具有破坏性的程序),知道文件或目录的作用之后,可以对其进行改名。

    如果用户不允许 fsck 把这些孤立的文件或目录找回来,那么 fsck 命令就会破坏这些文件或目录,彻底丢失这些文件或目录,用户或系统管理员永远也无法找回它们。

    关于 fsck 得结果输出:

    当系统启动的时候会使用 fsck 对文件系统进行扫描,并相应的报出扫描结果。

    例如: dev/rdsk/c0t0d0s7 stable 等。

    后面是Fs的状态。其中,

    clean 表示文件系统 umount 后无人用,

    stable 表示文件系统用过,但却是完整的,好的。

    而出一大堆的话,还有什么 fragment % 什么的的那都表示文件系统上有乱的地方,那么就应该进入系统后使用 fsck 来整理。

    当系统的状态是 cleanstablelogging 的状态的时候 fsck 不运行。

    在非法关机后(各种原因),再次启动的时候会有很多的情况,上面说的是一种情况,再厉害一些是系统只能进入但用户状态,最厉害的是连单用户的状态都无法进入(肯定是 //usr 区有问题。这是因为 fsck/ 区的扫描无法通过的话,系统当然无法启动,而 fsck 调用的一些函数库又在 /usr 上。。。。)

    此外,在一个已经安装好了的文件系统上运行的 fsck 命令产生不可靠的结果。

    文件

    /usr/sbin/fsck 包含 fsck 命令。

    /etc/filesystems 列出已知的文件系统并且定义它们的特征。

    /var/spool/mail/* 包含虚拟文件系统类型的描述。

    /usr/bin/from 包含当系统启动的时候运行的命令(包括 fsck 命令)。

    相关文章

      网友评论

        本文标题:Linux命令学习手册-fsck

        本文链接:https://www.haomeiwen.com/subject/lsiogctx.html