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
Извините, я не могу разместить больше двух ссылок, потому что я слишком новичок.