軟體與硬體 RAID 性能和記憶體使用情況
我已經閱讀了很多關於 RAID 控制器/設置的內容,其中經常出現的一件事是沒有記憶體的硬體控制器如何提供與軟體 RAID 相同的性能。真的是這樣嗎?
我一直認為,即使沒有記憶體,硬體 RAID 卡也會提供更好的性能。我的意思是,你有專門的硬體來執行這些任務。如果是這種情況,那麼獲得沒有記憶體的 RAID 卡有什麼好處,比如 LSI 9341-4i,它並不便宜。
此外,如果性能提升只能通過記憶體實現,是否有記憶體配置可以立即寫入磁碟但將數據保留在記憶體中以進行讀取操作,從而使 BBU 不是優先事項?
**簡而言之:**如果使用低端 RAID 卡(無記憶體),請幫自己一個忙並切換到軟體 RAID。如果使用中高端卡(帶有 BBU 或 NVRAM),那麼硬體通常(但並非總是!見下文)是一個不錯的選擇。
**長答案:**當計算能力有限時,硬體 RAID 卡在解除安裝涉及它們的 RAID 方案(RAID 3/4/5、RAID6、ecc)的奇偶校驗/綜合症計算方面具有顯著優勢。
然而,隨著 CPU 性能的不斷提高,這個優勢基本消失了:即使是我筆記型電腦的古老 CPU(Core i5 M 520,Westmere generation),XOR 性能也超過 4 GB/s,RAID-6 綜合性能超過 3 GB/s 。執行核心。
今天,硬體 RAID 保持的優勢是存在斷電保護的 DRAM 記憶體,以 BBU 或 NVRAM 的形式。這種受保護的記憶體為隨機寫入訪問(和命中的讀取)提供了非常低的延遲,並且基本上將隨機寫入轉換為順序寫入。沒有這種記憶體的 RAID 控制器幾乎是無用的。而且,一些低端的RAID控制器不僅沒有記憶體,還會強行禁用磁碟的私有DRAM記憶體,導致性能比沒有RAID卡時更慢。一個例子是 DELL 的 PERC H200 和 H300 卡:它們完全禁用磁碟的私有記憶體並且(如果更新的韌體沒有改變它)主動禁止重新啟動它。幫自己一個忙,永遠不要購買這樣的控制器。雖然甚至更高端的控制器經常禁用磁碟的私有記憶體,但它們至少有自己的受保護記憶體 - 使得 HDD(但不是 SSD!)私有記憶體有些多餘。
不過,這還不是結束。即使是功能強大的控制器(具有 BBU 或 NVRAM 記憶體的控制器)在與 SSD 一起使用時也會產生不一致的結果,這主要是因為 SSD 確實需要一個快速的私有記憶體來進行高效的 FLASH 頁程式/擦除。雖然一些(大多數?)控制器允許您重新啟用磁碟的私有記憶體(例如:PERC H700/710/710P),但如果該私有記憶體是易失性的,您可能會在斷電時失去數據。確切的行為確實取決於控制器和韌體(例如:在具有 256 MB WB 記憶體和啟用磁碟記憶體的 DELL S6/i 上,我在多次計劃中的斷電測試期間沒有任何損失),帶來了不確定性和很多擔憂。
另一方面,開源軟體 RAID 是更可控的野獸——它們的軟體不包含在專有韌體中,並且具有明確定義的元數據模式和行為。軟體 RAID 做出了(正確的)假設,即磁碟的私有 DRAM 記憶體不受保護,但同時它對於可接受的性能至關重要 - 因此,他們沒有禁用它,而是使用 ATA FLUSH / FUA 命令將關鍵數據寫入穩定儲存。由於它們經常從連接到晶片組 SB 的 SATA 埠執行,它們的頻寬非常好,並且驅動程序支持非常好。
但是,如果與機械 HDD 一起使用,同步的隨機寫入訪問模式(例如:數據庫、虛擬機)與具有 WB 記憶體的硬體 RAID 控制器相比將受到很大影響。另一方面,當與企業級 SSD 一起使用時(即:具有斷電保護的寫記憶體),軟體 RAID 通常會表現出色,並提供比硬體 RAID 卡更高的結果。不幸的是,消費級 SSD 只有易失性寫入記憶體,在同步寫入工作負載中提供非常低的 IOPS(儘管在讀取和非同步寫入方面非常快)。
還要考慮軟體 RAID 並非都是平等的。Windows 軟體 RAID 在性能方面名聲不佳,甚至儲存空間似乎也沒有太大區別。Linux MD Raid 異常快速且用途廣泛,但 Linux I/O 堆棧由多個獨立的部分組成,您需要仔細了解這些部分以獲取最大性能。ZFS 奇偶校驗 RAID (ZRAID) 非常先進,但如果配置不正確,IOPS 可能會很差*;*另一方面,鏡像+條帶化的表現相當不錯。無論如何,它需要一個用於同步寫入處理 (ZIL) 的快速 SLOG 設備。
底線:
- 如果您的工作負載不同步隨機寫敏感,則不需要 RAID 卡
- 如果需要 RAID 卡,請不要購買沒有 WB 記憶體的 RAID 控制器
- 如果您打算使用 SSD,則首選軟體 RAID,但請記住,對於高度同步的隨機寫入,您需要具有斷電保護的 SSD(即:Intel S/P/DC、Samsung PM/SM 等)。對於純粹的性能,最好的選擇可能是 Linux MD Raid,但現在我通常使用條帶 ZFS 鏡像。如果您無法承受由於鏡像而損失一半空間並且您需要 ZFS 高級功能,請使用 ZRAID,但請仔細考慮您的 VDEV 設置。
- 如果您即使使用 SSD,也確實需要硬體 RAID 卡,請使用帶有防寫記憶體的 SSD。
- 如果您在使用普通機械硬碟時需要 RAID6,請考慮購買具有 512 MB(或更多)WB 記憶體的快速 RAID 卡。RAID6 具有較高的寫入性能損失,適當大小的 WB 記憶體至少可以為小型同步寫入(例如:文件系統日誌)提供快速的中間儲存。
- 如果您需要帶有 HDD 的 RAID6 但您不能/不想購買硬體 RAID 卡,請仔細考慮您的軟體 RAID 設置。例如,Linux MD Raid 的一個可能解決方案是使用兩個陣列:一個用於日誌寫入/DB 日誌的小型 RAID10 陣列,一個用於原始儲存(作為文件伺服器)的 RAID6 陣列。另一方面,帶有 SSD 的軟體 RAID5/6 非常快,因此您可能不需要 RAID 卡來設置全 SSD。