从快照创建容器时,我在使用 lxd 和 zfs 作为后台存储时遇到问题。我可以创建容器,但是当我删除它时,快照会在 zfs 级别(而不是 lxd)被删除。
我在 Ubuntu 16.04 中使用 lxd,有趣的是,并非每个盒子都发生这种情况:有些工作正常,有些从来没有,还有一些工作正常一段时间然后坏了。
我现在想知道从快照创建容器是否合法,或者操作语义是否未指定。
这可以在这个例子中看到
$ lxc launch ubuntu:14.04 mycontainer # Happens with other images
$ lxc stop mycontainer # stop is optional
$ lxc snapshot mycontainer mysnap0
$ lxc copy mycontainer/mysnap0 mycontainer1
$ lxc delete mycontainer1
$ lxc copy mycontainer/mysnap0 mycontainer2
error: rsync failed: rsync: change_dir "/var/lib/lxd/snapshots/mycontainer/mysnap0" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
但是lxd还是觉得snapshot好。
$ lxc info mycontainer
Name: mycontainer
Architecture: x86_64
Created: 2016/06/16 10:53 UTC
Status: Stopped
Type: persistent
Profiles: default
Snapshots:
mysnap0 (taken at 2016/06/16 10:54 UTC) (stateless)
另一个让我想到的例子是 lxd 请求 zfs 删除快照:
$ lxc snapshot mycontainer mysnap1
$ lxc copy mycontainer/mysnap1 mycontainer2
$ lxc copy mycontainer/mysnap1 mycontainer3
$ lxc delete mycontainer2
error: Failed to destroy ZFS filesystem: cannot destroy 'debtool/containers/mycontainer@snapshot-mysnap1': snapshot has dependent clones
还有一些关于我使用的版本的信息:
zfs-zed 0.6.5.6-0ubuntu8
zfsutils-linux 0.6.5.6-0ubuntu8
lxd 2.0.2-0ubuntu1~16.04.1
lxd-client 2.0.2-0ubuntu1~16.04.1
lxd-tools 2.0.2-0ubuntu1~16.04.1
liblxc1 2.0.0-0ubuntu2
lxc 2.0.0-0ubuntu2
lxc-common 2.0.0-0ubuntu2
lxc-templates 2.0.0-0ubuntu2
lxc1 2.0.0-0ubuntu2
lxcfs 2.0.0-0ubuntu2.1
关于如何解决/解决问题的任何想法?