Virtual-Memory

從一些 RAM + 一些 SSD 製作一個臨時虛擬 RAM 磁碟

  • March 14, 2021

我處於一個奇怪的情況,我有大量的 RAM(額外 200gb)和幾乎足夠的 SSD 來執行讀/寫密集型過程。有沒有辦法說“親愛的系統,請創建一個臨時虛擬驅動器,它是 RAM 和 SSD 的組合,這樣對於 SSD 支持的某些讀/寫操作,它們會更快,而其他由 RAM 支持的速度真的很快嗎?

嗯,是的,但實際上沒有。

雖然可以在 RAM 中創建虛擬磁碟,但它的處理方式與其他磁碟不同。特別是,它在 中沒有設備節點/dev,因此它對“LVM”或“mdadm”等功能不可見(否則它們可用於將兩個不同的磁碟連接到一個大虛擬磁碟中)。

有一種方法可以按照您的要求進行操作,那就是將您的 SSD 變成交換空間,然後創建一個大 RAM 磁碟。但是,由於它是 RAM 磁碟,因此您將無法直接從 SSD 讀取。當您的程序嘗試訪問每個塊時,每個塊都會自動複製到 RAM 中,並且根據您正在執行的程序的確切性質,我認為顛簸很可能會破壞您希望實現的性能提升。

如果您有義務並決心完成此操作,請按照以下步驟操作。(注 1:我假設您的 SSD 是/dev/sdb。將其替換為您的 SSD 驅動器的實際名稱。注 2:這將擦除您的 SSD。在開始之前,請確保您擁有任何重要數據的副本。注 3:您’在使用可能會擦除系統的工具時將使用 root 權限,所以要非常小心,如果有任何東西看起來有點不對勁,請立即停止。)

  1. 格式化您的 SSD 以進行交換:sudo mkswap /dev/sdb.
  2. (可選,但推薦)swapon -s用於獲取目前活動的任何交換區域的列表,並用於sudo swapoff [device]關閉它們。
  3. 啟動 SSD 交換:sudo swapon /dev/sdb
  4. 創建一個目錄來掛載你的 RAM 磁碟:mkdir /tmp/ramdisk
  5. 創建並掛載實際的 RAM 磁碟:(sudo mount -t tmpfs -o size=[size] myramdisk /tmp/ramdisk您必須tmpfs為此使用,因為ramfs不使用交換。)

就是這樣。現在,您寫入的任何內容都/tmp/ramdisk將儲存在 RAM 中,而對於 RAM 來說太大的任何內容都將被換出到您的 SSD。完成後,您所做的一切(格式化 SSD 除外)將通過簡單的重新啟動來撤消。

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