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