深入了解Linux的标准文件系统(Ext2/Ext3/Ext4)

嘿,说起Ext2 、Ext3 、Ext4 ,它们其实是最古老的Linux文件系统。
当时我就纳闷了,这些东西到底是什么?后来我才知道,它们其实是Linux扩展文件系统(ExtFS)的三个核心成员,而且都是基于inode和block来设计的。

Inode就像每个文件的一张“身份证”,记录着文件的权限、属性以及被屏蔽的数据。
块用于存储文件内容。
每个块的容量是固定的,要么是1 K,要么是2 K,要么是4 K。
这取决于你格式化时如何设置。

然后是元数据。
这个东西就像一个大管家,负责维护文件系统的状态。
例如,超级块记录了文件系统的一般信息,例如inode和块的总数、使用情况和剩余空间,就像文件系统的“主控制台”。
这东西一旦坏了,就很难修复了。

还有一个blockgroup,它将文件系统划分为若干个块组,每个组都有自己的备份inode、块和超级块。
Blockbitmap和inodebitmap类似于块查找表和inode查找表,记录块和内部令牌的使用状态,并管理它们的分配和回收。

说到Ext2 、Ext3 、Ext4 的发展,各有各的特点。
Ext2 是第二代扩展文件系统,不具有日志功能。
如果发生断电,数据可能会损坏。
Ext3 在Ext2 的基础上增加了日志记录功能,提高了可靠性,并向下兼容Ext2 至于Ext4 ,则更强一些。
它提供扩展记录、延迟分配和多块分配等技术,并支持文件系统和更大的文件。
它是Ext家族中最成熟的版本。

优点是格式化后可以直接使用,不需要动态配置,兼容性很强。
至于限制,磁盘容量越大,格式化时间越长; Ext2 没有日志功能,因此数据安全性比较低。
因此,CentOS7 .x及更高版本默认采用XFS文件系统,以提高海量存储性能。

实用命令方面,查看系统支持的文件系统,可以使用 ls -l /lib/modules/$(uname-r)/kernel/fs 或 cat /proc/filesystems。
要列出格式化的设备,请使用 blkid。
查看文件系统详细信息 dumpe2 fs/dev/vda1 通过魔术签名 0xEF5 3 可以识别为 Ext2 /Ext3

浅析Linux标准的文件系统(Ext2/Ext3/Ext4)

Ext2 /Ext3 /Ext4 是标准的 Linux 文件系统。

Ext2 是第二代文件系统,它使用inode来管理文件元数据和数据块指针。

Ext3 在 Ext2 的基础上添加了日志,以提高崩溃恢复能力。

Ext4 是Ext3 的改进版本,支持更大的文件系统和性能优化。

inode存储文件权限、属性和数据块号,每个文件一个inode。

块存储文件的内容,Ext2 支持1 k、2 k和4 k大小。

超级块记录一般文件系统信息,例如索引节点/块的总量。

blockgroup以块组的方式管理文件系统,方便管理。

blockbitmap 记录块使用状态,inodebitmap 记录 inode 使用状态。
数组描述符描述任何块数组信息。

使用stat查看文件状态,df-i查看inode使用情况,df查看磁盘容量,du查看目录文件容量。

Ext的优点是Linux广泛支持,格式化后可以直接使用。

缺点是磁盘大时格式化速度慢,对于大文件系统不如xfs高效。

Ext2 没有录音功能,损坏后数据可能会丢失。

Ext3 /Ext4 有寄存器,但受到传统设计限制,例如固定块大小。

Ext4 的最大文件系统为1 6 TB或3 2 TB,最大文件可能小于理论值。

inode 计数系统查找文件并块存储文件数据。

不适当的块大小会浪费磁盘空间。

当文件很大时使用多级交叉指针。

对于许多用户来说,Ext 系列仍然是可靠且高效的选择。