以 USB 隨身碟或外接硬碟建立交換空間

如果您的硬碟已經沒有剩餘的空間了,而且系統的記憶體又不足,這樣的狀況下就可以使用 USB 隨身碟或外接硬碟來應急,不過使用 USB 隨身碟會有一些缺點:

  • USB 隨身碟的速度通常都比硬碟慢,作為交換空間效率不佳。
  • 快閃記憶體(flash memory)有寫入次數的限制,作為交換空間會讓隨身碟比較快損壞。

若要使用 USB 隨身碟作為交換空間,首先將隨身碟掛載之後,依照一般硬碟分割區的操作方式來初始化 USB 隨身碟,只不過在 /etc/fstab 之中的設定要改用 UUID 的方式設定:

UUID=MY_USB_UUID none swap defaults 0 0

這裡的 MY_USB_UUID 要換成 USB 隨身碟的 UUID,這個值可以從 /dev/disk/by-uuid/ 中查到:

ls -l /dev/disk/by-uuid/

執行之後,會列出每個 UUID 對應的分割區。

linux-swap-space-tutorial-1

列出磁碟的 UUID

/dev/sdb1 這一個 USB 隨身碟來說,設定就是這樣寫:

UUID=df040c08-8212-4077-ad2e-48df71721fe8 none swap defaults 0 0

交換空間效能校調

系統使用交換空間的程度可以透過 swappiness 這個系統參數來調整,這個值的範圍是從 0100,這個數值越大的話系統就會越積極將暫時不用的資料搬移至置換空間儲存,而比較低的值就會讓系統降低交換空間的使用率,預設值是 60。我們可以利用這個指令查詢目前的 swappiness 數值:

cat /proc/sys/vm/swappiness

如果想要讓系統效能提高,可以嘗試降低 swappiness 的數值:

sudo sysctl vm.swappiness=50

或是直接使用 echo 更改也可以:

sudo echo 50 > /proc/sys/vm/swappiness

若要讓開機後自動設定,可以新增一個 /etc/sysctl.d/90-swappiness.conf 設定檔,加入這一行設定:

vm.swappiness=10

如果系統上同時有好幾個交換空間,我們可以透過 pri 這個優先權的參數來設定使用的順序:

/dev/sda2 none swap defaults,pri=10 0 0
/dev/sdb1 none swap defaults,pri=5 0 0

pri 的數值越大,系統就會越先選用,這個數值的範圍可以從 032767,以這個例子來說系統會優先使用 /dev/sda2 這個交換空間,當 /dev/sda2 的空間用完時,才會使用 /dev/sdb1 這個分割區的交換空間。

在使用 swapon 時也可以加上 -p 參數來指定優先權:

sudo swapon -p 10 /dev/sda1

參考資料:ArchWikiredhat