二、组织结构:



1、总体布局:



在Ext2、Ext3中,存储数据的结构是按“块”来组织的,而不是“扇区”。块的大小随文件系统的大小而有所不同(一般是512字节、1024字节等)。而一定数量的块又组成一个块组,每个块组的起始部分有多种多样的描述该块组各种属性的元数据结构(磁盘布局结构):

每一个分区的前两个扇区存放系统启动用的信息等,所以真正的文件系统是从第三个扇区开始算的。其实主要的结构包括超级块(并不是每一个组都有一个超级块,因为太浪费,系统一般用的也就是第一个而已,不过会在其他组做备份(稀疏超级块机制)),块组描述符(如其名字描述整个块组信息的,包括节点位图、节点表的位置等),块位图(记录空闲块和使用块等信息),节点位图(记录节点使用和空闲情况),节点表(一个节点标识一个文件,记录文件所有信息)和数据区(目录的数据区的内容是各个目录项,文件的数据区就是文件内容,所以目录、文件的存储方式都一样,在linux上一切皆文件)

2、文件存放原理:



 在ExtX系列文件系统中,文件由inode(节点,包含有文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。Ext2和Ext3文件系统采用三级间接块来存储数据块指针,并以块为单位分配空间。(等在下面看到inode的数据结构体里面的各项成员就更加清楚了)。



 如下图所示Direct Blocks里存的就是一个块号,那个块里就是数据区了,Indirect blocks就是间接指针的意思 ,double indirect就是二级间接,triple  indirect就是三级间接了···(这样设计也是想多存点数据,但跟Ext4比起来还是不够合理)



设备号更文件系统没有必然的联系,但事实上确实有联系的,因为文件系统必须存在一定物理介质上,
1,设备号只与设备有关,比如,一个设备是硬盘,它可以有几个逻辑分区,每个分区都有一个设备号,但一个分区上我可以放好几文件系统呀
2,文件系统可以有好几个超级块,如ext2,只不过平时只用一个

1. 主设备号和次设备号合起来才叫做设备号。因此bh, sb中包含主次设备号。
2. 通常一个分区只能放一个文件系统。不过有些虚拟文件系统可以放在文件系统中。例如现在Linux系统上的设备文件系统。但最好在初学时就认为一个分区只能存放一个文件系统。