У меня есть сервер под управлением 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