RAID 控制卡

目前 raid 控制器基本是 LSI 的天下,分下面的幾個方面紀錄些基本的方面。

* write policy
write policy 決定 raid 控制器是在數據寫入到 cache 後還是在寫入到磁盤後發出結束寫的請求。

對於 write through 來說,進行一次寫操作的時間是寫入 cache 加上寫入磁盤的時間總和,這在很大程度上會影響磁盤的性能,主存的速度比 cache 慢的多。
而對於 write back 來說則不存在寫的延時,數據被直接寫入 cache,只有當 cache 滿了或者需要時纔會寫入磁盤。當然二者各有利弊。

這裏有個簡單的僞代碼解釋了使用 write back 產生的問題:
IF !(using(UPS)) = TRUE
AND !(using(battery_on_RAID_controller)) = TRUE
AND power_feed_halt = TRUE
THEN file_corruption = TRUE.

因此,如果系統不能容忍數據的丟失,使用 write throuth,但這會造成 I/O 的下降,如果要使用 write back,儘量配備 UPS 或者給 RAID 加電池。


* read policy:
raid 配置上的 read policy 決定 raid 卡控制器是否會順序的讀取磁盤的 sector。
read ahead 策略表示當獲取數據時,raid 控制器會順序的讀取邏輯磁盤上的 sector。如果數據本身就是順序寫的話,read ahead 可以提高系統的性能。 no read ahead 表示不會使用 read ahead 的策略。
adaptive read ahead 也就是會自適應的 read ahead,其條件是,最近的兩次讀是順序讀,否則則變成 no read ahead。


* cache policy
cache policy 決定所有的讀是否先 buffer 到 cache 中。
cache I/O 表示所有的讀先 buffer 到 cache 內存中。
direct I/O 表示讀操作不 buffer 到 cache 中。
這裏有個測評,主流的配置,direct 完勝 cache。

對於 write policy 來說,是 back 還是 through 要看具體的業務; read policy 選擇 adaptive read ahead 無爭議;cache 對於所有的 RAID 來說,選擇 direct I/O。


* strip size VS stripe size
strip size 是可以配置的,而 stripe 則表示同類的 strips,這個由 strip 以及 RAID level、磁盤的數量決定,這個文檔給出的例子是 strip 是 256KiB,stripe 則是 256×3=768KiB。
再比如這個文檔中提到的, 4+1 塊磁盤做 RAID5,4 塊 spindles,1 塊做  parity bits。因此 stripe width 就是 4,架設 stripe segment size(strip size) 爲128KB,那麼 stripe size 則是 4×128=512KB。
LSI 默認是 64KiB 大小的 strip size。看過不少測評,一般比較通用的是將 strip size 設置爲 256 或者 512。不過這個對於性能的提升並不是十分的明顯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章