在 Google 工程師和很多開發者的共同努力下,他們希望在 Linux 系統中創建新的 swap 空間,這些 swap 空間將只保留給系統掛起/休眠使用,而不是常規的交換到磁盤。
在名為“SWAP_FLAG_HIBERNATE_ONLY”的提案中,開發者希望保留一個 swap 空間,只用於 suspend-to-disk 使用而不需要常規的“頁”(pages,磁盤分割成固定大小的區塊)交換。到目前為止,如果只是想在系統掛起時使用通用交換,最終需要啟用通用交換,沒有辦法在掛起過程中打開/關閉它。
在關於該提案的描述如下:
有幾個原因使 usermode 可能希望能夠專門引導 swap 空間和休眠。一個原因是與 SSD 的磨損有關。休眠的耐力和速度要求與交換不同。例如,將 hibernate 保留在主存儲中,而將 swap 放在 SLC 命名空間中可能是有利的。這些命名空間的速度更快,耐力更好,但在容量上要花費3-4倍。獨家引導休眠和交換使系統設計者能夠準確地劃分他們的存儲,而不會耗盡他們的主存儲,或過度配置他們的快速交換區。
另一個允許獨家轉向的原因是與安全有關的。設計具有抵禦離線攻擊能力的系統的要求在交換和休眠之間是不同的。由於頁面可以被任意添加和刪除,交換實際上需要一個哈希值的字典,而休眠只需要整個鏡像的一個哈希值。如果你為交換設置了塊級的完整性,為休眠設置了圖像級的完整性,那麼允許交換塊可能泄露到休眠區域是有問題的,因為它創建的交換頁不受任何完整性保護。