Zfs
通過對不同大小的磁碟進行分區來提高可靠性?
我了解 ZFS 更喜歡所有磁碟都具有相同的大小。但是,如果我有兩個不同大小的磁碟(1TB 和 1.5TB),我希望有一定的冗餘,而不是鏡像。所以我將兩個磁碟分成 5 個分區,每個分區大約 500GB 並創建一個“raidz”池……zfs 很高興地答應了。它的設置是否真的增加了任何可靠性?想法是,如果磁碟沒有完全損壞,並且只有一部分發生故障,我仍然可以訪問數據嗎?
想法是,如果磁碟沒有完全損壞,並且只有一部分發生故障,我仍然可以訪問數據嗎?
從理論上講,這種想法是正確的。只要您在 RAIDZ1 vdev 的單個設備上遇到錯誤,ZFS 就會通知您並糾正錯誤,假設其他設備沒有錯誤。
現實中可能會有所不同的是:
- 錯誤可能跨越分區,因此會影響兩個或更多設備,這可能導致不可恢復的錯誤甚至整個池失去(取決於錯誤的位置和數量)。您可以使用 RAIDZ2 或 Z3 來緩解這種情況,但問題始終存在。
- 在重新同步分區時,磁碟需要同時隨機讀取(2 次)和寫入(1 次)到同一個磁碟。除非您使用具有順序重新同步的 Solaris 11.3,否則這將非常非常慢。在您完成重新同步過程之前,您很容易受到其他分區上的錯誤的影響。如果您的重新同步時間較長,您遇到額外 URE 的機會就會增加。它還會給驅動器增加額外的負載,從而增加驅動器完全故障的可能性。
- 想像一下,您的第三個分區(1.5TB 磁碟上的最後一個分區)顯示了足夠多的錯誤來降低池的性能並要求更換。如果你不能添加另一個磁碟,你就不能在不關機/導出的情況下進行替換,即使那樣它也比平常更複雜。
基於這些觀點,如果可靠性是您的主要目標,我建議不要這樣做。假設硬體情況固定,我會執行以下操作之一:
- 使用鏡像並減少 500GB,但獲得簡單的設置和易於擴展的未來
- 使用兩個單獨的池,
copies = 2
如果您希望對較小的錯誤具有一定的彈性(與您的設置相比,整個磁碟故障只會殺死 2/5 或 3/5 的數據)- 如果您也想吃蛋糕,請使用 ZFS 以外的其他文件系統