ext2磁盘布局

简介: 概述           本篇博客主要关注ext2文件系统的磁盘布局,即ext2会在格式化时将磁盘划分成什么样子。   ext2磁盘布局           任何Ext2分区中的第一个块从不受Ext2文件系统的管理,因为这一块是为分区的引导扇区所保留的。

概述

 
        本篇博客主要关注ext2文件系统的磁盘布局,即ext2会在格式化时将磁盘划分成什么样子。
 

ext2磁盘布局

 

        任何Ext2分区中的第一个块从不受Ext2文件系统的管理,因为这一块是为分区的引导扇区所保留的。Ext2分区的其余部分被分割成块组(block group),每个块组的分布图如下图1所示。正如你从图中所看到的,一些数据结构正好可以放在一块中,而另一些可能需要更多的块。在Ext2文件系统中的所有块组大小相同并被顺序存放,因此,内核可以从块组的整数索引很容易地得到磁盘中一个块组的位置。

图1 ext2 磁盘布局

 

由于内核尽可能地把属于同一个文件的数据块存放在同一块组中,所以块组可有效地提高文件连续性。每个块组均包含如下方面的信息:

文件系统超级块的拷贝;

文件系统所有块组描述符;

块组数据块位图;

inode表位图;

inode表;

块组内的数据块。

        事实上,只有块组0中所包含超级块和组描述符才由内核使用,而其余的超级块和组描述符都保持不变,内核甚至不考虑它们。当e2fsck程序对Ext2文件系统的状态执行一致性检查时,就引用存放在块组0中的超级块和组描述符,然后将它们拷贝到其他所有的块组中。如果出现数据损坏,并且块组0中的主超级块和主描述符变为无效,那么,系统管理员就可以命令e2fsck引用存放在某个块组(除了第一个块组)中的超级块和组描述符的旧拷贝。通常情况下,这些多余的拷贝所存放的信息足以让e2fsck把Ext2分区带回到一个一致的状态。

        那么每个ext2文件系统到底有多少块组呢?这取决于分区的大小和块的大小。其主要限制在于块位图,块位图用来标识一个块组中块的占用和空闲状况,而且ext2块位图只占据一个单独的数据块。所以,每组中至多可包含8×b个块,b是以字节为单位的块大小。例如,一个块大小是 1024 Byte,那么,一个块的位图就有8192个位,正好就对应8192个块。因此,块组的总数大约是c/8×b,这里c是指分区所包含的总块组数。

        举例说明,让我们考虑一下32GB的Ext2分区,换算成KB就是33554432,假定块大小为4KB。在这种情况下,每个4KB的块位图描述32KB个数据块,即128MB。因此,最多需要33554432 / 4096 * 32 = 256个块组。显然,块越大,块组数越小。

        inode表用于存储块组内文件的inode信息,而且只存储该块组内存储文件的inode,我们知道inode是一个文件元数据的全部,是文件身份的象征,没有inode,文件在磁盘上就是不可见的。ext2文件系统格式化时,块组内的inode表空间也一并分配好,也就意味着该块组内能存储多少个文件是确定的,那么这个值是如何确定的呢,依稀记得mkfs.ext2在格式化时,会将块组存储文件的平均大小设定为16KB,这样,知道了块组大小和文件平均大小就可以计算块组内存储文件数量了。

        inode位图用来管理块组内空闲inode分配情况。

        数据块用来存储块组内的文件数据,使用位图方式管理空闲数据块。

        至此,我们已经大概了解了ext2文件系统的磁盘布局,ext2这种布局方式是源自FFS的设计思想:尽量将文件的数据元数据连续存放,同时尽量将相关文件连续存放,所谓的相关文件诸如相同目录下的所有文件,ext2的块组思想就是连续的最好体现,关于ext2的文件创建和数据块分配后续还会仔细研究。

 

相关文章
|
2月前
|
存储 Linux
btrfs中文件系统扩展属性xattr的实现
介绍Linux中文件系统扩展属性xattr特性的基本概念,btrfs文件系统的基本结构以及对xattr特性的实现方式。
60 1
btrfs中文件系统扩展属性xattr的实现
|
11月前
7.1.5 EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能
7.1.5 EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能
80 0
|
11月前
|
编解码 缓存 Linux
Qt5文件及磁盘处理
读写文本文件的方法通常有两种:一种是直接利用传统的QFile类方法;另一 种是利用更为方便的QTextStream类方法。
79 0
|
存储 Linux 索引
Ext 文件系统
Ext 文件系统
118 0
Ext 文件系统
|
Ubuntu Linux 虚拟化
ubuntu虚拟机扩容+sda1显示fat32、ext4在extends分区、调整大小按钮为灰色怎么办
ubuntu虚拟机扩容+sda1显示fat32、ext4在extends分区、调整大小按钮为灰色怎么办
320 0
ubuntu虚拟机扩容+sda1显示fat32、ext4在extends分区、调整大小按钮为灰色怎么办
系统诊断小技巧(9):如何从Ext3或者Ext4文件系统推断分区位置
扩容失败或者系统重启后分区丢失,需要文件系统推定分区位置。我们这里给出一个自动化的工具
2237 0
|
监控 数据安全/隐私保护 索引
第十八章--Ext2和Ext3文件系统
一、Ext2的一般特征         但在一些情况下,已经在Ext2的索引节点中为这些特性引入新的字段。最重要的一些特点如下:         块片(block fragmentation):系统管理员对磁盘的访问通常选择较大的块,因为计算机应用程序常常处理大文件。
1295 0
|
Shell Linux 存储
磁盘格式化/磁盘挂载/手动增加swap空间
  4.5/4.6 磁盘格式化  4.7/4.8 磁盘挂载 4.9 手动增加swap空间     磁盘格式化  查看centos7支持的文件系统格式 cat  /etc/filesystem,centos7默认的文件系统格式xfs     ce...
1543 0