¿Es posible cambiar el tamaño del sector de una partición para zfs raidz pool en linux?

9

He estado migrando un grupo zfs raidz en Linux a nuevos discos a través de dispositivos virtuales que eran archivos dispersos. He usado particiones en los discos ya que los discos son de diferentes tamaños de 1.9T cada uno. El último disco para agregar es un disco de 4Tb y lo particioné como los otros con una partición de 1.9T para agregar al grupo. Está usando una tabla de partición GPT. Cuando trato de reemplazar el último archivo con la partición 1.9T en el disco 4T obtengo lo siguiente

zpool replace -f zfs_raid /zfs_jbod/zfs_raid/zfs.2 /dev/sdd1 
cannot replace /zfs_jbod/zfs_raid/zfs.2 with /dev/sdd1: devices have different sector alignment

¿Cómo puedo cambiar el tamaño del sector de partición para que sea 512 como los demás, o si no es posible, es posible cambiar los otros dispositivos del grupo a 4024? Aparentemente, los tamaños de sector lógicos son todos 512

cat /sys/block/sdd/queue/hw_sector_size
Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Como he reparticionado el disco que contenía el 4to dispositivo original basado en el archivo que estoy tratando de reemplazar pero no funcionó, recreé el archivo del dispositivo, por lo que actualmente está recuperando eso.

salida de estado de zpool:

NAME                            STATE     READ WRITE CKSUM
zfs_raid                        DEGRADED     0     0     0
  raidz1-0                      DEGRADED     0     0     0
    sda3                        ONLINE       0     0     0
    sdc2                        ONLINE       0     0     0
    sdb1                        ONLINE       0     0     0
    replacing-3                 OFFLINE      0     0     0
      /zfs_jbod/zfs_raid/zfs.2  OFFLINE      0     0     0
      /mnt/butter2/zfs.4        ONLINE       0     0     0  (resilvering)
barrymac
fuente
¿No puedes hacerlo? Zfs adjuntar zfs_raid <archivo> <dispositivo> y después de sincronizar zfs separar zfs_raid <archivo>
BitsOfNix
¿No conectar un quinto dispositivo expandiría la matriz de manera irreversible? o tal vez te refieres a algo como agregar un repuesto?
barrymac
No agrega un repuesto o agrega un disco nuevo, hace zpool attach pool old_device new_device, esto reflejará el old_device al new_device, luego desconectará el old_device de su espejo después del resilver: docs.oracle.com/cd/E26502_01/html/E29007/ gayrd.html # scrolltoc <- información sobre adjuntar / separar y las diferencias entre agregar y adjuntar.
BitsOfNix
Eso parecía prometedor porque desafortunadamente devolvió un "no se puede adjuntar / dev / sdd1 a /zfs_jbod/zfs_raid/zfs.2: solo se puede conectar a espejos y discos de nivel superior"
barrymac
¿Podría poner su estado actual de zpool zfs_raid, para ver el diseño de la incursión?
BitsOfNix

Respuestas:

4

¡Encontré la opción necesaria! el grupo está actualizando la nueva partición después de emitir el siguiente comando:

 zpool replace  -o ashift=9 zfs_raid <virtual device> /dev/sdd1

Aunque esto es posible, no es recomendable porque obtienes un rendimiento terrible al forzar que una unidad de tipo 4k se escriba como 512b. He aprendido por las malas que uno debería agregar

-o ashift=12 

al crear el grupo para evitar tener que volver a crearlo más tarde, ya que actualmente no es posible 'migrar' al tamaño del sector 4k.

barrymac
fuente