我们的生产容器崩溃了,因为它的 LXC 存储池空间不足。
这是dh -h
从容器内部:
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 82G 78G 2.0G 98% /
这里来自主机系统的相同挂载:
/dev/loop0 82G 78G 2.0G 98% /var/lib/lxd/storage-pools/default
我记得一年前当我设置这个时,它问我 80GB 是否足够用于听起来不熟悉的东西,因为它没有说“容器磁盘大小”并说其他东西,我只是觉得我最好相信默认值选项。现在我知道这是磁盘空间限制。我现在如何提高这个限制?
此刻,我只是紧急清理了一些空间。主机实际上有 TB 的磁盘空间。
PS 很抱歉抱怨,但 LXC 的文档是我见过的最糟糕的文档之一。对于像我这样的用户来说,这没有任何意义。
PPS 我忘了我实际上使用的是 LXD,doh。lxc
我打字做任何事情的事实让我感到困惑。
更新: 直观地说,我认为这个命令可以调整存储池的大小:
# lxc storage set default size 200GB
但它失败了:
Error: The [size] properties cannot be changed for "btrfs" storage pools
有任何想法吗?
从 3.17 版开始,LXD 没有内置方法来调整 Btrfs 文件支持的存储池的大小,但这是我刚刚创建的解决方法:
在线成长
单线
根据需要,替换
default
为存储卷的名称和100G
新的所需大小:解释
将变量设置为
$STORAGE_POOL
存储池的名称。在您的情况下,它是default
:将变量设置为
$NEW_SIZE
您现在希望存储池的大小:该值是整数和可选单位(例如:10K 为 10*1024)。单位是 K、M、G、T、P、E、Z、Y(1024 的幂)或 KB、MB、...(1000 的幂)。
重要提示:新大小必须大于当前 Btrfs 文件系统大小。如果大小更小,您将丢失存储池中的所有数据。
在主机上,找到 Btrfs 存储池文件的路径:
增长 Btrfs 存储池文件:
让环回设备知道新的大小:
获取一个 LXD 进程 ID,以便我们稍后可以进入它的挂载命名空间:
获取在线 Btrfs 挂载点:
最后,将 Btrfs 文件系统调整为最大可能大小:
为了保持一致性,使用新的存储池大小更新 LXD 数据库: