- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ext2文件系统分析V0.1
EXT2 文件系统分析
张书宁
1 Linux 文件系统概述
1.1 简介
文件系统是解决如何在存储设备上存储数据的一套方法,包括存储布局、文件命名、空间管理、安全
控制等。Linux 操作系统支持很多现代的流行文件系统,其中 ext2、ext3 和 ReiserFS 最普遍。ext2 文
件系统是伴随着 linux 一起发展起来的,在 ex2 的基础上增加日志就是 ext3,这两个文件系统可以很容
易的转换而不必重新格式化存储介质,它们是 linux 特有的。ReiserFS 可以说是后起之秀了,最初它不
是用于 linux,所以对 linux 来说它是一个泊来品。ReiserFS 采用了一个非常先进的新颖算法,最新的 4
版本真正做到了文件系统操作的原子性(类似数据库事务操作的原子性),据官方报道,ReiserFS“原
子性”算法优于现代数据库的 “原子性”算法,做到了空间和时间复杂度的双优!一个文件系统能做到
这个份上,我算是彻底服了:-)。
现代 Linux 系统继续采用了早期(1992 年前)发展的虚拟文件系统(Virtual File System,简写为
VFS)理念,VFS 是一个介于用户和实际文件系统之间,为用户提供了一个统一的编程接口,尽管处于其
之下的各种文件系统类型千差万别,但对最终用户来说却是一样的。例如当用户张三输入命令 cd /data
后,他并没有意识到自己刚从 ext3 文件系统进入 ReiserFS 文件系统,他仍然使用命令 ls –l 列出当前
目录下的所有文件,而且显示格式也是一样,但是幕后英雄VFS 可忙坏了,它不得不启动一个算法找到
ReiserFS 文件系统提供的接口函数并调用它们,要知道 ReiserFS 提供的一套函数可不同于 ext3 的那一
套。得益于 VFS,其他文件系统可以采用 “热插拔”的非常简便的方式加入或退出Linux 操作系统,例如
当第一次mount 一个文件系统 A 时,相应地就把该文件系统对应的模块装载到内核(假设没有被直接编
译进内核),当最后把文件系统 A 对应的设备 umount 时,对应的模块被卸载出去。
1.2 原理
LINUX 的文件系统可以追溯到八十年代末的Minix 文件系统,而Minix 文件系统具有几个明显的缺点:
文件系统不能超过 64M,目录只能存放固定数目的文件,文件名长度不能超过 14 个字符,文件尺寸小于
64M。之后由于继续沿袭传统技术,尽管linux 的标准文件系统依次经历了VFS(1992 年前)、ext(1992 年)、
ext2(1993 年)和最新的 ext3 这一系列文件系统的传种接代,但 “基因”没变,只不过新一代都是改进前
一代的不足,或者加入一些新东东而已。但由于 Linux 几乎在一开始就引入 VFS 的概念(我个人认为非
常英明^O^),Linux 对其他第三方文件系统都是包容的,目前几乎所有先进的文件系统都支持,其中著
名的 ReiserFS 已经成了Novell 的 SuSe Linux 发行版的缺省文件系统,但也由于 IT 界最臭名昭著的四
字经 “向后兼容”的要求,今日各种 linux 发行版中存在过多地包容早已经落伍的文件系统的现象,比
如 Minix、FAT 等,但对于一个富有理论和经验的系统管理员来说,所有的这些 “累赘”都可以在弹指间
一一化解。
下面我们先看看一块物理硬盘是如何分区的。三个主要的参数是柱面数、磁头数和每磁道扇区数,起
始编号分别为 0、0 和 1,0 柱面 0 磁头 1 扇区是主引导分区,上面存放引导代码和四个主分区表(如果
一个物理硬盘多于 4 个,那么就放在扩展分区),0 柱面 0 磁头上的其他扇区保留,真正的分区是从 0 柱
面 1 磁头 1 扇区开始的。在 linux 中,用/dev/had、/dev/hdb、/dev/sda、/dev/sdc 等表示一个物理磁
盘。实验:
查看硬盘物理参数:hdparm /dev/sda; hdparm –i /dev/had(IDE 硬盘) ;
读入分区表信息:dd if=/dev/sda of=/tmp/mbr bs=1 count=64 skip=446 ;
查看主分区表信息:od –t x1 mar ;
备份主引导区信息:dd of=/dev/sda if=/dev/sda bs=512 count=1 seek=1 ;
1.2.1 VFS
自从邓小平南巡讲话那年之前VFS 投胎于 linux 以来(Mr. Lin
文档评论(0)