如果我使用 LVM 后端,如何调整 lxc/lxd 图像大小?

如果我使用 LVM 后端,如何调整 lxc/lxd 图像大小?

我使用 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

但我收到以下错误:

在卷组 mainVG 中未找到逻辑卷 containers_container2

好的,我尝试在没有 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.

如您所见,在这种情况下,我可以成功调整逻辑卷的大小。

也许我有些不懂?
也许我必须在某个安全组中添加一些东西?你能帮我吗?
如果你知道其他调整逻辑卷大小的方法,我会很高兴听到你的消息。谢谢

答案1

还有另一种选择。您可以让 LXD 为您调整大小。

但它不会为您处理精简池的大小调整(如果它不够大)。

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

请记住,在大多数情况下,您需要重新启动容器。

此外,LVM 还有一个限制,如果该卷有快照,则您无法调整其大小,直到将其删除。

答案2

您可以使用 lvextend 简单地扩展 LV。以下是示例。

首先为 pool0 添加 600GB 存储空间,为 containers_mirrors 卷添加 10GB 存储空间。

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                                                                                               

然后扩展卷(containers_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

然后检查 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.

答案3

# lxc config device set CONTAINER_NAME  root size 60GB

相关内容