我有一堆 LXC 容器在一台机器上运行。它们的 rootfs 都位于默认位置/var/lib/lxc/*/rootfs
。该目录位于主机上一个相当小的分区上。我安装了一个大得多的分区/home
。
是否可以选择将后备存储移至/home
?最好是每个容器。
我知道我本可以做到的前我有几个正在运行的容器 ( lxc-create -P PATH
)。但现在他们已经站起来了,我不想失去他们。
答案1
rootfs 是配置选项。如果容器停止,您可以将后备目录移动到任何您想要的位置并在配置文件中指定:
lxc.rootfs = /home/utsname
这可能比使用符号链接更好。
LXC 还允许备份文件。您可以使用块设备和原始图像。
来源:https://linuxcontainers.org/lxc/manpages/man5/lxc.container.conf.5.html
答案2
我个人更喜欢不同的方法。鉴于容器的操作系统部分相对较小(运行大量服务的 debian jessie 服务器最大 2GB,带有远程桌面的工作 ubuntu 映像大约 3GB),我将操作系统驻留在 /var/lib/lxc 中并使用容器数据的单独分区。
只需修改 /var/lib/lxc/container/fstab 文件即可完成此操作:
/mnt/data/container-data/ /var/lib/lxc/container/rootfs/home/ none bind 0 0
在主主机上创建文件夹(源和目标),停止容器,移动数据并重新启动容器!
在上面的例子中,两个目录都驻留在 lxc 主机上的 /mnt/data 分区上,在我的例子中是一个大磁盘。
这种方法有很多优点:分割操作系统和数据允许您在必须完成危险任务时快速复制和启动测试容器(例如:“aptitude -f dist-upgrade”):
停止容器(fstab 中的分区将从 /var/lib/lxc/container/rootfs/ 目录分离):
lxc-stop -n container
复制容器:
mkdir /var/lib/lxc/containertest rsync -Pavv /var/lib/lxc/container/ /var/lib/lxc/containertest/
记得相应修改 /var/lib/lxc/containertest/config 和 /var/lib/lxc/containertest/fstab
启动新的容器测试,使用它并查看结果!
lxc-start -n containertest
另外,回答你的担忧,你不应该担心没有这样做前:lxc 的一大优势是它的多功能性!
答案3
你可以说我很懒——但是如果你可以(绑定)在 /var/lib/lxc 挂载你的大目录,为什么还要搞乱配置文件呢?
只需关闭容器,将内容移至 /home/lxc/whatever 并将它们绑定安装回来 - 完成!
答案4
最好默认更改所有新容器的路径:
# vim /etc/lxc/lxc.conf
lxc.lxcpath=/media/other/programs/OS/containers/
所有容器都将位于/media/other/programs/OS/containers/
目录中
所有旧容器都会像这个人一样移动mv
并编辑它们的配置https://unix.stackexchange.com/a/191620/53139