Можно ли расширить устройство данных пула 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

Извините, я не могу опубликовать более двух ссылок, потому что я слишком нуб.

0 ответов

Другие вопросы по тегам