
私はLinux上でmdadmを使用して2つのSSDで構成されたRAID 10アレイを持っています。
私はこれを作りました
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 wikiによると参考文献ここで見ているのはビットマップ チャンクであり、配列チャンクではありません。配列チャンクのサイズは、その 2 行上のメッセージによると、設定したとおり 512K です。ウィキではビットマップ チャンク値の意味が明確に説明されていませんが、「メモリ内ビットマップは、各ビットマップ チャンクに 16 ビットを使用して、チャンクへの進行中のすべての書き込みをカウントするため、実際にはディスク上のビットマップより最大 16 倍大きくなります」と書かれています。「ビットマップ チャンク」は、実際にはメモリ内のビットマップの 1「ページ」のサイズである可能性があります。配列は 8 ページのビットマップのみを報告しており、そのうち 6 ページがメモリにロードされています。再同期が完了すると、ビットマップのページ数は減少するはずです。
答え2
chunk
RAIDアレイ要素のストライプ(つまり、データの断片(チャンク)の大きさ)を定義します。マニュアルページ:
-c, --chunk=
Specify chunk size in kilobytes. The default when
creating an array is 512KB.
これは2行目によって確認されますmdstat
:
942664704 blocks super 1.2 *512K chunks* 2 far-copies [2/2] [UU]
データチャンクはビットマップチャンクは、各ビットマップのビットによってカバーされるアクティブ ゾーンを定義します。これらの種類のチャンクははるかに大きく、この場合は 64 MB です。
bitmap: 6/8 pages [24KB], *65536KB chunk*
一般的に、RAID1/10 ではこれらのパラメータを調整する必要はありません。ただし、デフォルトは高速 SSD ではなく回転メディア (HDD) 用に最適化されていることに注意してください。そのため、必要に応じて、より小さなデータ チャンク (つまり、8-64K) で実験することができます。ただし、ビットマップの調整は行いません。