LXD 的默认路径是/var/lib/lxd
,所以容器在
/var/lib/lxd/containers
,快照放在/var/lib/lxd/snapshots
.
/var/ 分区快满了,所以我打算为容器和快照使用另一个分区,它有更多的空间。
我目前的选择是:
- 创建指向新目录的符号链接(在另一个驱动器中)
- 将新目录绑定(挂载)到当前目录
- 更改一些指向另一个驱动器中的目录的 lxd 设置(如果存在)
不确定哪种方法更容易,以及是否有任何其他方法可以轻松实现。
我担心 apparmor、容器的权限或导致 lxd/lxc 出现问题。
哪个是移动它们的正确(或最佳)方式?
(2017 年 4 月)更新 ******************
LXD 2.9+ 支持多个存储池。
LXD 最大的问题是(目前)它似乎只支持一个存储池。特别是,如果您想在一个磁盘卷中运行部分容器并在另一个磁盘卷中运行,这会成为一个问题。比如说,在 SSD 卷中有一些“快速”容器,在 HDD 卷中有一些“慢”容器。
如果您希望仅在单个卷中运行容器,则解决方案非常简单:
例如,如果您将新存储安装在 /mnt/largepool 下名为 lxd 的子目录中,则创建如下链接:
ln -s /mnt/largepool/lxd /var/lib/lxd
这样,您就可以将容器放在新的存储卷上。
请注意,如果您使用 BTRFS 或 ZFS 作为存储后端,您可能希望首先在新存储上创建必要的子卷,因此您的容器恰好位于它们自己的子卷中。例如,如果您有 btrfs 并且有名为 c1 和 c2 的容器,并且目录 /mnt/largepool/lxd/containers 已经就位,那么在实际移动文件之前,创建子卷:
btrfs su create /mnt/largepool/lxd/containers/c1 btrfs su create /mnt/largepool/lxd/containers/c2
这将使之后创建容器快照变得容易。
我希望这些信息对您有所帮助。
LXD 基于 sqlite db,因此要更改池位置只需更改 db:
如果没有,请安装 sqlite3 客户端
假设你的 lxd 数据库在默认位置
然后检查
希望这可以帮助