Ext3

  • "日志文件系统"它会将整个磁盘的写入动作完整记录在磁盘的某个区域上, 以便有需要时可以回溯追踪
  • 只支持32000个子目录
  • 使用32位空间记录块数量和 inode 数量
  • 数据块分配器每次只能分配一个4KB的块, 如果写一个100MB的文件就要调用25600次数据块分配器

Ext4

  • 文件系统容量达到1EB, 而文件容量则达到16TB
  • 理论上支持无限数量的子目录
  • 使用64位空间记录块数量和 inode 数量
  • 支持一次调用分配多个数据块
  • 尽可能地延迟分配数据块, 直到文件在缓冲中写完才开始分配数据块并写入磁盘, 这样就能优化整个文件的数据块分配, 显著提升性能
  • 允许关闭日志, 以便某些有特殊需求的用户可以借此提升性能
  • 支持在线碎片整理, 并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理
  • 支持纳秒级时间戳, Ext4给时间范围增加了两个位, 从而让时间寿命在延长500年, 时间戳支持的日期到2514年4月25日

XFS

  • 最大文件系统18EB, 最大文件9EB
  • 采用优化算法, 日志记录对整体文件操作影响非常小, XFS查询与分配存储空间非常快
  • 能以接近裸设备I/O的性能存储数据, 在单个文件系统的测试中, 其吞吐量最高可达7GB每秒, 对单个文件的读写操作, 其吞吐量可达4GB每秒
  • 当意想不到的宕机发生, 文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
  • 支持在线碎片整理
  • 允许在创建文件系统时指定块的大小, 从 512 字节到 64KB, 以适应专门的用途

1Eib = 1024 (Pib) = 1024^2 (Tib) = 1024^3 (Gib)
= 1024^4 (Mib) =1024^5 (Kib) = 1024^6 (Byte) = 8 x 1024^6 (bit)

1Eb = 1000 (Pb) =1000^2 (Tb) = 1000^3 (Gb)
= 1000^4 (Mb) = 1000^5 (Kb) = 1000^6 (Byte) = 8 x 1000^6 (bit)

日志文件系统:

  • superblock: 记载 inode 与 block 的使用情况信息

  • inode: 和文件一一对应, 记载了文件的属性 (元数据), 每个inode大小为128 Bytes

  • block: 存储了文件的实际数据, 一个block只能存储单个文件的数据 (默认大小为4K)

  • 总结: inode限制了文件的存储数量, block限制文件的存储大小

Linux文件目录结构

02_file_system.jpg