Chinaunix首页 | 论坛 | 博客
  • 博客访问: 393713
  • 博文数量: 273
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1430
  • 用 户 组: 普通用户
  • 注册时间: 2018-02-02 15:57
文章分类

全部博文(273)

文章存档

2018年(273)

我的朋友

分类: LINUX

2018-07-27 15:46:19

在先前关于Linux文件系统的文章中,我写了一份说明书去介绍Linux文件系统,里面有一些高级的概念,比如说,一切都是文件。我很想去深入地讨论更多EXT文件系统的特性的信息。所以,首先让我们来回答这个问题:什么是文件系统?一个文件系统应该遵循以下特点:

  1. 数据存储:文件系统主要的功能是结构化存储和取回数据。
  2. 命名空间:提供一套命名和组织的方法,就是命名和结构化数据的规则。
  3. 安全模型:一种访问控制的策略。
  4. API:系统操控文件系统对象的函数,就像操作文件夹和文件一样。
  5. 实现:一个实现以上功能的软件。

这篇文章集中与上面清单的第一项,还有探究元数据结构—-在EXT文件系统中提供数据存储的逻辑框架。

EXT 文件系统历史

虽然是为Linux编写的,但EXT文件系统起源于Minix操作系统,而Minix文件系统早在1987年首次发布,比Linux还早五年就已经发布了。如果我们查看EXT文件系统家族从其Minix根开始的历史和技术演变,就会更容易理解EXT4文件系统。

Minix

当编写原始Linux内核,Linus Torvalds需要一个文件系统,但是不想开发它。因此他简单的使用了Minix文件系统,这是 Andrew S. Tanenbaum开发的,而且是Tanenbaum 的Minix操作系统的一部分。Minix是类Unix操作系统,为教育使用而开发。它的代码开放使用,而且合理的授权给Torvalds,允许他将它用于Linux的初代版本。

Minix结构如下,其中大部分位于文件系统生成的分区中:

引导扇区(boot sector)安装于硬盘的第一个扇区。引导块(boot block)包含一个非常小的引导记录和一个分区表。

每一个分区中的第一个块是超级块(superblock),它包含了定义其他文件系统结构的元数据,并将它们定位在分配给分区的物理磁盘上。

节点位图块(inode bitmap block),它确定了哪个节点在使用以及哪个节点是空闲的。

节点(inodes),它们在磁盘上有它们自己的空间。每个节点包含了一个文件的信息,包括数据块的位置,即文件所属的区域。

区域位图(zone bitmap)跟踪记录数据区域的使用和释放。

数据区域(data zone),数据实际上存储的位置。

对于位图的两个类型来说,一个bit代表了一个特有的数据区域或者一个特有的节点。如果这个bit是0,这个区域或者节点是空闲的而且可供使用,但是如果这个bit是1,这个数据区域或者节点是在使用中的。


阅读(1116) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~