
我有一個由兩個 SSD 組成的 RAID 10 陣列,在 Linux 上使用 mdadm,
我用它創建了
mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md/MyRAID10Array /dev/nvme0n1p3 /dev/nvme1n1p3
但我想知道為什麼當我查看數組時我得到的區塊大小為 65536kb?我也認為 --chunk=512 可能太大了。
來自 cat /proc/mdstat
md127 : active raid10 nvme1n1p3[1] nvme0n1p3[0]
942664704 blocks super 1.2 512K chunks 2 far-copies [2/2] [UU]
[=====>...............] resync = 29.5% (278703616/942664704) finish=55.2min speed=200170K/sec
bitmap: 6/8 pages [24KB], 65536KB chunk
答案1
根據 mdadm 維基https://raid.wiki.kernel.org/index.php/Mdstat,您看到的是點陣圖塊,而不是數組塊。根據上面兩行的消息,數組塊的大小是 512K,正如您所設定的那樣。雖然 wiki 並不完全清楚位圖區塊值的含義,但它確實說「記憶體中位圖為每個位圖區塊使用 16 位元來計算對該區塊的所有正在進行的寫入,因此它實際上最多比磁碟上的位圖。 「點陣圖塊」其實可能是記憶體中位圖的一「頁」的大小。您的陣列僅報告 8 頁位圖,其中 6 頁已載入到記憶體中;重新同步完成後,點陣圖的頁數應該會減少。
答案2
chunk
定義 RAID 陣列元素條帶(即:資料區塊有多大)。來自手冊頁:
-c, --chunk=
Specify chunk size in kilobytes. The default when
creating an array is 512KB.
mdstat
第二行證實了這一點:
942664704 blocks super 1.2 *512K chunks* 2 far-copies [2/2] [UU]
資料塊不同於點陣圖區塊,定義每個位圖位所涵蓋的活動區域。這些類型的區塊要大得多 - 在您的情況下為 64MB:
bitmap: 6/8 pages [24KB], *65536KB chunk*
一般來說,對於 RAID1/10,您不需要調整這些參數。但是,請記住,預設設定是針對旋轉媒體 (HDD) 而不是針對快速 SSD 進行最佳化的,因此,如果您願意,您可以嘗試使用較小的資料區塊(即:8-64K)。不過,我不會費心調整點陣圖。