我使用所有默认 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-old
lxc
lxc-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