[華語, cmn-Hant-TW] 傳說中很威的 lz4 壓縮演算法,特色是吃比較多記憶體、壓很快解壓更快、處理不能壓的檔案超快,整個就是很適合 zfs 使用,FreeBSD 在 2 月份也把 feature@lz4_compress 加進去了,拿來壓 root 也能開機 (gzip不行),整個就讓人很想試,拿比較閒的備份機出來惡搞,結果 lz4 + dedup 威力驚人直接把機器搞到爆掉,參數怎麼改都會炸,加了 RAM (從4G變6G) 之後才跑的比較順… 拿二個很大的 vmdk 檔共 78.83G 來測試,CPU 是 AMD Athlon X2 3600+ 1.9G 的老 CPU、6G DDR2-800 的 RAM 再接上三顆 1.5G 硬碟做…
zfs snapshot 管理
[華語, cmn-Hant-TW] 目前 zfs 對我來說主要就是備份用,使用的方式大致上就是逐日備份,然後定期清掉舊的備份,試過一些工具不過都覺得不是很理想,所以就自己動手弄了,備份的方式不限定,只要把檔案塞進目錄即可,目前的話大致上是 windows 用 windows 的機制,mac 用 time machine,其他 linux 或 freebsd 用 rsync,對備份主機來說只要各別開適當的分享出去即可。備份跟清理備份的時間也可以錯開,我是習慣晚上11點左右打 snapshot 跟清舊備份,其他機器有一整天的時間可以丟資料到備份主機上去,對 snapshot 的管理,主要的需求是: 用日期當 snapshot 的名字,例如 backup@2012-07-30 可以分別針對年,月,日設定保存個數,例如30天內的每日備份,6個月內的每月保留一備份,3年內每年保留一備份。 年、月原則上優先保留該年或該月之第一天,如果當天剛好沒備份,就往次日找,直到找到有備份為止。 用 perl 寫了一個 snapshot.pl 來配合這樣的需求,使用方法也很簡單,比如說要處理 backup/pighead,那就 # ./snapshot.pl backup/pighead# ./snapshot.pl backup/pighead 即可,預設是保留32天內的逐日備份,12個月內每月保留一份,一年內保留一份,如果不想照預設的話,後面可以加參數 D-M-Y (日-月-年),這個數字包含當日/月/年,例如要保留三天內、一月內、二年內:…
ssd 加持過的 zfsv28 dedup
[華語, cmn-Hant-TW] 結論先寫了,真的有比較快! 前面這篇提到被 DRAM 整到,過了好一陣子才解決。在一樣用 2G RAM 跑的情況下跟這篇硬體上差別也就只有多了顆 SSD,之前在這篇預期用 SSD 當 L2ARC 會變快,就想說來驗證一下倒底是會快多少。 SSD 是之前蠻紅的 EZLINK Seraphim MLC SSD 系列 60GB 那顆,控制器是 SF-1222,理論速度都是寫爽的所以就不管他了。 測試環境跟上次的差異就在這顆 60GB 的 SSD,切成 30G+16G+16G 三塊,前面的 30G 是開機根目錄,後面兩個則是拿來當 zpool 的 cache (L2ARC) 用,測試時只用其中一個就是。除了測有開 cache 跟沒開 cache 的情況外,還測了直接在…
Athlon 64 X2 3800+ 的 RAM 搭配
[華語, cmn-Hant-TW] 之前這篇提到的那個硬體環境,沒提到的 CPU 跟 RAM 分別是 Athlon 64 X2 3800+ 2.0G 的雙核心 CPU 以及 2 條創見的 DDR400 1G RAM,主要是拿來跑 FreeBSD 上面的一些有的沒有的東西為主。最近除了把主硬碟換成 SSD 外,就是從別台再拔一條 1G 的 DDR400 RAM 過來,在另一篇有提到有開 zfs dedup 的話記憶體是多多益善,所以雖然插 3 條會被降速到 ddr 333 (印象中要4條插滿才會被降頻,不知道為什麼我插三條也被降就是),理論上還是值得的。 結果插下去狀況就狂出來了,gcc,clang,java,chromium 幾乎都有在編譯過程中爛掉 (segmentation…
zfsv28 dedup
[華語, cmn-Hant-TW] 在六月中左右 FreeBSD 8.2-STABLE 的 zfs 升級到了 v28 這版最主要的特色是 dedup,也就是 block level 的 deduplication,傳說中的 virtual machine disk image 備份救星 (誤)。 因為是 block level,所以檔案位置怎麼放,檔案是不是只修改一點點這些通通不用管了,反正 zfs 覺得這兩個 block 是長得一樣的話,就自動會處理,如果硬碟裡面有一堆彼此間差異不大的大檔案,那效果就會非常好,遠比 lzma 或是 gzip 壓縮更有快感 (事實上 dedup 跟壓縮是可以併存的,歡迎挑戰硬體極限) 。 要開 dedup 很簡單,在有 zfsv28 的系統下…
加上/移去 zpool cache
[客家話, hak-Hant-TW] 假使你有一隻分割區 da0s1,要加到 volume1 這隻 pool 袛肚,可以按仔下指令: zpool add volume1 cache da0s1zpool add volume1 cache da0s1 用 zpool status 可以看有加成功沒,是講要移去: zpool remove backup-mmt da0s1zpool remove backup-mmt da0s1 指令當簡單。
AFP Server
[華語, cmn-Hant-TW] 據說 Mac 連 AFP 還是比 SMB 順,所以就想架看看用起來的感覺如何,伺服器是 FreeBSD 8.2,要安裝的 ports 有 /usr/ports/net/netatalk /usr/ports/net/avahi-app (選用) /usr/ports/net/howl (選用) avahi 跟 howl 挑一個來裝即可。又為了要用 LDAP 做為登入認證,在編 netatalk 時記得要打開 PAM 的選項,這樣在安裝的時候會自動在 /etc/pam.d/ 裡面產生一個叫 netatalk 的檔案,這個檔案的內容預設是引用 /etc/pam.d/system 的設定,以 LDAP 來講,只要之前在 system 檔裡面有設定好 pam_ldap 的話,什麼都不用改就直接可以用了,接著就是要設一堆的設定檔…
raidz 換硬碟
[華語, cmn-Hant-TW] 以三顆拼成的 raidz 來講,假設塞進去的硬碟都是整顆拿來用(dangerously dedicated?!)的情況,那要換硬碟的時候只要這樣下指令就可以了: (假設要把 data 的 ad6 換成 ad8) zpool replace data ad6 ad8zpool replace data ad6 ad8 不過如果抽取盒插滿滿又懶得打開機殼拔來拔去的話,那也是可以冒點風險同位置直接抽換。抽換 ad6 成新硬碟後再下指令強制更新: zpool replace -f data ad6 ad6 zpool clear datazpool replace -f data ad6 ad6 zpool clear…
換 zfsroot pool 的名仔
[客家話, hak-Hant-TW] 一般要換 zfs 的 pool 名就直接 export 過來 import 換新名就好了,毋過是講 pool 袛肚有 root 就作不得 export,按仔就要用別隻方法來改。 要用 zfs 開機的時節,系統會參考 /boot/zfs/zpool.cache 來 import 看得到的 zfs pool,是講沒找到 /boot/loader.conf 底肚的 vfs.root.mountform 指定的地方,就會跳出錯誤訊息叫你輸入對的位仔,所以常理來講是沒要挺動較好,正經想要要改可以按仔做: 用別台電腦 (沒就是換一個硬碟開機) 強制 import 這隻 zfs pool 同時改名仔。 拷這下這個系統的 zpool.cache 進去這隻…
FreeBSD zfsboot
[華語, cmn-Hant-TW] 安裝 想要把一台 FreeBSD 8.0 機器硬碟升級,想說乾脆換成 GPT 弄個純 zfs 的環境來用看看。在官網的 wiki 有提到在這裡可以下載安裝光碟,裡面有一個 zfsinstall 的 script 可以幫忙把 FreeBSD 安裝到一顆乾淨的硬碟裡面,直接下載附有包好一份 FreeBSD/amd64 dist 的 special edition 比較方便,不然就得自己包一份餵給 zfsinstall 吃。 安裝過程很快,不過重開機後怪事就發生了,開機居然會卡在開機硬碟掃瞄的畫面?!一開始推測是 GPT 的問題,把硬碟清掉之後果然就不卡了,這實在沒啥道理,後來把硬碟拿去用 Mac 的磁碟工具程式分割成 GUID 分割表 (即 GPT),一試居然也不會卡,那問題是在哪? 再深入交叉測試發現原來只要用 gpart create -s…