第11章 EXT2文件系统
Linux一直使用EXT2作为默认文件系统。EXT3是EXT2的扩展,增加了一个日志文件,它将文件系统的变更记录在日志中,日志可在文件系统崩溃时更快地从错误中恢复。EXT4则增加了磁盘块的分配,块编号为48位,它分配连续的磁盘块区(区段)。
11.1 EXT2文件系统数据结构
通过mkfs创建虚拟磁盘
在Linux下,命令
mke2fs [-b blksize -N ninodes] device nblocks
创建一个由nblocks个块(块大小为blksize字节)和ninodes个索引节点的文件系统。
11.2 虚拟磁盘布局
下面是磁盘块的内容:
Block#0:引导块,文件系统不使用它,用于容纳从磁盘引导操作系统的引导程序。
Block#1:超级块,用于容纳关于整个文件系统的信息。
Block#2:块组描述符块,EXT2将磁盘分成几个组(每组8192块),每组用一个块组描述符结构体描述。
Block#8:块位图,用来表示某种项的位序列。
Block#9:索引节点位图,用来代表一个文件的数据结构。
Block#10:索引节点,每个文件都用一个128字节(EXT4的是256字节)的独特索引节点结构体表示。
直接块:i_block[0]至i_block[11]指向直接磁盘块
间接块:i_block[12]指向一个包含256个块编号的磁盘块
双重间接块:i_block[13]指向一个指向256个块的块
重间接块:i_block[14],对于“小型”EXT2文件系统可以忽略
数据块:紧跟在索引节点后面的文件存储数据块
目录条目:包含dir_entry结构,可扩充
11.3 邮差算法
Linear_address LA = N*block + house;
Block_address BA = (LA / N , LA % N);
注意:只有从0开始计数时,转换才有效。
- C语言中的Test-Set-Clear位
在C语言程序中,最小的可寻址单元时一个字符或字节。
*将索引节点号转换为磁盘上的索引节点
在EXT2文件系统中,每个文件都有一个唯一的索引节点结构。每个磁盘块包含:
INODES_PER_BLOCK = BLOCK_SIZE/sizeof(INODE)
标签:EXT2,编程,文件系统,索引,Unix,Linux,磁盘,节点,Block
From: https://www.cnblogs.com/weihehahaha/p/16751139.html