Ubuntu

在 Ubuntu 14.04 機器上,軟體 RAID 10 並不比軟體 RAID 5 快,為什麼?

  • November 28, 2014

我們正在使用 4 x 240 GB SSD 磁碟的新數據庫伺服器上進行一些測試。從我讀到的內容來看,RAID 10 應該比 RAID 5 更快,具有相同的“一個磁碟失去正常”冗餘。

然而,當使用 bonnie++ 進行測試時,似乎 RAID 10 並不比 RAID 5 快。知道為什麼嗎?

RAID5(所有 4 個磁碟):

# cat /proc/mdstat
md2 : active raid5 sdd3[4] sdc3[2] sda3[0] sdb3[1]
     688730112 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md2        647G  1.6G  613G   1% /

# bonnie++ -d /tmp -u root

Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
db1a           252G  1113  99 474860  26 327393  16  5943  99 1192788  23 +++++ +++

Sequential write:   0.474 G/s
Sequential rewrite: 0.327 G/s
Sequential read:    1.192 G/s

RAID10:

# cat /proc/mdstat
md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0]
     459153408 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md2        431G  1.6G  408G   1% /

# bonnie++ -d /tmp -u root

Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
db1a           252G  1221  99 492972  27 323392  15  5688 100 1178194  23 +++++ +++

Sequential write:   0.492 G/s
Sequential rewrite: 0.323 G/s
Sequential read:    1.178 G/s

更新

我使用 iozone 執行了 RAID 10 測試,以查看多執行緒基準測試是否會在假設 bonnie++ 報告的 99%-100% CPU 可能表明存在瓶頸的情況下表現更好:

# iozone -R -i 0 -i 1 -l 12 -u 12 -r 8k -s 22G
(12 threads, 8k block size, total file size of 264G)

"  Initial write "  538817.21  0.538 G/s
"        Rewrite "  511450.04  0.511 G/s
"           Read " 1087437.45  1.087 G/s
"        Re-read " 1201127.73  1.201 G/s
"    Random read "  576435.70  0.576 G/s
"   Random write "  400612.46  0.400 G/s

結果略好於bonnie++,但也不多。

RAID 5 的 iozone 結果:

"  Initial write "  516469.10   0.516 G/s
"        Rewrite "  489970.21   0.489 G/s
"           Read " 1116074.84   1.116 G/s
"        Re-read " 1116666.97   1.116 G/s
"    Random read "  611738.43   0.611 G/s 
"   Random write "  199486.44   0.199 G/s

因此,正如答案中所解釋的那樣,RAID 10 隨機寫入性能是 RAID 5 的兩倍,但所有其他統計數據都相似或稍好一些。

從我讀到的內容來看,RAID 10 應該比 RAID 5 更快,具有相同的“一個磁碟失去正常”冗餘。

我不同意。

讓我們看看讀取——在這裡,沒有理由應該有任何區別。兩者都可以讓您從所有四個驅動器讀取數據並使用它們的全部頻寬。使用 RAID 5,除非需要,否則不會讀取奇偶校驗,因此沒有區別。

現在,讓我們看看寫入。對於 RAID 10,頻寬減半,因為每次寫入必須執行兩次。使用 RAID 5,它並沒有那麼糟糕。我們必須寫出奇偶校驗,但只有 1/4 的數據是奇偶校驗(我們每寫入 3 個字節的數據,我們必須寫入一個字節的奇偶校驗)。所以 RAID 10 將頻寬減半,RAID 5 有 33% 的損失。所以 RAID 10 在這裡稍微差一點。

為什麼 RAID 10 應該更好?(假設沒有設備故障。)

引用自:https://serverfault.com/questions/647302