mdadm raid1 y qué tamaño de bloque (o tamaño de bloque) en unidades 4k?

13

Quiero usar dos unidades de 3 TB en una configuración mdadm raid1 (usando Debian Sequeeze).

Las unidades utilizan sectores de hardware 4k en lugar de los tradicionales de 512 bytes.

Estoy un poco confundido porque, por un lado, el núcleo informa:

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

Pero por otro lado fdiskinforma:

# 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

Por lo tanto, parece que el núcleo tiene alguna idea de que la unidad utiliza 4k sectores.

La mdadmpágina del manual es un poco críptica sobre el tamaño del fragmento y la incursión1:

   -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.

¿Por qué no tiene sentido para raid1?

Mirando /proc/mdstat, el dispositivo raid1 md8 tiene 2930265424 bloques, es decir

3000591794176/2930265424/2 = 512

¿ mdadmUtiliza entonces un tamaño de bloque de 512 bytes? (/ 2 porque es un espejo de dos vías)

¿Y el tamaño de fragmento es un concepto diferente al tamaño de bloque?

Intentando dejar mdadm explicar 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)

Dónde

3000591794176/5860530848 = 512

Con un valor predeterminado mkfs.xfsen el dispositivo md, informa:

sectsz=512
bsize=4096

Lo corregí con una llamada de mkfs.xfs -s size=4096 /dev/md8

Editar: probando un poco, noté lo siguiente:

Parece que la resincronización inicial se realiza con un tamaño de bloque de 128k (y no 512 bytes):

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 velocidad mostrada a través de /proc/mdstates consistente para ese tamaño de bloque (para 512bytes uno esperaría un golpe de rendimiento):

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

(Por ejemplo, al deshabilitar la caché de escritura, la velocidad mostrada cae inmediatamente a 18 m / s)

Debajo /syshay en realidad algunos archivos más relevantes además de hw_sector_size:

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

Eso significa que la unidad no le miente al kernel sobre su tamaño de sector de 4k y el kernel tiene algún soporte de sector de 4k (como se fstab -lsugiere en la salida ).

Buscar un poco en Google dio como resultado algunos informes sobre discos WD, que no informan el tamaño de 4k, afortunadamente este disco WD de 3 TB no hace eso, tal vez WD arregló su firmware con los discos actuales.

maxschlepzig
fuente

Respuestas:

16

El tamaño del fragmento no se aplica a la incursión1 porque no hay rayas; esencialmente todo el disco es un trozo. En resumen, no necesita preocuparse por el tamaño del sector físico de 4k. Las versiones recientes de mdadm utilizan la información del núcleo para asegurarse de que el inicio de los datos esté alineado con un límite de 4 kb. Solo asegúrese de estar utilizando un formato de metadatos 1.x.

psusi
fuente