RAID 1 - IOPS 寫入懲罰 1 或 2

RAID 1 - IOPS 寫入懲罰 1 或 2

我不斷看到文章將 RAID 1(和 RAID 10)的 RAID IOPS 寫入懲罰描述為 2。 RAID 1 被描述為“需要兩次寫入”,因此懲罰為 2。

但既然資料是同時寫入的,那它不應該是1嗎?

從使用磁碟的應用程式或伺服器的角度來看,RAID 1 陣列應顯示為同時寫入兩個磁碟的單一單元。一個磁碟可能落後於另一個磁碟,但實際的硬體 RAID 控制器應該能夠同時開始寫入,並在較慢的磁碟完成時報告寫入操作已完成,這應該僅略高於 RAID -0,如果有的話。因此,RAID 1 或 1.2 的 IOPS 損失最大應為 1。

我知道有兩個寫入操作,因此有 2 個“IOPS”,但它們是在 RAID 控制器內部。

我在這裡錯過了什麼嗎?

答案1

如果 RAID 1 只是熱連線,則效能影響為零(係數為 1.0),但 RAID 1 鏡像不僅僅是熱連線 -實際工作需要將資料寫入兩個磁碟機並處理每個磁碟機的寫入結果。

他們所說的額外工作是影響表現的因素。無論I/O操作發生在作業系統的某個地方(軟體RAID)或是在專用協處理器/控制器(硬體RAID)中,仍需要對每個資料發出兩次寫入,以及寫入的結果(成功,失敗或 on_fire)需要「處理」。


在最壞的情況下,您可能會遇到(作業系統中實現的軟體 RAID-1),這意味著核心正在進行兩次寫入,並與磁碟控制器進行兩次對話。
這是 2 倍的寫入損失,因為我們幾乎在整個堆疊中執行了兩倍的工作。
(實際上,它可能更接近 1.9 - 畢竟我們不會對檔案系統發出兩次 write() 呼叫 - 但為了悲觀,讓我們將其四捨五入。)

在最好的情況下(硬體RAID 1,使用專用控制器實現),核心與控制器進行一次對話,但控制器仍然進行2 次對話(每個磁碟一次),因為它需要確保兩個磁碟機都接收命令,寫出數據,並確認數據已寫入(或處理驅動器報告的任何錯誤情況)。
正如您在問題中猜測的那樣,這可能是控制器額外工作的 1.2 倍懲罰 - 您只是節省了額外的核心工作(這比控制器正在做的事情要昂貴得多)。

現在,因為我們是系統管理員,而且我們的工資是悲觀的,所以我們顯然會採取最壞情況的性能,就像我們四捨五入軟體 RAID 的性能因素一樣 - 所以如果有人問我們,我們會告訴即使對於他們精美的硬體控制器,他們也會有2 倍的寫入懲罰,當系統平均執行時只有1.5 倍的懲罰時,讓他們感到高興:-)

答案2

實際的硬體 RAID 控制器應該能夠同時開始寫入,並在較慢的磁碟完成時報告寫入操作已完成,這應該僅略高於 RAID-0(如果有的話)。

不過,每次寫入的可用總效能只有一半。在您的範例中,RAID 0 的每個磁碟只需寫入發送到 RAID 控制器的一半內容。在 RAID 1 中,每個磁碟都必須全部寫入。

這使得 RAID 0 的寫入速度大約是 RAID 1 的兩倍(在 2 磁碟 RAID 群組上),而理論上的讀取速度相同。

相關內容