没有合适的资源?快使用搜索试试~ 我知道了~
文件系统检查工具fsck研究以及dosfsck代码分析
4星 · 超过85%的资源 需积分: 35 67 下载量 38 浏览量
2013-01-10
21:00:07
上传
评论 1
收藏 116KB PDF 举报
温馨提示
试读
8页
文件系统检查工具fsck研究以及dosfsck代码分析 linux下的dosfsck
资源推荐
资源详情
资源评论
文件系统检查工具—fsck 研究
第一部分 理论
导致一个文件系统 corrupt 的原因有可能有几种,而最经常的就是非正常关机流程和硬
件的错误造成的。
造成 corrupt 的主要原因就是在停止 CPU 之前没有同步系统数据。如果非正常的启动没
有被检测到,比如没有检查文件系统的一致性,没有修复不一致的数据,允许使用一个 corrupt
的文件系统将是一种灾难。另外,一部分硬件有可能在任何时间出错,如在磁盘上的一个坏
的块,或者是磁盘控制器没有响应等。
一般情况下 fsck 会在非交互的方式下运行。这种方式只会修正由 unclean halt 所引起的
corrupt。这些操作一般是在交互方式下运行操作的子集。这份文档中我们默认 fsck 是在交
互方式下运行的,所有可能的错误都会遇到。在这种方式下发现不一致的情况,则会将其汇
报给操作者选择修正的方式。
在执行 fsck 时,文件系统必须处于一种 quiescent state,因为 fsck 是一个 multi-pass 的
程序。
以下部分分别讨论发现数据不一致的方法,修正 cylinder group blocks,inodes, indirect
blocks 和包含有目录项的 data blocks 的方法。
1. Super block checking
在一个文件系统中最经常 corrupt 掉的是 super block 中的汇总信息。原因是这些信息在
文件系统的 block 或者 inode 的每项改动,都需要在汇总信息中做相应的修改。因此,经常
会 corrupt(汇总信息与实际的文件系统信息不一致)。
Super block 的一致性检查包括文件系统大小,inode 数量,空闲的 block 块,空闲的 inode
数量等。文件系统的大小必须大于 super block 和 inode 使用的 block 数的和。文件系统的大
小和布局信息是对 fsck 而言至关重要的信息。但并没有一种可以实际检查这些大小,因为
他们是由 newfs 静态决定的,fsck 可以检查这些大小在一个合理的范围之内。如果 fsck 在默
认的 super block 中的静态的参数中检查到 corrupt,它就会要求提供备用的 super block 所存
放的地址。
2. Free block checking
Fsck 会检查所有在 cylinder group block maps (注:cylinder group 即对应于 fs 的 partions。)
中标记为 free 的块,即没有被文件占用的块。Fsck 会检查 free 的块的数量与 inode 中声明使
用的块的数量的和是否与整个文件系统的所有块数相等。
如果在 block allocation maps 中有任何错误,fsck 将根据其计算的 allocated blocks 进行重
新组建 block allocation maps。
Super block 中也存有所有 free 块的数量信息,fsck 会把自己检查的结果与 super block 中
的信息进行比较。如果这两个数不等,则 fsck 会将检查得到的结果更新到 super block 中。
对文件系统中的 free inode 的数量,也会进行类似的处理。
3. Checking the inode state
资源评论
- 「已注销」2016-10-04是我想要的
- scutwyz2013-11-10好东西,但不是我想要的
- lbiboy2013-09-27还行,有点启发,但不是我想要的
- FlexFan2016-05-18有点作用,不过确实不是我想要的
jugg123456qaz
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功