Как изменить размер изображений 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.
      # lxc config device set CONTAINER_NAME  root size 60GB
Другие вопросы по тегам