Назад | Перейти на главную страницу

файл подкачки zombie lxc: текстовый файл занят, но нет pid

У меня есть сервер под управлением Ubuntu 12.04.5 LTS (Precise Pangolin). На этом сервере я создал новый контейнер Linux:

$ sudo lxc-create -n mycontainer

Через некоторое время я решил избавиться от этого контейнера:

$ sudo lxc-destroy -n mycontainer

Однако я получил следующую ошибку:

rm: cannot remove `/var/lib/lxc/mycontainer/rootfs/swapfile': Operation not permitted

Я попытался удалить файл с нарушением вручную:

$ sudo rm /var/lib/lxc/mycontainer/rootfs/swapfile

Но, конечно же, это дало мне то же сообщение об ошибке.

Я проверил расширенные атрибуты файла с помощью lsattr, чтобы убедиться, что он не является неизменяемым:

$ sudo lsattr /var/lib/lxc/mycontainer/rootfs/swapfile
-------------e- /var/lib/lxc/mycontainer/rootfs/swapfile

В качестве эксперимента я попытался перезаписать файл:

$ echo '' > /var/lib/lxc/mycontainer/rootfs/swapfile

Это дало мне новое сообщение об ошибке:

bash: /var/lib/lxc/mycontainer/rootfs/swapfile: Text file busy

Поэтому я попытался использовать lsof, чтобы получить pid процесса, использующего файл:

$ sudo lsof /var/lib/lxc/mycontainer/rootfs/swapfile

Это не дало результата. Я попробовал то же самое с фьюзером:

$ sudo fuser /var/lib/lxc/mycontainer/rootfs/swapfile

Опять же, выхода нет.

Также отмечу, что я проверил размер файла:

$ sudo du -h /var/lib/lxc/mycontainer/rootfs/swapfile
1.1G    /var/lib/lxc/mycontainer/rootfs/swapfile

Что здесь происходит и как мне избавиться от этого файла?

Имя swapfile дает очень четкое представление о назначении файла и о том, для чего он используется.

То есть: система использует его как своп, потому что кто-то создал файл подкачки и добавил его в систему с помощью swapon.

Попробуйте удалить его из активного свопа с помощью swapoff:

swapoff /var/lib/lxc/mycontainer/rootfs/swapfile