FreeBSD 配合 SSD 使用 swap file

前言
由於偏重隨機讀寫的特性,
把 swap 分割區安排在 SSD 上是很適合的應用;
但要完整享受到新一代產品的種種優點,
還需有作業系統配合實作 TRIM 指令才能達成。

FreeBSD 從善如流,於 9.0-RELEASE 開始支援 TRIM,
大幅提高了使用者以 SSD 作為系統碟的意願,
只可惜目前 FreeBSD 對 swap 分割區不提供支援 TRIM…


所幸 FreeBSD 對於 swap 的配置提供分割區之外多樣化的選擇,
包含 NFS 與 swap file;
若要充分利用 SSD 的特性並同時支援 TRIM,
則需使用 md(4) 製作並掛載 swap file。

實作
詳細做法在官方的說明文件已經有範例
但有些描述已經過時,相關討論可以參考 maillist 的記錄。

在此歸納比較適當的做法:

  1. 首先確認核心組態包含 device md
  2. 建立 swap file,並適當設定權限
    dd if=/dev/zero of=/swap0 bs=1024k count=64
    chmod 0600 /swap0
  3. 到此已建立好 swap file,手動使其生效
    mdconfig -a -t vnode -f /swap0 -u 0
    swapon /dev/md0

但若要在開機時自動載入,
官方文件提及於 /etc/rc.conf 設定 swap file 已是過時的做法,
新的做法應為:

  1. 修改 /etc/fstab,加上
    md  none  swap  sw,file=/swap0  0  0
  2. 重新開機後以 swapctl -l 指令驗證,
    輸出應包含先前設定的 /dev/md* 裝置,即告成功。

參考資料

  1. mdconfig(8)
  2. md(4)

Leave a Reply

Your email address will not be published.