天天看點

淺談RAID寫懲罰(Write Penalty)與IOPS計算 Cyrus

    通常在讨論不同RAID保護類型的性能的時候,結論都會是RAID-1提供比較好的讀寫性能,RAID-5讀性能不錯,但是寫入性能就不如RAID-1,RAID-6保護級别更高,但寫性能相對更加差,RAID10是提供最好的性能和資料保護,不過成本最高等等。其實決定這些性能考慮的因素很簡單,它就是RAID Write Penalty(寫懲罰)。本文從原理上解釋了不同RAID保護級别的寫懲罰,以及通過寫懲罰計算可用IOPS的方法。

  更多資訊

  RAID-5 Write Penalty的例子:

  存儲方案規劃的過程中,最基本的考慮因素有兩個,性能和容量。性能上的計算看可以分為IOPS和帶寬需求。計算IOPS,抛開存儲陣列的緩存和前端口不談。計算後端實體磁盤的IOPS不能簡單的把實體磁盤的最大IOPS相加而獲得。原因是,對于不同的RAID級别,為了保證當有實體磁盤損壞的情況下可以恢複資料,資料寫入的過程中都需要有一些特别的計算。比如對于RAID-5,條帶上的任意磁盤上的資料改變,都會重新計算校驗位。如下圖所示,一個7+1的RAID-5的條帶中,七個磁盤存儲資料,最後一個磁盤存儲校驗位。

淺談RAID寫懲罰(Write Penalty)與IOPS計算 Cyrus

  對于一個資料的寫入,我們假設在第五個磁盤上寫入的資料為1111,如下圖所示。那麼整個RAID-5需要完成寫入的過程分為以下幾步:

淺談RAID寫懲罰(Write Penalty)與IOPS計算 Cyrus

  1.讀取原資料0110,然後與新的資料1111做XOR操作: 0110 XOR 1111 = 1001

  2.讀取原有的校驗位0010

  3.用第一步算出的數值與原校驗位再做一次XOR操作: 0010 XOR 1001 = 1011

  4.然後将1111新資料寫入到資料磁盤,将第三步計算出來的新的校驗位寫入校驗盤。

由上述幾個步驟可見,對于任何一次寫入,在存儲端,需要分别進行兩次讀+兩次寫,是以說RAID-5的Write Penalty的值是4。

  不同RAID級别的Write Penalty:

  下表列出了各種RAID級别的Write Penalty值:

淺談RAID寫懲罰(Write Penalty)與IOPS計算 Cyrus

  RAID-0:直接的條帶,資料每次寫入對應實體磁盤上的一次寫入

  RAID-1和10:RAID-1 和RAID-10的寫懲罰很簡單了解,因為資料的鏡像存在的,是以一次寫入會有兩次。

  RAID-5:RAID-5由于要計算校驗位的機制存在,需要讀資料、讀校驗位、寫資料、寫校驗位四個步驟,是以RAID-5的寫懲罰值是4。

  RAID-6:RAID-6由于有兩個校驗位的存在,與RAID-5相比,需要讀取兩次校驗位和寫入兩次校驗位,是以RAID-6的寫懲罰值是6。

  計算IOPS:

  根據上文的描述,在實際存儲方案設計的過程中,計算實際可用IOPS的過程中必須納入RAID的寫懲罰計算。計算的公式如下:

  實體磁盤總的IOPS = 實體磁盤的IOPS × 磁盤數目

  可用的IOPS = (實體磁盤總的IOPS × 寫百分比 ÷ RAID寫懲罰) + (實體磁盤總的IOPS × 讀百分比)

  假設組成RAID-5的實體磁盤總共可以提供500 IOPS,使用該存儲的應用程式讀寫比例是50%/50%,那麼對于前端主機而言,實際可用的IOPS是:

  (500 ×50% ÷ 4)+ ( 500 * 50%) = 312.5 IOPS

繼續閱讀