删除 \040(已删除) 交换

删除 \040(已删除) 交换

我们的一位管理员在生产机器上错误地从系统中删除了交换文件。但没有将其交换掉。

现在我们得到了这个。

/swapfile3\040(已删除)文件 1048568 1048568 -2 /swapfile1\040(已删除)文件
1048568 1048568 -3 /apps/swap2 文件
899992 899992 -4 /swapfile 文件
99992 37712 -9 /swapfile4 文件
524280 0 -10

我们无法重新启动该机器。交换功能不起作用。请指教。它在内核 2.6 RHEL 5 上运行。

答案1

不幸的是,Linux 中的 swapoff 系统调用不支持禁用已删除的交换文件。

可以将此功能添加到内核,但从最近的版本的源代码,似乎还没有人实现这个功能。

当然,如果内核确实添加了这样的功能,您仍然需要重新启动才能升级到具有该支持的内核。如果可以将禁用已删除交换文件的支持添加为内核模块,则可以避免这种情况。但是,导出符号列表不包括活动交换文件的列表,因此内核模块无法访问相关数据结构,因此该方法也不起作用。

基于此,我非常确定,除非您仍然在文件系统的某个地方有交换文件的链接,或者它当前由某个进程保持打开状态,否则您必须让该交换文件保持启用状态,直到下次重新启动。还请注意,您将无法卸载该文件系统或以只读方式重新挂载它。这可能会妨碍干净关机。

如果您要远程重启机器,这意味着您必须问自己,尝试干净关机是否可取。尝试干净关机可能会卡住,这可能会导致机器处于禁用网络的状态,因此您无法登录,并且关机不会取得任何进展,因此它也不会自动完成。

如果您没有计划在干净关机卡住时做什么,那么您最好重新启动机器,甚至不要尝试干净关机。

相关内容