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 项目中找到