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