我有一台运行 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
这没有产生任何输出。我尝试用 fuser 做同样的事情:
$ 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