База знаний VMmanager

Ошибка при удалении датасета: dataset is busy

Описание ошибки

Проблема актуальна для 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) и размонтировать датасет.

Чтобы удалить проблемный датасет:

  1. Подключитесь к серверу узла по SSH.
  2. Перейдите в snap namespace LXD:

    nsenter -t $(cat /var/snap/lxd/common/lxd.pid) -m
  3. Получите список файловых систем:

    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)

    В начале списка тоже есть такие записи, однако они не мешают корректной работе.

  4. Размонтируйте файловые системы из этих записей, начиная с конца списка:

    umount <файловая_система>
    Пояснения
  5. Удалите проблемный датасет командой:

    zfs destroy <dataset>