Зомби 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
Что здесь происходит и как мне избавиться от этого файла?
1 ответ
Имя swapfile
дает очень сильный намек относительно цели файла и того, что его использует.
То есть: система использует его как подкачку, потому что кто-то создал файл подкачки и добавил его в систему с помощью swapon
,
Попробуйте удалить его из активного свопа с swapoff
:
swapoff /var/lib/lxc/mycontainer/rootfs/swapfile