由於raidz有多種組合,對於硬碟數量比較多的人確實有必要了解一下什麼樣的組合效能才是最好,當然可用的最大空間也是考量之一,因此底下的測試也有把可用空間寫進去。
說明一下我的測試環境:
CPU:CPU E5-2660 v4 *2
RAM:64G*4=256GB
HDD:Segate 7200RPM 1TB*28顆硬碟
主機板型號:X10DSC+
機殼型號:6048R-E1CR60L
SAS卡型號:AOC-S3008L-L8-P 使用晶片是LSI 3008
背板型號:BPN-SAS3-946SEL1
底下的測試主要參考這兩頁而來:calomel.org、icesquare.com、
格式 | 組數 | 硬碟數 | 可用總容量 | 寫MB/s | 讀MB/s | 備註 |
raidz3 | 1 | 28 | 22T | 541 | 700 | |
raidz3 | 2 | 14 | 20T | 566 | 769~780 | |
raidz3 | 4 | 7 | 14T | 525 | 751 | |
raidz2 | 1 | 28 | 23T | 548 | 718 | |
raidz2 | 2 | 14 | 21T | 566~580 | 823~830 | 註1 |
raidz2 | 3 | 9 | 19T | 539 | 542 | 註2 |
raidz2 | 4 | 7 | 18T | 544 | 906 | |
raidz1 | 1 | 28 | 24T | 551 | 692 | |
raidz1 | 2 | 14 | 23T | 576 | 880 | |
raidz1 | 4 | 7 | 21T | 565 | 889 | |
raid0 | 1 | 28 | 25T | 592 | 1126 | 註3 |
mirror | 1 | 28 | 899G | 202 | 585 | |
mirror | 2 | 14 | 1.8T | 441 | 652 | |
mirror | 14 | 2 | 13T | 579 | 939 | 註4 |
底下是 mdadm raid0的測試報告
硬碟數量 | 28顆 | 13顆 | 8顆 | 4顆 |
寫入速度 | 1.3GB/s | 976 MB/s | 919 MB/s | 876 MB/s |
注意上面的硬碟數,從最少的看起4顆就有876MB/s,但可不是隨著硬碟越多,速度就會跟著往上升...跟什麼因素有關,目前我不清楚。
網友提醒我 zfs pool 預設的 record size 是 128kb,可參閱此頁。建議我的dd測試指令可改用128kb來測試看看。
1kb=1024bytes
128kb → 1024*128 = 131072 bytes
256kb → 1024*256 = 262144 bytes 因此我們的測試指令改為
寫入測試指令
dd if=/dev/zero of=/vic2/file.out bs=131072 count=40000 &
上面的bs=131072 可簡寫成 bs=128k
讀取測試指令
dd if=/vic2/file.out if=/dev/zero bs=131072 &
測出來的寫入速度
raid0 有達到最高3GB/s
mirror 2顆*14組 達 2.5GB/s
但是讀取速度就少的可憐了,都只有11MB/s
由於效能最好的raid0跟mirror測出來的讀取速都只有11MB/s這麼低,因此就不多做其它組合的測試了,意義不大。
使用dd 指定 bs=128k 的方式來測寫入速度,請參考下圖
上圖是使用此指令 zpool iostat vic2 -v 1 來看的。
3.5" HDD 7200轉的傳輸速率在 65~115MB/s 之間,上圖的每顆單碟的速度都接近100MB/s了,這個128k的寫入測試,可說是把單碟的最高效能給逼出來了。
2.64GB/s 這數字是浮動的,我看到最高達 3GB/s ,總共28顆硬碟,也就是說單碟速度有超過 100MB/s。
此測試報告主要是要確認此台主機硬體的架構沒有問題即可,之前我擔心是否SAS卡或背板(expander)頻寬有效能不足的問題,經此測試確認了沒有效能不足的問題之後,就可安心使用了。美超微有針對我這台機器提供了測試報告給我,我這台機器背板的頻寬上限是6GB/s 他的測試是大約在25顆左右的硬碟數量即達此極限。