Swap

如何刪除不再存在的交換分區?

  • March 28, 2018

我在硬碟驅動器 (/dev/sdb3) 上有一個交換分區,但最終失敗了。驅動器被移除並更換。創建了一個新的交換,更新了 fstab 並打開了 (/dev/sdc3),但舊的交換仍然列在 /proc/swaps 中,但帶有(deleted).

[root@server01 ~]# cat /proc/swaps
Filename                Type        Size    Used    Priority
/dev/sdc3                               partition   4194300 0   -2
/dev/sdb3\040(deleted)                  partition   4194300 0   -1
/dev/sda3                               partition   4194300 0   -3

我試圖刪除交換。 swapoff /dev/sdb3失敗,沒有這樣的文件或目錄。swapoff -a 和 swapon -a 似乎沒有任何錯誤,但 /proc/swaps 仍然列出已刪除的交換。

如何刪除不存在的交換?如果需要,系統還會嘗試使用這塊交換空間嗎?那時會發生什麼?

附加背景:伺服器無法重啟,通過熱插拔介面更換了驅動器。這些驅動器是 AHCI SATA 驅動器,不通過 RAID 控制器、HBA 或任何其他特殊介面。儘管 /dev/sdb 失敗且不再存在,但新驅動器在插入同一埠時變為 /dev/sdc。/dev/sda 存在並且在整個過程中執行良好。

參考:另一位使用者詢問是什麼原因導致交換顯示為已刪除,但我知道原因,只是不知道如何刪除它。

您需要重新啟動系統。

在寫入數據時,核心應該忽略任何已刪除的交換分區/文件。

在讀取時,它試圖交換頁面的任何程序都將被終止(我不確定發送了什麼信號,但我相信它與嘗試訪問包含無法糾正的記憶體錯誤的頁面時發送的信號相同) . 根據確切的核心配置,這也可能導致核心崩潰,使系統崩潰。這是理想情況下應該重新啟動的重要原因,因為停用交換空間會導致儲存在那裡的任何頁面再次被換入或移動到其他交換空間,因此停用不存在且具有數據儲存的交換空間可能會導致程序被終止,恕不另行通知。

在您的情況下,您在有問題的交換空間上沒有任何數據,因此停用它應該是安全的。但是,正如您所發現的,用於停用交換空間的命令行工具在不存在的設備上無法正常工作。為了將來參考,請確保在斷開連接之前停用故障儲存設備上的任何交換空間,這樣您就可以避免此類情況。

此外,您可能需要在/etc/fstab重新啟動後再次更新。活動但不存在的交換分區仍保留對已移除儲存設備的引用,該儲存設備將在重新啟動時釋放。在您重新啟動之前,設備列舉順序將與正常情況不同,因此目前/dev/sdc可能會/dev/sdb在重新啟動時變為。

引用自:https://unix.stackexchange.com/questions/434132