mdadm raid1 e che dimensioni (o blocchi) su unità 4k?


13

Voglio usare due unità da 3 TB in una configurazione mdadm raid1 (usando Debian Sequeeze).

Le unità utilizzano settori hardware 4k anziché quelli tradizionali da 512 byte.

Sono un po 'confuso perché da un lato il kernel riporta:

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

Ma d'altra parte fdiskriporta:

# 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

Quindi, sembra che il kernel abbia qualche idea che l'unità usi settori 4k.

La mdadmpagina man è un po 'enigmatica per quanto riguarda le dimensioni del pezzo e il 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.

Perché non è significativo per raid1?

Guardando /proc/mdstat, il dispositivo raid1 md8 ha 2930265424 blocchi, vale a dire

3000591794176/2930265424/2 = 512

Non mdadmutilizzare poi un blocksize di 512 byte? (/ 2 perché è un mirror a due vie)

E la dimensione del pezzo è un concetto diverso rispetto alla dimensione del blocco?

Cercare di mdadm spiegare un dispositivo:

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

Dove

3000591794176/5860530848 = 512

Con un valore predefinito mkfs.xfssul dispositivo md, segnala:

sectsz=512
bsize=4096

Ho corretto questo con una chiamata di mkfs.xfs -s size=4096 /dev/md8

Modifica: testando un po 'ho notato le seguenti cose:

Sembra che la risincronizzazione iniziale venga eseguita con una dimensione di blocco di 128k (e non 512 byte):

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.

La velocità visualizzata tramite /proc/mdstatè coerente per quella dimensione di blocco (per 512bytes ci si aspetterebbe un impatto sulle prestazioni):

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

(Ad esempio quando si disabilita la cache di scrittura la velocità visualizzata scende immediatamente a 18m / sec)

Sotto /sysci sono in realtà alcuni file più rilevanti oltre a hw_sector_size:

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

Ciò significa che l'unità non mente al kernel circa la sua dimensione del settore 4k e il kernel ha un supporto del settore 4k (come l'output di fstab -lsuggerito).

Googling un po 'in giro ha portato ad alcuni rapporti sui dischi WD, che non riportano la dimensione di 4k - fortunatamente questo disco WD da 3 TB non lo fa - forse WD ha riparato il proprio firmware con i dischi attuali.

Risposte:


16

La dimensione del blocco non si applica a raid1 perché non è presente lo striping; essenzialmente l'intero disco è un pezzo. In breve, non devi preoccuparti delle dimensioni del settore fisico 4K. Le versioni recenti di mdadm usano le informazioni del kernel per assicurarsi che l'inizio dei dati sia allineato a un limite di 4kb. Assicurati solo di utilizzare un formato di metadati 1.x.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.