Ext4 Design

Ext4 Design

原文

ext4的设计

  • Ext3: 许多用户的默认文件系统,以可靠性和兼容性闻名,不影响现有的ext3用户,稳定的
  • 向上扩展以支持更大的文件系统:存储的发展,增加的数据存储需求,只有需要大的文件系统的用户迁移到ext4
  • 需要磁盘格式化的特性:纳秒级的时间戳,快速extent分配,预分配
  • Reliability wrt on-disk corruption
  • 64位的JBD分割
  • 前向兼容性/可升级性
  • 多块分配
  • 延迟分配
  • 1级配额支持(正在实现中)
  • 大分配块(还没实现,正在设计阶段)

Ext4 Extents

Ext4文件系统的核心是对extents的支持。一个extent是文件中一些在逻辑上和底层块设备上相邻的块。同时期的文件系统尽了很大的努力去为文件分配连续的块去使得I/O操作更快,所以文件中的块在逻辑上是相邻的,在物理上也是相邻的。以extents存储文件的结构会很大程度压缩文件的元数据,因为一个单一的extent可以取代很多数量的块指针。元数据的减少也使得访问更快。

在磁盘上的数据结构

/*
 * 这是extent在磁盘上的结构.
 * 它用于树的底部.
 */
struct ext4_extent {
        __le32  ee_block;       /* 第一个逻辑块 extent 覆盖 */
        __le16  ee_len;         /* number of blocks covered by extent */
        __le16  ee_start_hi;    /* 物理块的高16位 */
        __le32  ee_start_lo;    /* 物理块的低32位 */
};

/*
 * 这是索引在磁盘上的结构.
 * 它用在所有的层次中除了底部.
 */
struct ext4_extent_idx {
        __le32  ei_block;       /* index covers logical blocks from 'block' */
        __le32  ei_leaf_lo;     /* pointer to the physical block of the next *
                                 * level. leaf or next index could be there */
        __le16  ei_leaf_hi;     /* 物理块的高16位 */
        __u16   ei_unused;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值