発生した現象
LXDで使い終わったコンテナを終了、削除しようとしたら、こんなメッセージが。
$ lxd stop TEST
$ lxd delete TEST
Error: Failed to destroy ZFS filesystem: cannot destroy 'LXDPOOLS/containers/TEST': dataset is busy
LXDのコンテナは正常に終了しているのに、ZFSストレージプールから削除ができない。
環境
- Ubuntu Server 18.04
- LXD 3.6 (snap版)
対処法
grep "/コンテナ名" /proc/*/mountinfo
として、そのZFSボリュームをマウントしているプロセスを見つける。
/proc/10704/mountinfo
のうち、10704
がそのプロセスのPID。
$ grep "/TEST" /proc/*/mountinfo
/proc/10704/mountinfo:1306 623 0:121 / /var/snap/lxd/common/lxd/storage-pools/ZFS/containers/TEST rw,relatime - zfs LXDPOOLS/containers/TEST rw,xattr,posixacl
/proc/1626/mountinfo:1306 623 0:121 / /var/snap/lxd/common/lxd/storage-pools/ZFS/containers/TEST rw,relatime - zfs LXDPOOLS/containers/TEST rw,xattr,posixacl
/proc/2420/mountinfo:1306 623 0:121 / /var/snap/lxd/common/lxd/storage-pools/ZFS/containers/TEST rw,relatime - zfs LXDPOOLS/containers/TEST rw,xattr,posixacl
/proc/2559/mountinfo:1306 623 0:121 / /var/snap/lxd/common/lxd/storage-pools/ZFS/containers/TEST rw,relatime - zfs LXDPOOLS/containers/TEST rw,xattr,posixacl
/proc/3116/mountinfo:1306 623 0:121 / /var/snap/lxd/common/lxd/storage-pools/ZFS/containers/TEST rw,relatime - zfs LXDPOOLS/containers/TEST rw,xattr,posixacl
/proc/5824/mountinfo:1306 623 0:121 / /var/snap/lxd/common/lxd/storage-pools/ZFS/containers/TEST rw,relatime - zfs LXDPOOLS/containers/TEST rw,xattr,posixacl
以下のコマンドでアンマウントする。
$ sudo nsenter -t 10704 -m -- umount /var/snap/lxd/common/lxd/storage-pools/ZFS/containers/TEST
もう1度grep "/コンテナ名" /proc/*/mountinfo
を実行して、残るプロセスに対しても同様にアンマウントする。
全部なくなっていたら、コンテナが削除できる・・・はず。
$ lxc delete TEST