1. 磁盘布局

  • Superblock(超级块)
  • 位于文件系统的起始位置,保存文件系统的整体信息,如文件系统的大小、块大小、inode数量等。例如,在创建ext4文件系统时,超级块会记录文件系统的UUID、版本号、创建时间等信息。
  • 为了提高可靠性,超级块会在多个区块组中备份,防止某个备份损坏导致整个文件系统无法恢复。
  • Group descriptors(组符)
  • 每个区块组的信息,包括该组的inode数量、块数量、空闲块数量等。
  • Block bitmap(块位图)
  • 用于记录每个数据块的使用情况,1表示已使用,0表示空闲。
  • Inode bitmap(索引节点位图)
  • 记录每个inode的使用情况,1表示已使用,0表示空闲。
  • Inode table(索引节点表)
  • 存储文件和目录的元数据,如文件的大小、权限、创建时间、修改时间等。每个文件或目录都有一个对应的inode。
  • Directory Entries(目录项)
  • 存储文件名和对应的inode编号,用于在目录中查找文件。
  • 2. 文件操作原理

  • 文件创建
  • 当创建一个文件时,文件系统会在inode位图中找到一个空闲的inode,在块位图中找到足够的空闲块来存储文件数据。然后更新inode表、目录项等相关信息。
  • 文件读取
  • 通过目录项找到文件的inode编号,然后从inode表中读取文件的元数据,根据元数据中的块指针找到文件的数据块。
  • 文件删除
  • 将文件对应的inode位图和块位图中的相应位设置为空闲,删除目录项中的记录,但文件数据块中的数据不会立即清除,而是在后续的磁盘空间分配中被覆盖。
  • 二、Linux ext4文件系统的性能特点

    1. 支持大容量

  • ext4文件系统能够支持最大1 EB(1 exabyte)的文件系统大小,单个文件大小在Red Hat Enterprise Linux 7中最大可支持16 TB,文件系统最多支持50 TB。
  • 2. 高性能

  • 更快的文件操作
  • 包括更快的文件创建、删除和文件系统检查等操作。例如,在创建文件时,ext4的分配方式改进使得写入性能提高;删除文件时,ext4的extent特性可以快速删除大文件。
  • 延迟分配
  • 写数据时不会马上分配磁盘空间,而是等待一段时间,允许合并和重新排序写操作,以获得更好的磁盘性能。但在小文件很多的情况下可能造成磁盘碎片增多。
  • 多块分配
  • 一次性分配多个连续的数据块,减少了磁盘寻道时间,提高了大文件的读写性能。
  • 持久预分配
  • 提前为文件预留磁盘空间,适用于需要连续磁盘空间的应用场景,如视频编辑等。
  • 3. 可靠性增强

  • 日志校验
  • 增加了更多的日志类型,如延迟分配日志、多块分配日志等,在系统崩溃后可以通过日志快速恢复文件系统的一致性。
  • 支持在线文件系统检查和碎片整理
  • 可以在不卸载文件系统的情况下进行检查和碎片整理,提高了文件系统的可用性和性能。
  • 4. 加密和压缩功能

    Linux ext4:高效稳定的文件系统探秘

  • ext4文件系统增加了文件系统级别的加密和压缩功能,提高了数据的安全性和存储效率。
  • 三、Linux ext4文件系统的稳定性

  • ext4文件系统通过日志功能增强了可靠性和稳定性。日志记录了文件系统的操作,在系统崩溃或意外断电后,可以通过日志恢复文件系统的状态,减少数据丢失的风险。
  • 四、Linux ext4文件系统的应用场景

  • 对性能、可靠性和扩展性要求较高的场景
  • 如数据库服务器、邮件服务器、文件共享服务器等。这些场景需要处理大量的文件和目录,ext4的高性能和可靠性能够满足需求。
  • 需要高度保护数据安全和存储效率的场景
  • 如金融、医疗、等领域。ext4的加密和压缩功能可以保护数据安全并提高存储效率。
  • 需要在线文件系统检查和碎片整理的场景
  • 如云计算、虚拟化等环境。ext4支持在线操作,不会影响系统的正常运行。