fsck [-aANPrRsTV][-t <文件系统类型>][文件系统...]node
(有待实践)ide
【功能】函数
检查文件系统并尝试修复错误。spa
补充说明:当文件系统发生错误四化,可用fsck指令尝试加以修复。命令行
【举例】调试
*检查 msdos 档案系统的 /dev/hda5 是否正常,若是有异常便自动修复:: 索引
$fsck -t msdos -a /dev/hda5内存
此指令可与 /etc/fstab 相互参考操做来加以了解。it
*检查全部的缺省文件系统:table
$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: 补救自由块列表
对每一个阶段进行检查,常见的一些错误:
1) 移去一个没有相关文件的目录入口
这时用户能够回答Yes或Y来删除该目录入口。
2) 重链接一个已分配但不能访问的文件:
fsck找到了一个已分配的I节点,但却不可访问(该节点没与任何目录链接),这时通常对fsck的"RECONNECT?"回答Yes,即把该I节点链接到lost+found目录下,文件名便是I节点号,以后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。
3) 链接数调整ADJUST
在交互方式下,fsck若发现链接数(与原记录)不一致,将询问用户采起何种行动,本例发现一目录的I节点链接数与该目录的真实链接数不一致。
这时用户应该回答Yes或Y来改正链接数。
4) 自由块表不一致
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 命令)。