Linux ext2/ext3文件系统

Linux最传统的磁盘文件系统(filesystem)使用的是ext2,所以要了解文件系统就得要由ext2开始。

一、文件系统特性

磁盘分区完毕后还需要进行格式化,之后操作系统才能够使用这个分区。这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。传统的磁盘与文件系统的应用中,一个分区誻只能够被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个分区。

操作系统的文件数据除文件内容外,通常还有非常多的属性,Linux中的文件权限(rxw)与文件属性(所有者,群组、时间参数等)。文件系统通常会将这两部分数据分别存放在不同的块,权限与属性放置到inode中,至于实际数据则放置到data block块中。另外还有一个超级块(super block)会记录整个文件系统的的整体信息,包括inode与block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。

inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码。

block:实际记录文件的内容,若文件太大时,会占用多个block。

由于每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码。因此,如果能找到文件的inode的话,那么自然就会知道这个文件所放置数据的block号码,也就能够读出该文件的实际数据。

如图,假设某一个文件的权限与属性数据放置到inode 4号下(小方格)而这个inode记录了文件数据的实际放置点为2,7,13,15这4个block号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一下子将4个block内容读出来。

二、Linux的ext2文件系统

文件系统一开始就将inode与block规划好了,除非重新格式化(或者利用resize2fs等命令更改文件系统大小)否则inode与block固定后就不再变动。为了方便管理,ext2文件系统在格式化时基本上是区分为多个块组的。每个块组都有独立的inode/block/super block系统。如下图所示:

文件系统最前面有一个启动扇区,这个启动扇区可以安装引导装载程序,这样我们就能够将不同的引导装载程序安装到个别的文件系统最前端,而不用覆盖整块硬盘唯一的MBR,这样也才能制作出多重引导的环境。

*data block:用来放置文件内容的地方,在ext2文件系统中所支持的block的大小有1KB,2KB,4KB,在格式化时大小就固定了,每个block内最多只能放置一个文件的数据,如果文件大于一个block的大小,则一个文件会占用多个block数量,若文件小于block,则该block的剩余空间就不能够再被使用了。block的大小而产生的ext2文件系统限制如下:

*inode table(inode 表格)

inode记录的文件数据至少有:

1、该文件的访问模式;(rwx)

2、该文件的所有者与组(ower/group);

3、该文件的大小;

4、该文件创建或状态改变的时间(ctime);

5、最近一次读的时间(atime);

6、最近修改的时间(mtime);

7、该文件的特性的标志(flag);

8、该文件真正内容的指向(pointer);

而有这么强大功能的inode的大小均固定为每个128B。inode除了文件权限属性记录区域外,还有12个直接,1个间接,一个双间接与一个三间接记录区。12个直接指向号码的对照,这12个记录就能够直接取得block号码,至于所谓的间接就是再拿一个block来当作block号码的记录区,如果文件太大,就会使用间接的block来记录编号。同理,如果文件持续长大,那么就复用所谓的双间接,第一个仅再指出下一个记录编号的block在哪里,实际记录在第二个block当中。依此类推,三间接就是复用第三层block来记录编号。如下图所示:

*Super block:

Super block是非常重要的,因为文件系统的基本信息都写在这里,一个文件系统应该仅有一个super block而已。它记录的信息主要有:

1、block与inode总量;

2、未使用与已使用的inode、block数量;

3、block与inode的大小;

4、文件系统的挂载时间、最近一次写入数据的时间,最近一次检验磁盘的时间等文件系统的相关信息;

5、一个validbit数值,若此文件系统已挂载,则validbit为0,若未挂载,则validbit为1;

*File system Description(文件系统描述说明)

这个区段可以描述每个block group的开始与结束的号码,以及说明每个区段分别介于哪一个block号码之间。可以用dumpe2fs来查看。

*block bitmap(块对照表)

通过block bitmap可以知道哪些block是空的,因此我们的系统就能够很快速地找到可以使用的空间来处置文件。同样,如果你删除某些文件时,那么那些文件原本占用的block号码就得要释放出来,此时在block bitmap当中相对应到该block号码的标志就得要修改成为“未使用”。

*inode bitmap(inode对照表)

与block bitmap相似。

三、与目录树的关系

1、目录:在Linux下的ext2文件系统新建一个目录时,ext2会分配一个inode与至少一块block给该目录。inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;而block则是记录在这个目录下的文件名与该文件名占用的inode号码数据。

2、文件:在Linux下的ext2文件系统新建一个文件时,ext2会分配一个inode与相对于该文件大小的block数量给该文件。注意,如果文件太大,block的数量还要加上间接,双间接和三间接指向所指向的block。

3、由上述可知,inode本身并不记录文件名,文件名的记录是在目录的block当中。当我们要读取某个文件进,就务必会经过目录的inode与block,然后才能够找到那个待读取文件的inode号码,最终才会读到正确的文件的block内的数据。由于目录树是由根目录开始读起,因此系统通过挂载的信息可以找到挂载点的inode号码,此时就能够得到根目录的inode内容,并依据该inode读取根目录的block内的文件名数据,再一层层地往下读到正确的文件名。

四、ext3文件系统

