Можно ли расширить устройство данных пула Thin Provision, установленного устройством отображения?
TL;DR:
Как я могу расширить Thin-Pool, если я не использую LVM, а непосредственно Device Mapper?
Подробная версия:
Насколько я знаю, когда мы создаем тонкий пул dmsetup
мы можем установить low_water_mark;
Как только будет достигнут водяной знак, будет отправлено сообщение, и демон-охранник может сразу же расширить пул.
Однако я не смог найти способ выполнить такую задачу тривиальным способом; и я понятия не имею, как этого можно достичь.
Кроме того, я копаюсь в dm-thin.c
и узнайте, что есть функция с именем maybe_resize_data_dev
, который увеличит данные устройства на r = dm_pool_resize_data_dev(pool->pmd, data_size)
если оставшегося места недостаточно.
Тем не менее, в то же время Device Mapper не позволяет вам сделать это, проверяя состояние устройства данных:
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
(см-2)
И что меня больше смущает, так это то, что я случайно узнал, что это можно сделать, если пул создается утилитами LVM; т.е. 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
Извините, я не могу опубликовать более двух ссылок, потому что я слишком нуб.