【Bluestore】BlueStore源码分析之对象IO

LExtent

Extent是对象内的基本数据管理单元,数据压缩、数据校验、数据共享等功能都是基于Extent粒度实现的。这里的Extent是对象内的,并不是磁盘内的,所以我们称为lextent,和磁盘内的pextent以示区分。

struct Extent {
    // 对象内逻辑偏移,不需要块对齐。
    uint32_t logical_offset = 0;
    
    // 逻辑段长度,不需要块对齐。
    uint32_t length = 0;
    
    // 当logical_offset是块对齐时,blob_offset始终为0;
    // 不是块对齐时,将逻辑段内的数据通过Blob映射到磁盘物理段会产生物理段内的偏移称为blob_offset。
    uint32_t blob_offset = 0;
}

logical_offset、length、blob_offset关系如下图:

 

posted @ 2021-12-08 16:44  苏格拉底的落泪  阅读(173)  评论(0编辑  收藏  举报