RAID1 是否可以提高 Linux mdadm 的效能?

RAID1 是否可以提高 Linux mdadm 的效能?

我有一台便宜的 2 盤 NAS,配有 2TB 硬碟。為了抵​​禦磁碟故障,我正在考慮購買第二個 2TB HDD,並將其放入帶有 Linux mdadm 的 RAID1 中。檔案系統是ext4。

這會提高還是降低 NAS 的效能?僅僅讀取或寫入效能怎麼樣?

網路上對此似乎有很多意見,但沒有共識。

謝謝。

編輯:

所以我已經得到了三個不同的答案:“更快一點”,“你不會注意到”和“如果有的話,會降低性能”。 (我主要對讀取效能感興趣。)維基百科說「讀取效能可以大致以副本數量的線性倍數上升」。哪一個?

編輯2:

我發現越來越多的證據支持 RAID1 提高讀取效能,包括 MD 線上說明頁:

變更會並行寫入所有裝置。從任何一台設備讀取資料。驅動程式嘗試在所有裝置上分配讀取請求以最大限度地提高效能。

我還發現了 MD 的 RAID10 --layout=f2,它提供 RAID1 的冗餘和 RAID0 的讀取性能,並且只需兩個驅動器即可使用。然而,寫入效能會降低,因為順序寫入涉及兩個磁碟機在磁碟機的較遠部分之間來回尋找。man md了解詳情。

答案1

是的,Linux 實現的 RAID1 只要同時執行兩個獨立的磁碟讀取操作,磁碟讀取操作的速度就會提高兩倍。這意味著在 RAID1 上讀取一個 10GB 檔案不會比在單一磁碟上讀取速度更快,但讀取兩個不同的 10GB 檔案*會更快。

為了演示它,只需使用 讀取一些數據dd。在執行任何操作之前,請使用 清除磁碟讀取快取sync && echo 3 > /proc/sys/vm/drop_caches。否則hdparm就會聲稱讀取速度超快。

單一文件:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

兩個文件:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

讀取10GB資料需要65秒,而讀取10GB+10GB=20GB資料總共需要68.7秒,這意味著多磁碟讀取從 RAID1 中受益匪淺在 Linux 上。skip=$COUNT部分非常重要。第二個進程從 10 GB 偏移量讀取 10 GB 資料。

Jared 的回答和 ssh 的評論參考http://www.unicom.com/node/459錯了。那裡的基準測試證明磁碟讀取不會從 RAID1 中受益。然而,測試是使用 bonnie++ 基準測試工具執行的,該工具不會同時執行兩個單獨的讀取。作者明確指出 bonnie++ 不可用於 RAID 陣列基準測試(請參閱自述文件)。

答案2

是的,您將獲得讀取效能提升+冗餘。您可以輕鬆想像,因為檔案位於兩個硬碟上,所以您可以同時從兩個不同的硬碟上讀取檔案的部分內容。

因此理論上,如果 RAID 控制器正確完成其工作,您可以獲得 O(n) 的加速。

答案3

不,從 mdadm RAID1 讀取時您不會獲得任何好處。前陣子我也在問自己這個問題。

dstat顯示磁碟使用情況,也bwm-ng確實很有幫助,尤其是在這種情況下,因為它可以顯示單獨的 mdadm RAID 成員上的讀取/寫入使用情況。只要按n(next)幾次,就會從介面統計切換到磁碟統計。然後切換到最大值以t查看每個磁碟的最大讀/寫次數。您將看到以下內容:

寫入 RAID1 磁碟區 bwm-ng 顯示 2 x 寫入,同時寫入 2 個磁碟。從 RAID1 磁碟區 bwm-ng 讀取顯示從單一磁碟機(陣列成員)讀取。

答案4

是的和同時否。預設情況下,RAID 1「預讀」參數太低,無法注意到單一檔案傳輸的好處,但您所需要做的就是調整它。

為了檢查您的值類型:

# blockdev --getra /dev/md0
256

現在您可以為每個 raid 裝置設定預讀(在 512 位元組磁區中)。語法是:

## Set read-ahead to 32 MiB ##
# blockdev --setra 65536 /dev/md0

在大多數情況下,僅設定此參數將使單一檔案讀取速度加倍(假設兩個磁碟機相同)。

注意:這適用於所有 raid 配置。

相關內容