MDADM チャンク値

MDADM チャンク値

私は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

chunkRAIDアレイ要素のストライプ(つまり、データの断片(チャンク)の大きさ)を定義します。マニュアルページ:

-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) で実験することができます。ただし、ビットマップの調整は行いません。

関連情報