¿Cómo crear un espejo ZFS con discos de diferentes tamaños de sector?

3

Tratando de reparar un espejo en un grupo de ZFS:

louis@watson:~$ sudo zpool status
  pool: watson
 state: ONLINE
  scan: resilvered 1.55T in 7h22m with 0 errors on Fri Oct  6 03:19:16 2017
config:

NAME                                            STATE     READ WRITE CKSUM
watson                                          ONLINE       0     0     0
  mirror-0                                      ONLINE       0     0     0
    wwn-0x50014ee0ad3655a3                      ONLINE       0     0     0
    ata-Hitachi_HUA723020ALA640_MK0271YGJA5BSA  ONLINE       0     0     0
  wwn-0x50014ee058480994                        ONLINE       0     0     0

Cuando intento agregar un disco me sale el mensaje " Los dispositivos tienen diferente alineación sectorial. ":

louis@watson:~$ sudo zpool attach -f watson wwn-0x50014ee058480994 scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP
cannot attach scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP to wwn-0x50014ee058480994:
devices have different sector alignment

Aquí están los informes sectoriales de las unidades nuevas y de destino:

 louis@watson:~$ sudo hdparm -I /dev/disk/by-id/scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP | fgrep Sector
        Logical  Sector size:                   512 bytes
        Physical Sector size:                  4096 bytes
        Logical Sector-0 offset:                  0 bytes
 louis@watson:~$ sudo hdparm -I /dev/disk/by-id/wwn-0x50014ee058480994 | fgrep Sector
        Logical/Physical Sector size:           512 bytes
           *    SCT Long Sector Access (AC1)

¿Cómo puedo mezclar estas unidades en un grupo?

Louis
fuente
Agrégalo manualmente, pero perderás el rendimiento.
DGoiko

Respuestas:

2

Supongo que se relaciona con este cheque (detalles copiados del usuario DeHackEd ):

El propósito principal es una especie de comando "forzar" para cuando tiene un grupo creado con ashift = 9, luego intenta reemplazar / adjuntar un disco con 4k sectores. A ZFS no le gusta esto (y con buena razón), por lo que especificar -o ashift = 9 anula la detección de tamaño de sector y hace que ZFS lo tome.

[...]

No, el requisito es que ashift_of (inserting_disk) & lt; = ashift_of (existing_vdev). De lo contrario, se devolverá la EDOM y la operación no continuará. El valor de inserting_disk se lee desde el propio disco, pero se puede anular con -o ashift = value con un valor que satisfaga la desigualdad anterior para hacer que ZFS acepte el disco.

El razonamiento es que si se conecta un disco con un tamaño demasiado grande, se producirá un rendimiento tan asombrosamente malo (de todos modos, para los medios de rotación) que los usuarios no estarán contentos. Lo he hecho, mi espejo 500G (unidades de 1TB medio llenas) tardó 24 horas en resilver cuando debería haber sido 2 horas. Fue causado por la mezcla de unidades de 512 y 4096 bytes del sector.

[...]

Otro camino alrededor. La agrupación tenía ashift = 9, pero al insertar un disco con 4k sectores (ashift = 12) se produce la desigualdad 12 & lt; = 9, que es incorrecta. El uso de zpool ... -o ashift = 9 hace que sea 9 & lt; = 9 y ZFS lo acepta.

Entonces, puedes añadir tu disco usando sudo zpool attach -o ashift=9 -f watson wwn-0x50014ee058480994 scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP, pero su rendimiento puede sufrir. La alternativa sería recrear la agrupación con discos correctamente alineados, o no mezclar y combinar tamaños de sector (lo que significa usar diferentes discos).

user121391
fuente
Gran hallazgo Prometedor ... intentaré una vez que la copia de seguridad esté completa.
Louis
He estado teniendo problemas con la copia de seguridad. ¿Te importa echarle un vistazo a esto? serverfault.com/questions/882591/…
Louis
¡Esto funciona! El reposicionamiento parece lento a 50 MB / seg. Pero esta es una caja heredada con pocos usuarios, así que definitivamente una ganancia de costo / esfuerzo. :)
Louis