第9章 Ext文件系统族 (1)

avatar
作者
猴君
阅读量:0

目录

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尽力防止磁盘碎片:

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

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!