ZFS

最近有一台有十二顆硬碟的機器要上,想說來測試 7.0 上的 ,結果發現 解決的問題有限... 不過對於軟體解決方案來說,是一個很大的進步 :p

提供的 RAIDZ 有三種保護方式,第一種是 MIRROR,類似 RAID1 的方式,相同的資料會丟到兩顆上;第二種是 RAIDZ1,與 RAID5 類似的方式 (XOR),擁有一顆硬碟故障的容錯能力;最後則是 RAIDZ2,與 RAID6 類似的方式 (),擁有兩顆硬碟故障的容錯能力。這些都因為理論限制而沒有辦法新增硬碟。其中 RAIDZ2 (RAID6) 是目前 的 gvinum 還沒有提供的功能,這是 所帶來的第一個進展。

ZFS 所提供的「擴充性」是以相同的 virtual device 為單位,假設以三顆硬碟完成 RAIDZ1 成為一個 virtual device 後,你可以塞進一個 pool 裡面,而且是不斷的塞:

# zpool create raidz1 mypool ad4 ad6 ad8
# zpool add raidz1 mypool ad10 ad12 ad14

當你用 zpool create raidz1 建立 pool 後,就決定了你後面 zpool add 一定要用「raidz1」、「三顆硬碟」當作增加的單位 (大小倒是沒差),不然會出現:

mismatched replication level: pool uses 3-way raidz and new vdev uses 4-way raidz

或是:

mismatched replication level: pool uses 1 device parity and new vdev uses 2

看起來很像 concat,但比起傳統的 concat,新增的 pool 可以馬上分擔寫入的負荷。而且對於要大不大的企業用戶來說,每次固定增加四顆或八顆硬碟 (一張 SATA 外接卡可接的量) 比起資料搬移的停機容易接受。

再更大的話也許還是用 之類的方案吧 :p

Leave a Reply

Your email address will not be published. Required fields are marked *