mdadm raid1 und welche chunksize (oder blocksize) auf 4k laufwerken?

13

Ich möchte zwei 3-TB-Laufwerke in einem mdadm raid1-Setup verwenden (unter Verwendung von Debian Sequeeze).

Die Laufwerke verwenden 4k-Hardware-Sektoren anstelle der herkömmlichen 512-Byte-Sektoren.

Ich bin etwas verwirrt, weil der Kernel zum einen meldet:

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

Aber andererseits fdiskberichtet:

# 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

Daher hat der Kernel anscheinend eine Vorstellung davon, dass das Laufwerk 4k-Sektoren verwendet.

Die mdadmManpage ist etwas kryptisch in Bezug auf die Blockgröße und 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.

Warum ist es für raid1 nicht sinnvoll?

Betrachtet man /proc/mdstat, hat das Gerät raid1 md8 2930265424 Blöcke, dh

3000591794176/2930265424/2 = 512

Hat mdadmdann mit einer Blockgröße von 512 Bytes? (/ 2 weil es ein Zwei-Wege-Spiegel ist)

Und ist die Blockgröße ein anderes Konzept als die Blockgröße?

Versuchen mdadm , ein Gerät erklären zu lassen :

# 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)

Wo

3000591794176/5860530848 = 512

Mit einer Standardeinstellung mkfs.xfsauf dem md-Gerät wird Folgendes gemeldet:

sectsz=512
bsize=4096

Ich habe das mit einem Aufruf von korrigiert mkfs.xfs -s size=4096 /dev/md8

Bearbeiten: Testen ein bisschen herum Ich habe festgestellt, folgende Dinge:

Es scheint, dass die anfängliche Neusynchronisierung mit einer Blockgröße von 128 KB (und nicht 512 Byte) durchgeführt wird:

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.

Die angezeigte Geschwindigkeit über /proc/mdstatist für diese Blockgröße konsistent (für 512 Byte würde man einen Leistungseinbruch erwarten):

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

(Wenn Sie beispielsweise den Schreibcache deaktivieren, sinkt die angezeigte Geschwindigkeit sofort auf 18 m / s.)

Darunter /sysbefinden sich noch einige weitere relevante Dateien hw_sector_size:

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

Das bedeutet, dass das Laufwerk den Kernel nicht über seine 4k-Sektorgröße belügt und der Kernel eine gewisse 4k-Sektorunterstützung hat (wie von der Ausgabe fstab -lvorgeschlagen).

Ein bisschen herum googeln führte zu ein paar Berichten über WD-Festplatten, die nicht die 4-KB-Größe melden - zum Glück tut dies diese 3-TB-WD-Festplatte nicht - vielleicht hat WD ihre Firmware mit aktuellen Festplatten repariert.

maxschlepzig
quelle

Antworten:

16

Die Blockgröße gilt nicht für raid1, da kein Striping vorhanden ist. Im Wesentlichen ist die gesamte Festplatte ein Stück. Kurz gesagt, Sie müssen sich keine Gedanken über die Größe des physischen Sektors von 4 KB machen. Aktuelle Versionen von mdadm verwenden die Informationen aus dem Kernel, um sicherzustellen, dass der Datenanfang an einer 4-KB-Grenze ausgerichtet ist. Stellen Sie einfach sicher, dass Sie ein 1.x-Metadatenformat verwenden.

Psusi
quelle