荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Chair (银发之射手), 信区: Linux
标  题: Re: fsck-文件系统检查工具介绍
发信站: 荔园晨风BBS站 (Mon May 21 22:10:13 2001) , 转信


 这个也不错 ,e2fsk -f /dev/hda2

              e2fsk -S /dev/xxx

【 在 Chair (银发之射手) 的大作中提到: 】
:
:  ft!原来说那么多都没说怎么用,
:
:     最简单的,fsck -y /dev/xxxx , 还不行的话就man一下看看
:
: 【 在 Chair (银发之射手) 的大作中提到: 】
: :
: :  以后断电或者给人冷启动了LINUX就看这里吧
: :
: : 1. 简单介绍
: :
: :   使用Window每次非正常退出系统都会招来scandisk的一顿狂扫;Linux也不例外,
只不过
: : 它调用的是fsck程序来检查文件系统。作为一名系统管理员,当你发现文件系统发生故
障时
: : ,你会怎么做?当然是手动地执行fsck来检查文件系统。所以本文就是教大家如何正确
地使
: : 用并且使用好fsck工具的。
: :
: : 2. 文件系统
: :
: : 2.1. 超级数据块(Superblock)
: :
: :   一个文件系统总是由它的superblock来定义的,所以创建文件系统的同时
superblock也
: : 被创建。它包含了文件系统的一些基本参数,例如文件系统中的数据块(data blocks)
数和最
: : 大文件数等等。因为superblock包含了一些临界数据,以便于进行灾难性的恢复。缺省
的su
: : perblock总是固定地位于文件系统所在磁盘分区的开始处。Superblock还有一个备份叫
做冗
: : 余superblock,就像DOS中的文件分配表的副本。冗余superblock和缺省的superblock
不一样
: : ,它被分散地保存在磁盘分区上。
: :
: :   一个特定的文件被看成是目录或包含了指向它的内容的指针。每一个文件都有一个
和文
: : 件节点(inode)相关联的描述符。一个文件节点包含了文件的属性,例如文件的所有者
、最后
: : 修改时间、最后访问时间和指向此文件数据块的指针等等。假设一个文件的前12个数据
块被
: : 文件节点结构中的变量直接指向,那么文件节点结构可能还包含着指向间接文件数据块
的指
: : 针以便将来扩充文件的内容。其实文件节点结构中包含了3个级别的数据块指针,一个
文件有
: : 4096个字节的数据块,则第一级间接数据块包含了1024个字节,第二级间接数据块也包
含了
: : 1024个字节,并且被第一级间接数据块指向;同理,第二级间接数据块也指向第三级大
小为
: : 1024字节的间接数据块。其实在实际应用中第三级间接数据块很少被使用,因为一般没
有那
: : 么大的文件。文件系统的数据块大小保存在superblock中,这就使在同一系统中同时访
问不
: : 同数据块大小的文件系统成为可能。
: :
: :   最后再说明一下,文件数据块的大小是在创建文件系统时给定的,并且在以后的使
用中
: : 无法被改变。
: :
: : 2.2. 概要信息(Summary information)
: :
: :   概要信息和superblock相关联,并且是唯一关联;当文件系统被改变时,它就随之
记录
: : 这种改变,记录文件系统中的数据块数目、碎片数目、文件节点和目录等信息。
: :
: : 2.3. 柱面组群(Cylinder groups)
: :
: :   文件系统将磁盘分为一个或多个被称为"柱面组群"的区域,它包含了一个和多个连
续的
: : 磁盘柱面。每个柱面组群指示了文件的节点槽,一个数据块映象(block map)描述了在
柱面组
: : 群中所有可用的数据块,并且概要信息描述了在柱面组群中数据块的使用情况。当文件
系统
: : 生成时,柱面组群中的文件节点数就被确定了下来。目前一般的规则是在磁盘上每
2048个字
: : 节被分配入一个文件节点。在每个柱面组群的开始处都记录有组群信息,一旦磁盘发生
错误
: : 时将组群信息丢失。
: : 2.4. 磁盘碎片(Fragments)
: :
: :   为了防止存储小文件时浪费磁盘空间,文件系统允许将一个数据块分割成2、4或8
份。其
: : 中最小的份额时磁盘的簇大小,通常为512个字节。每一个同柱面组群相关联的数据块
映象记
: : 录着磁盘空间的碎片程度。
: :
: : 2.5. 文件系统的更新
: :
: :   在每天的日常工作中,我们创建、删除数以百计的文件。操作系统为此产生了一系
列的
: : 文件系统更新工作。当数据被写入磁盘时,产生了一个连续的文件系统,同时文件系统
更新
: : 所有的临界信息。当用户改变文件系统时,比如执行write时,要写入的数据被复制入
系统内
: : 核的被称作in-core的缓冲区中,所以这种数据更新不是同步的,只有当write函数执行
完毕
: : ,并且返回时,数据才真正地被写入磁盘。同时用户也可以手工地执行sync命令来迫使
数据
: : 写入磁盘。另外,每当内核的in-core缓冲区被用作新用途时,系统也会使用
/etc/update来
: : 调用sync将数据写入磁盘。
: :
: : 3. 修复破坏的文件系统
: :
: :   有很多方式可以使文件系统遭到破坏,最通常的是不正常关机和一些硬件错误。原
因是
: : 在关闭系统并且挂起CPU之前没有执行sync来将数据写入磁盘,导致文件系统不完整。
另外,
: : 硬件错误也是很致命的,特别是磁盘的物理损伤,将导致数据永久性地丢失。
: :
: : 3.1. 检测和修复被破坏的文件系统
: :
: :   平时,fsck不进行交互式执行,而是每当不正常退出系统后,开机时自动执行。这
个功
: : 能是在fsck进行交互式执行时的一个子集。所以本文下面的介绍都是基于交互式执行的
,并
: : 且所有可能发生的错误都会被捕捉到。在此模式下运行,我们可以根据错误的类型来采
取相
: : 应的修复措施。对于一个静态的文件系统,fsck检查它的结构完整性。在下面的介绍里
,我
: : 们着重讨论发现柱面组群、文件节点、间接文件节点和数据块的错误和各种可能采取的
修复
: : 措施。
: :
: : 3.2.超级数据块检查
: :
: :   常见的文件系统破坏形式是概要信息中关于超级数据块的信息破坏。概要信息很容
易被
: : 破坏,因为对文件系统的任何改变都会导致概要信息的修改,并且也很容易在非正常退
出时
: : 被破坏。对超级数据块的检查主要是针对文件系统的长度、文件节点数目、空闲数据块
统计
: : 和空闲文件节点统计等;文件系统的长度必须大于被超级数据块使用的数据块数目的总
和和
: : 被文件节点列表所使用的数据块数目的总和。对fsck来说,文件系统的长度和它的布局
信息
: : 是最为重要的。
: :
: : 3.3. 空闲数据块检查
: :
: :   Fsck检查所有在柱面组群的数据块映象中被标识为未使用的数据块,也即空闲数据
块。
: : Fsck合计空闲数据块的数目,并且把它加上被文件节点使用的数据块的数目,检查这个
结果
: : 是否等于文件系统中所有数据块的总和。如果fsck发现数据块分配映象有错时,它会自
动重
: : 建它。概要信息中和超级数据块相联系的信息包含了在文件系统中所有空闲数据块的数
目。
: : Fsck将它检查所得到的空闲数据块数目和上面概要信息中的空闲数据块数目进行比较,
如果
: : 两者不一致,fsck就将实际检查得到的空闲数据块覆盖概要信息中的空闲数据块信息。
对于
: : 空闲文件节点的检查也会作同样的处理。
: :
: : 3.4. 文件节点状态检查
: :
: :   一个单独的文件节点一般不会出错,然而,由于在文件系统中有大量的文件节点处
入活
: : 动状态,所以会有一小部分文件节点会发生错误。Fsck从第二个文件节点开始检查(文
件节
: : 点0被标记为"未使用"、文件节点1被留作后用)直至最后一个文件节点。每一个文件节
点都
: : 被进行格式、类型、链接数、重复数据块、坏数据块和节点大小的检查。
: :
: :   每个文件节点都有一个模式定义,它指示了文件节点的类型和分配状态,这些类型
有:
: : 常规节点、目录节点、符号连接节点、特殊块设备节点、特殊字符设备节点和套接字节
点;
: : 而其分配状态有:未分配、已分配和非分配三种状态,其中非分配状态的节点指示了这
个节
: : 点具有不正确的节点格式,这种情况常常是由于非法数据的写入而造成的,对于这种情
况,
: : fsck会清除此文件节点的内容。
: :
: : 3.5. 文件节点链接
: :
: :   每一个文件节点都包含有对于目录项的总链接数。Fsck为了校核一个文件节点的链
接数
: : ,它从根目录开始扫描,并且依次递减目录项中的链接数,最后比较所得链接数和文件
节点
: : 包含的链接数是否一致,如果不一致则fsck会将实际的链接数保存到文件节点中。如果
发现
: : 链接数为零,则说明此目录项是被丢弃了的,于是fsck会将此目录项存储到
lost+found目录
: : 项中。每一个文件节点都保存有一个列表或是指向该列表的指针,此列表包含了此节点
所使
: : 用的数据块。由于间接数据块是被文件节点所拥有的,所以如果它被破坏也直接地影响
到文
: : 件节点。Fsck检查一个文件节点所拥有数据块是否存在于"已分配数据块"列表中,如果
不是
: : ,则查看它是否存在于"重复块(duplicate blocks)"列表中,如果都不是,则将这个数
据块
: : 的块号加入到"已分配数据块"列表中。另外由于没有足够的信息来表明文件节点所指向
的数
: : 据块内容的正确性,所以如果文件内容被改变则无法被探测到。如果遇到硬件故障使得
数据
: : 块内容改变,此时fsck同时清除数据块和文件节点。Fsck检查一个文件节点包含的所有
数据
: : 块号对应的数据块,如果这个数据块号小于文件系统中最小的数据块号或者大于最大的
数据
: : 块号则将它置为坏块。坏块通常是由硬件故障引起的,如果一个文件节点包含有坏块号
,则
: : fsck将会清除此节点。
: :
: : 3.6. 文件结点数据大小
: :
: :   每个文件节点都有它所包含数据块的总数,这个总是是已分配数据块数目和间接数
据块
: : 数目的总和。Fsck就比较它计算所得到的数据块总数和文件节点中的数据块总数,看两
者是
: : 否一致,如果不一致,那么fsck将修复它。另外,每一个文件节点都包含有一个32位的
长度
: : 字段,它表示了文件大小的字节描述。
: :
: : 3.7. 检查与文件节点相关联的数据
: :
: :   一个文件节点可以和三种形式的数据块相关联。它们是:无格式数据块(Plain
data bl
: : ocks)、符号链接数据块(symbolic link data blocks)和目录数据块(directory data
bloc
: : ks)。
: :
: :   其中,无格式数据块包含了文件的内容;符号链接数据块包含了所指向文件的路径
;而
: : 目录数据块包含了目录的结构信息。
: : Fsck只能检查目录数据块的有效性,它检查一系列的目录错误,它们包括目录节点号所
指向
: : 的未分配文件节点、目录节点号是否大于文件系统中所允许的最大目录节点号、关于目
录项
: : "."及".."的节点号是否有错和一个目录数据块是否附在文件系统之上等错误。如果一
个目录
: : 节点的类型是"未分配节点"时,fsck将会删除整个目录节点和它所包含的目录数据块,
这通
: : 常是由硬件故障引起的。当一个非法数据写入目录数据块时,会引起目录节点跑到文件
系统
: : 节点列表之外,这种情况,fsck将删除这个目录节点。另外,对于目录项"."的数据块
号必须
: : 时目录节点数据块列表中的第一项,因为它相当于这个目录节点,如果不是这样,
fsck会修
: : 正它并使它成为此目录节点数据块列表中的第一数据块。
: :
: : 3.8. 文件系统的连通性
: :
: :   Fsck检查文件系统的连通性,检查目录项是否都被链入文件系统,如果不是则将它
们存
: : 入lost+found目录中,这种情况通常发生于硬件故障。
: :
: :
: :
:
:


--

        假使龙城飞将在,

            不叫胡虏渡关山。
※ 来源:.荔园晨风BBS站WWW bbs.szu.edu.cn. [FROM: 210.21.196.38]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店