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

Как изменить размер изображений lxc / lxd, если я использую бэкэнд LVM?

Я использую LXD несколько лет, и я рад использовать эту платформу в своей тестовой среде. Но несколько дней назад мне не удалось установить Microsoft SQL server 2017. Причина в том, что я использовал бэкэнд ZFS по умолчанию.

Хорошо, я проверил, нужен ли ext4. Мне нужно использовать LVM. Нет проблем, я создал «Группу томов» и пометил использовать эту группу в LXD. Но ... Первая проблема, которую я видел, что LXD создает логические тома не более 10GB.

После этой команды

lxc init ubuntu:16.04 container2

Я получил этот том:

Disk /dev/mapper/mainVG-containers_container2: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes

Я пытался добавить размер через lvextend:
lvextend -L +10G /dev/mapper/mainVG-containers_container2

Но я получил следующую ошибку:

Логический том container_container2 не найден в группе томов 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.

Как видите, в этом случае я могу успешно изменить размер логического тома.

Может я чего-то не знаю?
Может надо что-то добавить в какую-нибудь группу безопасности? Не могли бы вы мне помочь ?
Если вы знаете другой способ изменить размер моего логического тома, я буду рад услышать его от вас. Спасибо

И есть еще вариант. Вы можете попросить LXD изменить размер за вас.

Но он не справится с изменением размера тонкого пула (если он недостаточно велик).

root@hawk:~# lxc config set CONTAINER root size 100GB

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

А также есть ограничение LVM, если есть снимки с этого тома, вы не можете изменить его размер, пока они не будут удалены.

Вы можете просто расширить LV с помощью lvextend. Вот пример.

Вы начинаете с загрузки pool0 с хранилищем 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.

Вы можете не обращать внимания на ошибку, если это то, что вам нужно, но если вы действительно хотите расширить thinpool, теперь вам нужно сделать:

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

Затем проверьте fs:

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

И, наконец, измените размер fs:

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.