Как изменить размер изображений lxc/lxd, если я использую бэкэнд LVM?
Я использую LXD несколько лет, и я рад использовать эту платформу в моей среде тестирования. Но несколько дней назад я не смог установить Microsoft Sql server 2017. Причина была в том, что я использовал бэкэнд по умолчанию ZFS. Хорошо, я проверил, что если мне нужно ext4. Я должен использовать LVM. Нет проблем, я создал "Группу томов" и пометил для использования этой группы в LXD. Но... Первая проблема, которую я увидел, что LXD создает логические тома не более 10GB.
После этой команды
lxc init ubuntu:16.04 container2
я получил этот объем:
```Диск /dev/mapper/mainVG-container_container2: 10 ГиБ, 10737418240 байт, 20971520 секторов Единицы: секторы по 1 * 512 = 512 байт Размер сектора (логический / физический): 512 байт / 4096 байт Размер ввода / вывода (минимум) / оптимально): 65536 байт / 65536 байт
```Я пытался добавить размер с помощью lvextend
lvextend -L +10G /dev/mapper/mainVG-containers_container2
, но я получил следующую ошибку:Logical volume containers_container2 not found in volume group mainVG
Хорошо, я попытался создать логический том без LXD.
я сделал
lvcreate -n lv_data1 --size 12G mainVG
И я получил
Disk /dev/mapper/mainVG-lv_data1: 12 GiB, 12884901888 bytes, 25165824 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
И я сделал
lvextend -L +10G /dev/mapper/mainVG-lv_data1
Size of logical volume mainVG/lv_data1 changed from 12.00 GiB (3072 extents) to 22.00 GiB (5632 extents).
Logical volume mainVG/lv_data1 successfully resized.
Как вы можете видеть, в этом случае я могу успешно изменить размер моего логического тома.
Может я чего-то не знаю? Может быть, мне нужно добавить что-то в группу безопасности? Не могли бы вы мне помочь? Если вы знаете другой способ изменить размер моего логического тома, я буду рад услышать это от вас. Спасибо
3 ответа
И есть еще один вариант. Вы можете попросить LXD изменить размер за вас.
Но он не справится с изменением размера тонкого пула (если он недостаточно велик).
root@hawk:~# lxc config set CONTAINER root size 100GB
Имейте в виду, что в большинстве случаев вам необходимо перезапустить контейнер.
Кроме того, существует ограничение LVM, если есть снимки с этого тома, вы не можете изменить его размер, пока они не будут удалены.
Вы можете просто расширить LV с помощью lvextend. Вот пример.
Вы начинаете с создания пула 0 с хранилищем объемом 600 ГБ и тома container_mirrors с объемом хранилища 10 ГБ.
root@hawk:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
containers_lugbg main Vwi-a-tz-- 10.00g pool0 images_15 8.31
containers_mirrors main Vwi-a-tz-- 10.00g pool0 images_33 7.59
containers_ubuntu main Vwi-aotz-- 10.00g pool0 images_39 7.03
images_15 main Vwi-a-tz-- 10.00g pool0 6.10
images_33 main Vwi-a-tz-- 10.00g pool0 5.86
images_39 main Vwi-a-tz-- 10.00g pool0 6.22
pool0 main twi-aotz-- 600.00g 0.63 3.39
root main -wi-ao---- 40.00g
Затем вы расширяете объем (container_mirrors):
root@hawk:~# lvextend -L +800G main/containers_mirrors
WARNING: Sum of all thin volume sizes (880.00 GiB) exceeds the size of thin pool main/pool0 (600.00 GiB).
WARNING: You have not turned on protection against thin pools running out of space.
WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
Size of logical volume main/containers_mirrors changed from 10.00 GiB (2560 extents) to 810.00 GiB (207360 extents).
Logical volume main/containers_mirrors successfully resized.
Вы можете игнорировать ошибку, если это то, что вам нужно, но в случае, если вы действительно хотите расширить "тонкий пул", вам нужно сделать следующее:
root@hawk:~# lvextend -l +300G main/pool0
Invalid argument for --extents: +300G
Error during parsing of command line.
root@hawk:~# lvextend -L +300G main/pool0
Size of logical volume main/pool0_tdata changed from 600.00 GiB (153600 extents) to 900.00 GiB (230400 extents).
Logical volume main/pool0_tdata successfully resized.
Результат сейчас:
root@hawk:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
containers_lugbg main Vwi-a-tz-- 10.00g pool0 images_15 8.31
containers_mirrors main Vwi-a-tz-- 810.00g pool0 images_33 0.09
containers_ubuntu main Vwi-aotz-- 10.00g pool0 images_39 7.03
images_15 main Vwi-a-tz-- 10.00g pool0 6.10
images_33 main Vwi-a-tz-- 10.00g pool0 5.86
images_39 main Vwi-a-tz-- 10.00g pool0 6.22
pool0 main twi-aotz-- 900.00g 0.42 3.59
root main -wi-ao---- 40.00g
Наконец, вам нужно изменить размер файловой системы контейнера, что делается с помощью resize2fs. Для того, чтобы предотвратить любые проблемы, вы должны сначала остановить контейнер:
root@hawk:~# lxc stop mirrors
Тогда проверьте фс:
root@hawk:~# e2fsck -f /dev/main/containers_mirrors
e2fsck 1.45.0 (6-Mar-2019)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/main/containers_mirrors: 16531/655360 files (0.2% non-contiguous), 203696/2621440 blocks
И, наконец, изменить размер фс:
root@hawk:~# resize2fs /dev/main/containers_mirrors
resize2fs 1.45.0 (6-Mar-2019)
Resizing the filesystem on /dev/main/containers_mirrors to 212336640 (4k) blocks.
The filesystem on /dev/main/containers_mirrors is now 212336640 (4k) blocks long.