當我們建立分散式檔案系統時,我正在對節點進行一些基準測試。由於檔案將在許多節點上分佈和複製,因此我們在節點本身上使用 raid0。然而,我得到了一些奇怪的性能數據,我很好奇 StackOverflow 社群是否可以幫助找出原因。我使用 fio 作為我的基準測試工具;請注意,1.38 版本不適合我,我需要使用 1.59 或 1.60 版本。
這是我的 fio 設定檔:
[global]
directory=/mnt/gluster
lockfile=readwrite
ioengine=libaio
iodepth=8
rw=randrw
nrfiles=200
openfiles=30
runtime=900
[file]
filesize=16-8k/8M-512M
size=1GiB
對於使用軟體 raid 的 raid0,我得到了以下結果(摘錄要點):
read : io=285240KB, bw=324535 B/s, iops=79 , runt=900011msec
write: io=283532KB, bw=322592 B/s, iops=78 , runt=900011msec
在使用軟體 raid 的 raid1 上,我得到以下結果:
read : io=683808KB, bw=778021 B/s, iops=189 , runt=900000msec
write: io=488184KB, bw=628122 B/s, iops=153 , runt=795864msec
單盤性能仍勝過raid0性能:
read : io=546848KB, bw=622179 B/s, iops=151 , runt=900018msec
write: io=486736KB, bw=591126 B/s, iops=144 , runt=843166msec
LVM 在四個具有 4k 擴充的磁碟上進行條帶化:
read : io=727036KB, bw=827198 B/s, iops=201 , runt=900007msec
write: io=489424KB, bw=604693 B/s, iops=147 , runt=828800msec
硬體 RAID0 (HighPoint RocketRaid 2470)
read : io=326884KB, bw=371918 B/s, iops=90 , runt=900008msec
write: io=328824KB, bw=374125 B/s, iops=91 , runt=900008msec
請注意,上面的前四個結果僅在主機板的 SATA 控制器上運行。然而,在轉移到 RocketRaid 卡後,我用軟體 RAID 重現了結果。這些是 1tb SATA 驅動器。運行多執行緒測試得出了大致相同的結果。 RAID0 運轉速度這麼慢有什麼原因嗎?我認為它將提供優於單一磁碟機或 RAID1 的隨機 I/O 效能。
後續:根據可擴展資訊學的 Joe 的一些建議(好人,買他的東西!),我更改了測試以使用更深的隊列和更隨機的區塊大小。
[global]
directory=/mnt/glusterfs
lockfile=readwrite
ioengine=libaio
iodepth=32
rw=randrw
numjobs=8
[file]
filesize=16-8k/8M-512M
blocksize_range=64k-1M
size=1GiB
nrfiles=50
openfiles=8
runtime=900
最終結果是 HighPoint RocketRaid 2740 卡很糟糕。
- 單磁碟效能(SuperMicro 主機板 SATA):讀取 43.2mb/s,寫入 42.6mb/s
- MD Raid 0(RocketRAID 用作 HBA,載入或不載入驅動程式):53.1 mb/s 讀取,54.1 mb/s 寫入
- RocketRaid Raid 0:29.4 mb/s 讀取,29.2 mb/s 寫入
- MD RAID 0(主機板 SATA):58.0 mb/s 讀取,58.3mb/s 寫入
與 RocketRaid 卡連接的性能全面降低。
我將保留這個問題 - 我們將在接下來的一兩週內獲得一系列新的 RAID 卡以便進行測試,並且我仍在尋找獲得不僅僅是單磁碟性能的優化技巧,這似乎還沒有得到徹底的回答。
答案1
您可能會遇到條帶大小問題,其中寫入或讀取的資料是單一磁碟的熱點 - 請參閱軟體 RAID 操作指南了解詳情。您可以透過查看輸出來檢查是否是這種情況iostat。
如果您想檢查線性存取效能,請嘗試使用「hdparm -t」或 dd 進行基準測試 - 這應該顯示大約是單一磁碟效能的兩倍的效能數字。
答案2
我認為它將提供優於單一磁碟機或 RAID1 的隨機 I/O 效能。
不,如果您隨機搜尋的區塊大於條帶大小,那麼它應該大約是單一磁碟機的速度。這仍然不能解釋你的結果比單一驅動器更糟糕。
從維基百科。
對於大於條帶大小的讀取和寫入,例如複製檔案或視訊播放,磁碟將在每個磁碟上尋找相同的位置,因此陣列的尋道時間將與單一磁碟機的尋道時間相同。對於小於條帶大小的讀取和寫入(例如資料庫存取),磁碟機將能夠獨立尋道。