为了避免文件系统不一致的情况发生,在文件系统当中规划出一个块,该块专门记录写入或修订文件时的步骤,也就是加入了日志文件系统。这就是ext3文件系统,它是ext2文件系统的升级版。

五、挂载点的意义

每个文件系统都有独立的inode、block、super block等信息,这个文件系统要能够链接到目录树才能被我们使用。将文件系统与目录树结合的操作我们称为挂载。挂载点一定是目录,该目录为进入该文件系统的入口,必须要“挂载”到目录树后,才能够使用该文件系统。

时间: 2024-10-11 12:47:07

Linux ext2/ext3文件系统的相关文章

Linux ext2/ext3文件系统详解

转载: Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘中的位置等信息.一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应.系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号. linux文件系统将文件索引节点号和文件名同时保存在目录中.所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目

Linux EXT2 文件系统

磁盘是用来储文件的,但是必须先把磁盘格式化为某种格式的文件系统,才能存储文件.文件系统的目的就是组织和管理磁盘中的文件.在 Linux 系统中,最长见的是 ext2 系列的文件系统.其早期版本为 ext2,后来又发展出 ext3 和 ext4.ext3 和 ext4 虽然对 ext2 进行了增强,但是其核心设计并没有发生变化,所以我们仍是以较老的 ext2 作为演示对象. 基本结构 Ext2 文件系统在格式化的时候一般会包含多个区块群组(blockgroup).Ext2 格式化后有点像下面这样:

ext3文件系统基础

http://blog.csdn.net/haiross/article/category/1488205/2 block size: 是文件系统最小的单位,Ext2/Ext3/Ext4 的区块大小可以是 1024.2048 或 4096 字节. (Compaq Alpha 可 以使用 8192 字节区块) mke2fs 一般缺省会把小于 512 MiB 的文件系统使用 1024 字节区块格式化,等于或大于 512 MiB 的文件系统使用 4096 字节区块.(实际是视乎 mke2fs.conf

Linux系统结构以及文件系统

Linux系统结构                                                                          Linux系统一般情况下是由3个主要的部分组成的:kernel  (内核).命令解释器(Shell或者其他的操作环境).application(应用程序或者称为实用工具) 1.Linux系统的kernel 内核是Linux系统的心脏,是运行程序和磁盘管理以及打印机等硬件设备的核心程序.操作环境向用户提供一个操作界面,它从用户的那里接

linux中关于文件系统的简要介绍和一般操作

创建文件系统--分区格式化    格式化:        低级格式化:            划分磁道        高级格式化:            创建文件系统,按照某种特定的标准,将整个分区划分为大小相同的若干小的逻辑编址单元,每个这样的单元,称为块(Block): 划分块的标准:                在Linux的文件系统中,主要的块划分标准就是:每个块包括2^1或2^2或2^3个扇区:即块大小可以是:1024Byte,2048Byte或者4096Byte: 注意:     

Linux磁盘分区管理--ext2和ext3文件系统逻辑结构分析

本文出自 "Pavel" 博客,请务必保留此出处http://pavel86.blog.51cto.com/8349178/1688277 Linux系统支持多种文件系统, 文件系统间的区别在于: 不同文件系统对同一块磁盘分区存储文件的结构不同. 举例来说相当于某些土豪买了500平住房: 有些工作狂会隔出1间卧室,1间客厅,1间厨房和5个工作间; 有些美食家会隔出3间卧室,3间客厅,4间厨房等等. 文件系统就相当于对于分割出不同性能的区域用于使用各自不同的方式存储数据. Ext(ext

linux分区之ext2,ext3,ext4,gpt

2013-07-10 12:00:24 标签:ext3 gpt 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wushank.blog.51cto.com/3489095/1244191 一.各分区简单介绍: 1.EXT是Linux系统下的一种磁盘分区格式,等同于XP下的FAT/FAT16/FAT32,大家知道安卓是基于Linux系统开发的手机系统,那么同样的就有这些分区格式,平时我们所说的开启a2sd功能,就是在SD卡中分

Linux - EXT2文件系统

文件系统特性 举例来说,windows 98 以前的微软操作系统主要利用的文件系统是 FAT (或 FAT16),windows 2000 以后的版本有所谓的 NTFS 文件系统,至于 Linux 的正统文件系统则为 Ext2 (Linux second extended file system, ext2fs)这一个.此外,在默认的情况下,windows 操作系统是不会认识 Linux 的 Ext2 的. 那么文件系统是如何运行的呢?这与操作系统的文件数据有关.较新的操作系统的文件数据除了文件

EXT2与EXT3文件系统两者的差别

其实这两种文件系统的格式是完全相同的,只是 ext3文件系统会在硬盘分区的最后面留出一块磁盘空间来存放日志(Journal)记录. 在 ext2格式的文件系统上,当要向硬盘中写入数据时,系统并不是立即将这些数据写到硬盘上,而是先将这些数据写到数据缓冲区中(内存),当数据缓冲区写满时,这些数据才会被写到硬盘中.(硬盘.U盘.光盘.SD卡等存储设备的数据发生了丢失,使用迷你兔数据恢复软件(minitool)进行恢复找回.) 在 ext3格式的文件系统上,当要向硬盘中写入数据时,其内部的操作过程如下: