web-dev-qa-db-ja.com

mdadm raid1と4kドライブのチャンクサイズ(またはブロックサイズ)

Mdadm raid1セットアップで2つの3 TBドライブを使用したい(Debian Sequeezeを使用)。

ドライブは、従来の512バイトセクタの代わりに4kハードウェアセクタを使用します。

一方ではカーネルが次のように報告するため、私は少し混乱しています。

$ cat /sys/block/sdb/queue/hw_sector_size
512

しかし一方で、fdiskは次のように報告します。

# fdisk -l /dev/sdb
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

したがって、カーネルはドライブが4kセクターを使用するという考えを持っているようです。

mdadmのmanページは、チャンクサイズとraid1について少しわかりにくいです。

   -c, --chunk=
          Specify chunk size of kibibytes.  The default when  creating  an
          array  is 512KB.  To ensure compatibility with earlier versions,
          the default when Building and array with no persistent  metadata
          is  64KB.   This  is  only  meaningful  for RAID0, RAID4, RAID5,
          RAID6, and RAID10.

Raid1に意味がないのはなぜですか?

/proc/mdstatを見ると、raid1デバイスmd8には2930265424ブロックがあります。

3000591794176/2930265424/2 = 512

mdadmは512バイトのブロックサイズを使用しますか? (2面ミラーだから/ 2)

チャンクサイズはブロックサイズとは異なる概念ですか?

mdadmexplainをデバイスに許可しようとしています:

# mdadm -E /dev/sdb -v -v
Avail Dev Size : 5860531120 (2794.52 GiB 3000.59 GB)
Array Size : 5860530848 (2794.52 GiB 3000.59 GB)

どこ

3000591794176/5860530848 = 512

Mdデバイスのデフォルトmkfs.xfsでは、次のように報告されます。

sectsz=512
bsize=4096

mkfs.xfs -s size=4096 /dev/md8を呼び出してこれを修正しました

編集:周りを少しテストすると、次のことがわかりました。

最初の再同期は128kのブロックサイズで行われているようです(512バイトではありません):

md: resync of RAID array md8
md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync.
md: using 128k window, over a total of 2930265424 blocks.

/proc/mdstatを介して表示される速度は、そのブロックサイズで一定です(512バイトの場合、パフォーマンスヒットが予想されます)。

[>....................]  resync =  3.0% (90510912/2930265424) finish=381.1min speed=124166K/sec

(たとえば、書き込みキャッシュを無効にすると、表示される速度はすぐに18m /秒に低下します)

/sysの下には、実際にはhw_sector_size以外にも関連するファイルがあります。

# cat /sys/block/sdb/queue/physical_block_size
4096
# cat  /sys/block/sdb/queue/logical_block_size
512

つまり、ドライブはカーネルの4kセクターサイズについて嘘をつかず、カーネルは(fstab -lの出力が示唆するように)4kセクターをサポートしています。

少しグーグルすると、WDディスクに関するいくつかのレポートが表示され、4kサイズは報告されません-幸い、この3 TB WDディスクはそれを行いません-おそらくWDが現在のディスクでファームウェアを修正しました。

13
maxschlepzig

ストライピングがないため、チャンクサイズはraid1には適用されません。基本的に、ディスク全体は1つのチャンクです。つまり、4kの物理セクターサイズを気にする必要はありません。 mdadmの最近のバージョンでは、カーネルからの情報を使用して、データの先頭が4kb境界に揃えられていることを確認しています。 1.xメタデータ形式を使用していることを確認してください。

16
psusi