这是我的问题的起源:
我在 VPS 上的 Ubuntu 22.04 上运行具有 LXD snap 版本的 Linux 容器。VPS 的根文件系统是 Ext4,没有附加存储。所以默认的 LXD 存储池是由dir选项创建的。
当我拍摄这些 LXC 的快照时,整个数据都是重复的——即如果容器是 6G,那么快照就会变成另一个 6G。
我认为如果它是 LVM 文件系统,快照将以不同的方式创建。
所以我的问题是:
- 可以做类似的事情
fallocate -l 16G /lvm.fs
,然后将其格式化为 LVM,挂载它并将其用作 LXD 的存储池吗?当然,如果可能的话,我该怎么做呢?
一些注意事项:
@larsks 提供的解决方案按预期工作!后来我发现,当我们在lxc storage create pool-name lvm
没有附加选项和参数的情况下使用时,它的作用几乎相同。在发布问题之前我没有对其进行测试,因为我认为lvm
强制驱动程序将需要使用单独的分区。
但是,在我看来,在这两种情况下,这种方法的弊端都远大于利弊,例如:
dir
与我们使用驱动程序的情况相比,写入速度降低了约 10% 。硬盘上没有剩余空间的情况很难恢复,即使过载数据位于
/tmp
...相反,当使用dir
驱动程序时,LXD防止消耗整个主机的文件系统空间,因此您的系统和容器仍在运行。这在我的 VPS 案例中非常方便。