第9章 Ext文件系统族 (1)
创始人
2024-09-26 07:26:19

目录

9.1 简介

9.2 Ext2文件系统

9.2.1 物理结构


本专栏文章将有70篇左右,欢迎+关注,查看后续文章。

9.1 简介

文件系统分类:

        FAT:Windows默认使用。

        Ext2/Ext3:Linux使用,优先使用Ext3。

Ext2:和VFS类似结构,性能高。

Ext3:Ext2基础上扩展了日志功能,用于系统奔溃时恢复。

传统:一个分区被格式化为一个文件系统。

新技术:LVM,一个分区可格式化为多个文件系统,也可多个分区合并为一个文件系统。

LVM:Logical Volume Manager,即逻辑卷管理器。

        可跨越多个物理磁盘存储。

        可动态扩展或缩减存储空间。

文件系统面临挑战:

        1. 磁盘空间碎片化:文件移动和新增文件时产生碎片,从而影响访问速度。

        2. 存储空间利用率:大量管理数据。

9.2 Ext2文件系统

Ext2开始成为强大的文件系统。

Ext2专注于高性能,设计目标:

        1. 支持可变块长(根据预期文件大小决定)

        2. 支持快速符号链接(若链接目标的路径很短时,存储在inode自身中)

        3. 增加扩展能力。升级到Ext3等版本时,无需重新格式化或加载硬盘。

        4. 奔溃后可恢复。用fsck工具修复。

        5. 可将文件标记不可改变,即使root也不能,如重要配置文件。

Ext2代码实现大约1w行,紧凑。

拓展

fsck:即 file system check。

        作用:可修复损坏的超级块、恢复丢失文件、删除不正确文件等。

        可检查并修复多种文件系统:如 Ext3、Ext4、JFS 等。

9.2.1 物理结构

文件系统存储最小单元:块(block),所以文件占用大小是整数倍的块长度。

        数据传输单元也为块。

块大小在格式化时确定。如:

        mkfs.ext2    -b  4096    /dev/sdd

                作用:在/dev/sdd分区中创建文件系统,其中块大小为4096B。

1. 结构概观

块组:Block Group。

Ext2 将一个分区被划分成多个块组。

Ext2 中有多个块组:

启动块:

        不能写文件系统数据。而是存储启动装载程序。

其余块组:

        存储文件系统的数据。

其中每一个块组细分为如下:

实际上,超级块只在某些块组中备份。

一个块组内分为:

1. 超级块:

        描述文件系统的信息。如:

                1. inode 总数与空闲量。

                2. block 总数与空闲量。

                3. 时间戳。

                4. 文件系统magic值等。

        

        每个块组都可备份超级块,实际中为节省存储空间,只使用第一个块组的超级块。

        Ext2 采用稀疏超级块技术:

                只是部分块组存储超级块信息。

2. 组描述符:

        即GDT,描述当前块组的信息,包括:

                1. 数据位图地址,inode 位图地址。

                2. inode 表地址,数据块地址。

                3. 空闲 inode 数,空闲数据块数。

3. 数据块位图 与 inode 位图:

        用每个 bit 位描述对应数据块和 inode 是否已用 /空闲。

4. inode表:

        包含该组块所有的 inode。即文件、目录的元数据。

5. 数据块:

        存储文件,如:

                常规文件:文件数据。

                目录文件:存储目录下的文件名和子目录。

                符号链接:路径名短则保存在inode ,如果较长则用数据块来保存。

注意:设备文件、FIFO 和 socket 等文件没有数据块,文件大小为 0。设备文件的主设备号和次设备号保存在 inode。

2. 间接

Ext2 技巧:

        将磁盘按块编号,inode 指定数据块所在编号。

当文件太大时,需要很多数据块,inode结构无法包含。怎么办?

        解决方法:使用间接块,间接存储inode的各个数据块块号。

而普通小文件,直接在inode中存储数据块地址。

文件越大大,所需间接更多。如:

        一次间接,二次间接,三次间接等。

间接越多,访问对应数据块越慢。

3. 文件系统碎片

碎片影响分为:

        写文件:无法分配连续数据块。

        读文件:不能连续读取,机械硬盘磁头寻道时间增长,读变慢。

Ext2尽力防止磁盘碎片:

        尽量让同一文件的数据块在同一块组中。

相关内容

热门资讯

未来三年销售目标突破千亿元!京... 上证报中国证券网讯(记者 刘暄)京东与荣耀4月2日签署战略合作协议,明确未来三年荣耀在京东全渠道销售...
我国科研人员发现99个新物种 我国科研人员发现99个昆虫新物种 为青藏高原生物多样性再添新证 4月1日,我国科研人员在国际动物分类...
兴源自动化取得电芯高效测漏设备... 国家知识产权局信息显示,惠州市兴源自动化设备有限公司取得一项名为“一种电芯高效测漏设备”的专利,授权...
量旋科技完成6亿元C+轮融资 ... 本报讯 (记者张敏)4月3日,深圳量旋科技有限公司(以下简称“量旋科技”)宣布完成6亿元C+轮融资。...
李云泽:推动构建与未来产业全生... 上证报中国证券网讯 据金融监管总局4月3日消息,4月1日,金融监管总局举办党委理论学习中心组集体(扩...