如何从以前使用的 ZFS lxc zpool 导入 LXC 容器?

如何从以前使用的 ZFS lxc zpool 导入 LXC 容器?

我使用所有默认 lxc 设置并使用 ZFS 作为后台存储。

这意味着我有一个 lxc zpool 并使用创建了容器lxc-create -B zfs -n ubuntu-base -t ubuntu

现在,根文件系统空间不足,因为我正在使用 ZFS 和从文件创建的 zpool 测试 lxc。

我将虚拟驱动器连接到虚拟机/dev/sdb,导出现有的 lxc zpool,并使用创建了一个新的 lxc zpool/dev/sdb

然后,将旧的 lxc zpool 导入为lxc-old 然后,使用从到 的zfs send所有数据集,销毁lxc-oldlxclxc-old

现在lxc-ls -f不再显示任何现有容器,但 zfs 显示数据集

root@lxc:~# lxc-ls -f root@lxc:~#

root@lxc:~# zfs list NAME USED AVAIL REFER MOUNTPOINT lxc 5.40G 45.1G 19K /lxc lxc/clamav 679M 45.1G 870M /var/lib/lxc/clamav/rootfs lxc/hadoop 541M 45.1G 710M /var/lib/lxc/hadoop/rootfs lxc/hulk 1.11G 45.1G 1.26G /var/lib/lxc/hulk/rootfs lxc/mongodb 1.03G 45.1G 1.16G /var/lib/lxc/mongodb/rootfs lxc/mongodb2 1.03G 45.1G 1.16G /var/lib/lxc/mongodb/rootfs lxc/python 48.2M 45.1G 185M /var/lib/lxc/python/rootfs lxc/slamdata 427M 45.1G 576M /var/lib/lxc/slamdata/rootfs lxc/splunk 172M 45.1G 324M /var/lib/lxc/splunk/rootfs lxc/ubuntu-base 229M 45.1G 210M /var/lib/lxc/ubuntu-base/rootfs lxc/ubuntu-base@python 1K - 151M - lxc/ubuntu-base@mongodb 1K - 151M - lxc/ubuntu-base@slamdata 1K - 151M - lxc/ubuntu-base@hulk 1K - 151M - lxc/ubuntu-base@splunk 1K - 151M - lxc/ubuntu-base@hadoop 17.0M - 187M - lxc/ubuntu-base@new 1K - 210M - lxc/ubuntu-base@clamav 1K - 210M -

我不太清楚如何让 lxc 查看新 lxc zpool 中的现有容器

答案1

我“丢失”所有容器的原因正是我之前所怀疑的,即文件config丢失。

当使用 ZFS 作为后台存储并创建一个新容器时,例如/var/lib/lxc/clamav/rootfs,后台存储 (ZFS) 中只包含 rootfs 目录

config文件存储在路径中/var/lib/lxc/<container>/config,并未存储在后台存储中。

解决方案是创建一个带有挂载点的数据集/var/lib/lxc/

root@lxc:~# zfs list NAME USED AVAIL REFER MOUNTPOINT lxc 11.4G 37.5G 526M /lxc lxc/_configs 44K 37.5G 44K /var/lib/lxc/ lxc/_share 252K 37.5G 252K /usr/share/lxc/

问题解决了。

答案2

我正在盲目尝试,但请尝试以下操作。我注意到您zfs list有以下内容:

NAME                       USED  AVAIL  REFER  MOUNTPOINT
lxc                       5.40G  45.1G    19K  /lxc
...

也许您的新 lxc 数据集需要安装到/var/lib/lxc

zfs set mountpoint=/var/lib/lxc lxc

相关内容