最近看到這篇文章 用 ramdisk 加速 freebsd 編譯 ports 的速度
因此就來研究一下該如何在 FreeBSD 啟用 ramdisk 的功能,找了一些文章目前有二種方式可以建立 ramdisk
一種是 tmpmfs,另一種是 tmpfs
tmpmfs 在 FreeBSD 5 導進來的,而 tmpfs 是從 FreeBSD 7 才放進來的
整體來看這二個功能面都蠻像的,都可以有效達到加速存取的效果
不過仔細比較二者的運作方式,引用一下 FreeBSD China 這篇文章所說的
tmpfs是一個直接使用VM(以swap為後端存儲)的FS,tmpmfs是透過md配合ufs的一種用法,並不是一個FS。
還有 FreeBSD Forum 討論的這篇 [Solved] tmpfs little help
Before people get confused: if you read this thread, be sure to distinguish between tmpmfs ("old and trusted") and tmpfs ("new and experimental"). They perform the same function, but they are very different.
"理論上"來說,tmpfs 或許在效能上會比 tmpmfs 快,這部份我還沒有仔細去測,但透過 tmpfs 或 tmpmfs 來編某個 ports 的套件時,速度是差不多快的
接下來說明如何啟用這二種 ramdisk
[ tmpmfs ]
首先記得要把 /tmp 權限設為可寫
然後很簡單,只要在 /etc/rc.conf 加入這三行
tmpmfs="YES"
tmpsize="512m"
tmpmfs_flags="-m 0 -o async,noatime -S -p 1777"
重開機之後下 df -h 就可以看到建立出來的樣子
/dev/md0 496M 12K 496M 0% /tmp
然後我們要去設定 ports 編繹檔案時指定的目錄,去編輯 /etc/make.conf 加入這行
WRKDIRPREFIX=/tmp
[ tmpfs ]
首先記得要把 /tmp 權限設為可寫
這個就更簡單了,只要在 /etc/fstab 加入一行
tmpfs /tmp tmpfs rw 0 0
重開機之後下 df -h 就可以看到
tmpfs 6.8G 4.0K 6.8G 0%
這個 6.8G 是怎麼來的呢,實際上它是把沒有用到的 Free RAM + Free Swap 算出來的
而這個空間也是會變動的,不像 tmpmfs 所建立出來的空間是固定的
最後我們要去設定 ports 編繹檔案時指定的目錄,去編輯 /etc/make.conf 加入這行
WRKDIRPREFIX=/tmp
[ 哪個比較好 ]
誠如一開始所說,tmpfs 是 FreeBSD 7.0 後才帶進來的,而在我目前所用的 FreeBSD 8.1 開機時依舊會顯示這行資訊
WARNING: TMPFS is considered to be a highly experimental feature in FreeBSD.
看起來還是先乖乖用 tmpmfs 比較不會出問題 !!!
參考資料
餅乾隨筆 - 用 ramdisk 加速 freebsd 編譯 ports 的速度
The FreeBSD Forums - [Solved] tmpfs little help ( 建議看完它 )