mdadm 3 路 RAID 1 - 保證 2 驅動器容錯的良好解決方案?
使用 mdadm 的 3 路 RAID1 是否是一個很好的解決方案,能夠維持任何兩個驅動器發生故障而 RAID 不發生故障?我知道在只能使用 1/3 的磁碟空間(3 個驅動器中的 1 個)的意義上,這會產生額外的成本,但除此之外呢?
要使單個陣列能夠發生 2 個磁碟故障,您有兩種選擇:
- 三路 RAID1,正如你所建議的
- RAID6,作為另一種可能性。
什麼是最好的選擇?這取決於您要達到的目標。
- 如果您想要一個可以取出磁碟的設置,將其安裝在另一台電腦上並且仍然能夠讀取您的數據,請使用RAID1。
- 如果您希望每次都能夠擴展陣列並獲得額外空間,請使用RAID6
關於 RAID1 性能下降的說明:它不取決於匯流排擁塞,而是取決於平均磁碟尋軌時間如何受多次寫入的影響。磁碟尋軌時間由兩個不同的部分組成:尋軌延遲(磁頭需要到達正確角度的時間)和旋轉延遲(磁碟碟片需要旋轉到正確位置的時間)。
當涉及多個磁碟時,多個相同的寫入,主機測量的旋轉延遲將是所有涉及的磁碟中**最差的。**另一方面,RAID1 磁碟之間的尋軌時間應該相對相似。最後,這意味著與單個相同磁碟相比,RAID1 陣列的寫入 IOPS 值會略低。
Linux 的 mdadm 有一個有趣的規定,可以最大限度地減少不同磁碟延遲的影響。例如,閱讀有關“write-behind”和“write-mostly”的手冊頁:
-W, –write-mostly 列在 –build、–create 或 –add 命令中的後續設備將被標記為“write-mostly”。這僅對 RAID1 有效,意味著“md”驅動程序將盡可能避免從這些設備中讀取數據。如果通過慢速連結進行鏡像,這可能很有用
–write-behind= 指定應啟用後寫模式(僅對 RAID1 有效)。如果指定了參數,它將設置允許的最大未完成寫入數。預設值為 256。為了使用 write-behind 模式,需要 write-intent 點陣圖,並且 write-behind 僅在標記為 write-mostly 的驅動器上嘗試。
請注意,這會降低您的隨機讀取 IOPS 性能(因為某些磁碟將有效地僅用於寫入),因此請謹慎選擇毒藥。