Описание ошибки
Проблема актуальна для LXD-кластеров. При удалении датасета (массива данных) возникает ошибка dataset is busy.
Результат выполнения команды zfs destroy выглядит так:
zfs destroy zfs0/containers/vm-2673-vm325664
cannot destroy 'zfs0/containers/vm-2673-vm325664': dataset is busy
Ошибка при удалении датасета происходит из-за того, что система развёртывания программного обеспечения и управления пакетами snap монтирует файловую систему "слоями". Это приводит к указанной проблеме. Данная ошибка snap не связана с платформой VMmanager и не может быть исправлена силами ISPsystem.
Решение
Для удаления данных необходимо перейти в snap namespace LXD (пространство имён LXD) и размонтировать датасет.
Чтобы удалить проблемный датасет:
- Подключитесь к серверу узла по SSH.
-
Перейдите в snap namespace LXD:
nsenter -t $(cat /var/snap/lxd/common/lxd.pid) -m
-
Получите список файловых систем:
mount
В конце списка будут записи, которые содержат строку shmounts:
tmpfs on /var/snap/lxd/common/shmounts type tmpfs (rw,relatime,size=1024k,mode=711) lxcfs on /var/snap/lxd/common/shmounts/lxcfs type fuse.lxcfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other) tmpfs on /var/snap/lxd/common/shmounts/instances type tmpfs (rw,relatime,size=100k,mode=711)
В начале списка тоже есть такие записи, однако они не мешают корректной работе.
-
Размонтируйте файловые системы из этих записей, начиная с конца списка:
umount <файловая_система>
Пояснения -
Удалите проблемный датасет командой:
zfs destroy <dataset>