是否可以扩展由设备映射器设置的精简configuration池的数据设备?

TL; DR:

如果我不是直接使用LVM,而是直接使用设备映射器,那么如何扩展精简池?

详细版本:

据我所知,当我们通过dmsetup创build一个精简池时,我们可以设置一个low_water_mark;

一旦达到水印,就会发送一个dmevent,守卫守护进程可以立即扩展池。

但是,我无法find办法,以微不足道的方式执行这样的任务; 我不知道如何实现。

此外,我深入研究了dm-thin.c并发现了一个名为maybe_resize_data_dev的函数r = dm_pool_resize_data_dev(pool->pmd, data_size)如果剩余空间不足,将会通过r = dm_pool_resize_data_dev(pool->pmd, data_size)放大数据设备。

然而与此同时,Device Mapper本身阻止你通过validation数据设备的状态来做到这一点:

if (le32_to_cpu(disk_super->data_block_size) != pmd->data_block_size) { /* Verify the data block size hasn't changed */ if (le32_to_cpu(disk_super->data_block_size) != pmd->data_block_size) { DMERR("changing the data block size (from %u to %llu) is not supported", le32_to_cpu(disk_super->data_block_size), (unsigned long long)pmd->data_block_size); r = -EINVAL; goto bad_unlock_sblock; }

在提交9aec862中修补,标题为dm thin metadata: do not allow the data block size to change

这些代码是从drivers/md/dm-thin.c (ref-1)和drivers/md/dm-thin-metadata.c (ref-2)

而更让我困惑的是,我碰巧知道,如果池是由LVM实用程序创build的, 即lvextend -L+100M vg001/mythinpool (来自Red Hat出版的指南 ),这让我想知道如何做到这一点。

ref-1:drivers / md / dm-thin.c#L3246-L3292

ref-2:drivers / md / dm-thin-metadata.c#L617-L621

对不起,我不能发布两个以上的链接,因为我太noob。