Назад | Перейти на главную страницу

Можно ли расширить устройство данных пула Thin Provision, установленного устройством сопоставления?

TL; DR:

Как я могу расширить тонкий пул, если я использую не LVM, а сам Device Mapper?

Подробная версия:

Насколько мне известно, когда мы создаем тонкий пул dmsetup, мы можем установить low_water_mark;

как только водяной знак будет достигнут, будет отправлено событие dmevent, и демон-страж сразу сможет расширить пул.

Однако мне не удалось найти способ выполнить такую ​​задачу тривиальным образом; и я понятия не имею, как этого можно было достичь.

Кроме того, я копаюсь в 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: драйверы / md / dm-thin.c # L3246-L3292

ссылка-2: драйверы / md / dm-thin-metadata.c # L617-L621

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