AIX中的fsck详解

阅读更多

在AIX系统中fsck命令的用途
当执行fsck 命令时,fsck 命令如果发现存在孤立的文件或目录,这些孤立的文件或目录对于系统管理员或用户来说将无法访问。因为它与它的上级目录失去了关联,如果用户允许fsck 重新把它们找回来的话,fsck 命令就会把这些孤立的文件或目录放在文件系统的/lost+found 目录下,并用各自的i-node 号来命名,以便用户查找自己需要的文件。Lost+found 目录通过它的英文含义我们都可以知道,它是一个失物认领处。
因此当某个用户发现自己丢失了某个文件,可以在执行fsck 之后到/lost+found 目录下去查找,这时通过文件名已无法辨认出文件的作用,只能用file 之类的命令来确定文件的类型。如果是数据文件,可以用morevi 命令来查看,如果是二进制文件,可以用dbx 命令来调试或者试着执行它(注意它可能是一个具有破坏性的程序),知道文件或目录的作用之后,可以对其进行改名。

如果用户不允许fsck 把这些孤立的文件或目录找回来,那么fsck 命令就会破坏这些文件或目录,彻底丢失这些文件或目录,用户或系统管理员永远也无法找回它们。
语法
fsck [ -n ] [ -p ] [ -y ] [ -dBlockNumber ] [ -f ] [ -ii-NodeNumber ] [ -o Options ] [ -tFile ] [ -V VfsName ] [ FileSystem1 - FileSystem2 ... ]
描述
注意: 在出现系统故障之后,总是运行 fsck 命令。矫正的动作也许会导致某些数据的丢失。对于每一个一致性的矫正,缺省的操作就是等待操作员输入 yes 或者 no。如果对于已经受到影响的文件系统您没有写的许可,那么无论您的实际响应是什么,fsck 命令缺省的动作都是 no。
注:
    对于一个已经安装好了的文件系统,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 命令,以 /、/usr、/var、/tmp 文件系统中的 -f 和 -p 标志指定。如果没有成功的在这些文件系统之一执行 fsck 命令,系统不会引导。在这样的系统引导之前,从可删除的介质引导并进行维护工作将会被需要。
如果 fsck 命令成功的在/、/usr、/var 和 /tmp中运行, 正常的系统初始化将会继续进行。在正常的系统初始化过程中,fsck 命令同 -f 和 -p 标志一同指定,从/ etc/rc 文件中运行。这个命令序列检查所有的文件系统,在其中check属性设成了 True( check=true)。如果 fsck 命令从 /etc/rc 文件中执行,命令不能保证文件系统的连贯性,系统初始化继续进行。任何不连贯文件系统的安装也许会失败。安装失败也许会导致系统不完全的初始化,即部分文件系统不能正确初始化(笔者浅见)。
注:
在缺省情况下/、/usr、/var 和 /tmp 文件系统在/etc/filesystem 节的 check属性被设成了 False( check=false)。属性被设成了 False 是由于下列原因:
    引导过程在/、/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 命令传递逗号分隔的选项。这些选项被认为是文件系统的实现细节,除了下面目前为了所有文件系统而当前被支持的选项:
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
    这个命令检查在 /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 命令)。

fsck的数据灾难解决方案

[症状]
1、无法MOUNT分区;
2、大量文件、目录丢失,根目录下生成/LOST+FOUND文件夹,里面有大量#XXXXXX类的文件和目录;
3、FSCK很快报错完成;
4、FSCK执行时,有大量提示,如修改节点、清0节点等操作
[应急方案]
1、如遇提示FSCK时,请小心。如果可能,请尽快断开系统,UMOUNT所有分区。
2、必需执行FSCK时,先做准备工作,方法一:可事先用dd命令将所涉及到的分区输出到另外的存储体上(最好不要在出错的存储体本身上做dd) 命令大致结构可如: dd if=/dev/sda0 of=/dev/sdb0 .....
3、必需执行FSCK时,先做准备工作,方法二:将整个AIX存储体挂载到虚拟机环境,将LINUX存储体设为Nonpersisten模式,再执行,执行过后,如果数据完好,应尽快通过FTP等方式拷贝出来。
4、必需执行FSCK时,先做准备工作,方法三:将整个AIX存储体挂载到其他系统上(如WINDOWS),做好镜像后再做FSCK。
5、如上面几种方式均因条件等原因无法实施,必须执行时,可小心观察FSCK的执行提示(关掉-a)如果发现有提示节点错误需更正或清0、节点描述文件大小不正确等信息,应停止执行FSCK。
6、因恢复需要参考很多信息,因尽可能保持系统不工作状态,至少不得再次MOUNT分区(即便不做任何读写操作,也会因系统的工作原理不断降低数据恢复的可能性,增加数据恢复的难度)
7、寻求专业数据恢复公司帮助

参考至:http://www.linuxdiyf.com/viewarticle.php?id=79315
           http://www.kuqin.com/aixcmds/aixcmds2/fsck.htm
           http://www.cnw.com.cn/weekly/htm2006/20061219_49157.shtml
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:[email protected]

你可能感兴趣的:(fsck,AIX,nodenumber,工作)