我知道,使用 dm thin 现在可以把元数据与快照本身分开存储。
有人知道是否有可能创建不产生相同 I/O 开销的元数据快照吗?我感兴趣的是哪些块发生了变化,而不是旧块的内容。
我提出这个问题的主要动机是我想知道是否有使用类似 lvmsync 的备份解决方案(https://github.com/mpalmer/lvmsync) - 但不会产生任何重大的开销。
文档中关于如何实现这一点的信息有点少,我的想法是创建一个基于 /dev/null 或类似物的精简池,在写入时默默丢弃。
答案1
设备映射器等效于/dev/null
零目标 ( dmsetup create --table '0 <nsectors> zero' myzeroes
)。我认为您可以将其用作精简池的数据设备;然后对原始卷进行快照(作为外部源)以跟踪对其所做的更改。所有这些都是在 LVM 之外完成的;您需要 DM 的完全灵活性,而 LVM 可以更方便、更安全地处理常见用例。
在以下机构的帮助下精简配置.txt:
dmsetup create --table "0 $nsectors zero" myzeroes
dmsetup create pool \
--table "0 $nsectors thin-pool $metadata_dev /dev/mapper/myzeroes \
$data_block_size $low_water_mark"
thinnum=0
dmsetup message /dev/mapper/pool 0 "create_thin $thinnum"
origsectors=$(blockdev --getsz /dev/myorigin)
dmsetup create snap \
--table "0 $origsectors thin /dev/mapper/pool $thinnum /dev/myorigin"