
我注意到有關 zfs+冗餘+效能的指南傾向於強調鏡像是一個不錯的選擇,但與基於 raidz 的設定相比,zfs 管理資訊往往提供相對較少的有關管理鏡像設定的資訊。
我正在計劃從 Windows 下的鏡像磁碟遷移我的 zfs 池。我的首選設定一直是純鏡像,在研究了 zfs 後,我想保留這一點,並使用純鏡像而不是 RAIDZ 來實現冗餘。理想情況下,每個磁碟機都保持獨立的邏輯可讀性,即對於 6 個磁碟,資料有效地儲存(1+2+3 mirror) + (4+5+6 mirror)
為((1+2 stripe) x 3 mirror)
.我意識到這不會非常有效,並且會涉及擁有多個較小的池/數據集,但之前丟失過數據,它比效率具有我更重視的優勢。它的讀取和重新同步速度也可能快得多,而且物理上也更加靈活。
如果我想運行這種設置,vdev 內的鏡像與鏡像 vdev 的含義是什麼? 如果將來通過添加一組 3 個新磁碟來擴展存儲,是否最好將它們添加為單獨的池或單獨的vdev(或3 個單獨的vdev)?
答案1
在 ZFS 中你在 vdev 層級始終具有任何類型的冗餘,但不能在池層級擁有它。
vdev 可以由單一磁碟(1 個磁碟)、鏡像磁碟(2 個以上磁碟)、Z1 帶區(2 個以上磁碟)、Z2 帶區(3 個以上磁碟)或Z3 帶區(4 個以上磁碟)組成。然後,您可以建立池,其中每個池由 1 個以上 vdev 支持,並且您可以擁有任意數量的池。每個池使用所有後備 vdev,沒有任何冗餘(在 vdev 層級進行管理),且遺失單一 vdev(不是磁碟)意味著整個池遺失。
因此,如果您分割池,基本上會擁有多個彼此相鄰且完全獨立的 RAID1 陣列 - 一個池的遺失不會影響其他池,但效能會降低,因為它們都是 RAID1 而不是 RAID10。
擴展也有這樣的權衡——如果你擴大你的單一池,它會變得更快(至少對於新寫入的資料來說,沒有自動重新平衡),但失敗的機會也會增加。
除此之外,還有一個問題是你想為你的 vdev 配備 2 路還是 3 路鏡像 - 3 路更安全(到了 4 路幾乎沒用的程度),但成本更高(需要更多)磁碟或空間較小)。 3-way 的讀取速度也快一些,但寫入速度沒有改變。
所以這是成本、效能、安全性和易用性之間的權衡。