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
命令遇到一个指向指定索引节点的目录,它都会显示这个参考的完整路径名称。
-n
对 fsck
命令所提出的所有问题给出一个 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
( fsck
的 ext2
文件系统版) 就不检查系统。 /etc/fastboot
是否影响系统依赖于你的启动手稿,但 ext2
标记则在你使用 e2fsck
时发生作用–基于一个 e2fsck
选项(参阅 e2fsck
手册页)
运行 fsck
后,该命令会分6个阶段对文件系统进行检查,这六个阶段分别是:
- 阶段1: 检查块和块的大小
- 阶段2: 检查路径名
- 阶段3: 检查连接性
- 阶段4: 检查参考记数
- 阶段5: 检查自由块列表
- 阶段6: 补救自由块列表
对每个阶段进行检查,常见的一些错误:
-
移去一个没有相关文件的目录入口
这时用户可以回答
Yes
或Y
来删除该目录入口。 -
重连接一个已分配但不能访问的文件
fsck
找到了一个已分配的I节点,但却不可访问(该节点没与任何目录连接),这时一般对fsck
的"RECONNECT?"回答Yes
,即把该I节点连接到lost+found
目录下,文件名即是I节点号,之后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。 -
连接数调整ADJUST
在交互方式下,
fsck
若发现连接数(与原记录)不一致,将询问用户采取何种行动,本例发现一目录的I节点连接数与该目录的真实连接数不一致。这时用户应该回答
Yes
或Y
来改正连接数。 -
自由块表不一致
fsck
查出未分配块数与超级块中所给出的自由块表不一致。这时用户应该回答
Yes
或Y
来修正超级块。从上面的出错信息和处理方法可以发现,对于
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
之类的命令来确定文件的类型,如果是数据文件,可以用 more
或 vi
命令来查看,如果是二进制文件,可以用 dbx
命令来调试或者试着执行它(注意它可能是一个具有破坏性的程序),知道文件或目录的作用之后,可以对其进行改名。
如果用户不允许 fsck
把这些孤立的文件或目录找回来,那么 fsck
命令就会破坏这些文件或目录,彻底丢失这些文件或目录,用户或系统管理员永远也无法找回它们。
关于 fsck
得结果输出:
当系统启动的时候会使用 fsck
对文件系统进行扫描,并相应的报出扫描结果。
例如: dev/rdsk/c0t0d0s7 stable
等。
后面是Fs的状态。其中,
clean
表示文件系统 umount
后无人用,
stable
表示文件系统用过,但却是完整的,好的。
而出一大堆的话,还有什么 fragment % 什么的的那都表示文件系统上有乱的地方,那么就应该进入系统后使用 fsck
来整理。
当系统的状态是 clean
, stable
和 logging
的状态的时候 fsck
不运行。
在非法关机后(各种原因),再次启动的时候会有很多的情况,上面说的是一种情况,再厉害一些是系统只能进入但用户状态,最厉害的是连单用户的状态都无法进入(肯定是 /
和 /usr
区有问题。这是因为 fsck
对 /
区的扫描无法通过的话,系统当然无法启动,而 fsck
调用的一些函数库又在 /usr
上。。。。)
此外,在一个已经安装好了的文件系统上运行的 fsck
命令产生不可靠的结果。
文件
/usr/sbin/fsck
包含 fsck
命令。
/etc/filesystems
列出已知的文件系统并且定义它们的特征。
/var/spool/mail/*
包含虚拟文件系统类型的描述。
/usr/bin/from
包含当系统启动的时候运行的命令(包括 fsck
命令)。
网友评论