dm-era¶
简介¶
dm-era 是一个行为类似于线性目标的 Target。此外,它会跟踪在用户定义的时间段(称为“纪元”)内写入了哪些块。每个纪元 Target 实例都将当前纪元维护为一个单调递增的 32 位计数器。
用例包括为备份软件跟踪已更改的块,以及在回滚供应商快照后部分失效缓存内容以恢复缓存一致性。
构造函数¶
era <metadata dev> <origin dev> <block size>
元数据设备
用于存储持久元数据的快速设备
原始设备
用于存储可能更改的数据块的设备
块大小
原始数据设备的块大小,即 Target 跟踪的粒度
消息¶
所有 dm 消息都不带任何参数。
检查点¶
可能移动到一个新的纪元。您不应该假定纪元已递增。发送此消息后,您应该通过状态行检查当前纪元。
take_metadata_snap¶
创建元数据的克隆,以允许用户空间进程读取它。
drop_metadata_snap¶
删除元数据快照。
状态¶
<元数据块大小> <已用元数据块数>/<元数据块总数> <当前纪元> <持有的元数据根 | ‘-‘>
元数据块大小 |
每个元数据块的固定扇区块大小 |
已用元数据块数 |
已使用的元数据块数量 |
元数据块总数 |
元数据块总数量 |
当前纪元 |
当前纪元 |
持有的元数据根 |
元数据根的位置(以块为单位),该元数据根已被‘持有’以供用户空间读取访问。‘-’ 表示没有持有的根。 |
详细用例¶
在开发此 Target 时,回滚供应商快照时使缓存失效的场景是主要用例。
创建供应商快照¶
向 era Target 发送检查点消息
记录其状态行中的当前纪元
创建供应商快照(纪元和快照现在应永久关联)。
回滚到供应商快照¶
缓存进入直通模式(参见:dm-cache 在缓存中的文档)
回滚供应商存储
创建元数据快照
通过检查每个块的纪元来确定自快照创建以来哪些块已被写入
在缓存软件中使这些块失效
缓存返回回写/直写模式
内存使用¶
该 Target 使用位集来记录当前纪元中的写入。它还准备了一个备用位集,以便切换到新纪元。除此之外,它使用少量 4k 块来更新元数据。
(4 * nr_blocks) bytes + buffers
弹性¶
在对先前未写入的块执行写入操作之前,元数据会在磁盘上更新。因此,dm-era 不会受到电源故障等硬崩溃的影响。
用户空间工具¶
用户空间工具可在命名越来越不佳的 thin-provisioning-tools 项目中找到