Linux系统编程 第11章学习笔记

EXT2文件系统

磁盘是用来储文件的,但是必须先把磁盘格式化为某种格式的文件系统,才能存储文件。文件系统的目的就是组织和管理磁盘中的文件。在 Linux 系统中,最长见的是 ext2 系列的文件系统。其早期版本为 ext2,后来又发展出 ext3 和 ext4。ext3 和 ext4 虽然对 ext2 进行了增强,但是其核心设计并没有发生变化,所以我们仍是以较老的 ext2 作为演示对象。

基本结构:

 

 

 

Block

对于 ext2 文件系统来说,硬盘分区首先被分割为一个一个的逻辑块(Block),每个 Block 就是实际用来存储数据的单元,大小相同,Block 按照0,1,2,3 的顺序进行编号,第一个 Block 的编号为 0。ext2 文件系统支持的 Block 的大小有 1024 字节、2048 字节和 4096 字节,Block 的大小在创建文件系统的时候可以通过参数指定,如果不指定,则会从 /etc/mke2fs.conf 文件中读取对应的值。原则上,Block 的大小与数量在格式化后就不能够发生改变了,每个 Block 内最多只会存放一个文件的数据(即不会出现两个文件的数据被放入同一个 Block 的情况),如果文件大小超过了一个 Block 的 size,则会占用多个 Block 来存放文件,如果文件小于一个 Block 的 size,则这个 Block 剩余的空间就浪费掉了。

 

文件系统中存储的最小单元是块(block),一个块的大小是在格式化时确定的。启动块(Boot Block)的大小为1KB,由PC标准规定,用来存储磁盘分区信息和启动信息,任何文件系统都不能修改启动块。

启动块之后才是ext2文件系统的开始,ext2文件系统将整个分区划分成若干个同样大小的块组(Block Group)。

 

 

 

 

 

 

Block#1超级块,用于容纳整个文件系统的信息

一些重要字段:

 

 

 

Block#2块组描述符块,EXT2将磁盘块分成几个组,每个组有8192个块,磁盘上大小为32K,每组用一个块组描述符结构体来描述

 

 

 

Block#8块位图

Block#9索引节点位图

Block#10索引(开始)节点

 

索引节点

直接块:i_block[0] Mi_block[ll],指向直接磁盘块」

间接块:i_block[12]指向一个包含256个块编号(对于1KB BLKSIZE)的磁盘块,每 个块编号指向一个磁盘块。

双重间接块:i_block[13]指向一个指向256个块的块,每个块指向256个磁盘块。

三重间接块:i_block[14]是三重间接块。对于“小型” EXT2文件系统,可以忽略它。

 

数据块

 

posted @ 2022-10-19 10:46  20201202史婧怡  阅读(28)  评论(0编辑  收藏  举报