¿Por qué mi grupo ZFS no se expande usando ZFS en Linux?

10

Tengo un ZFS Zpool en Linux bajo el kernel 2.6.32-431.11.2.el6.x86_64 que tiene un solo vdev. El vdev es un dispositivo SAN. Expandí el tamaño de la SAN, y a pesar de que zpool se había autoexpandconfigurado on, incluso después de reiniciar la máquina, exportar / importar el grupo y usar zpool online -e, no pude lograr que el grupo se expandiera. Estoy seguro de que el vdev es más grande porque fdiskmuestra que ha aumentado de 215GiB a 250 GiB. Aquí hay una muestra de lo que hice:

[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool import -d /dev/disk/by-id/
   pool: dfbackup
     id: 12129781223864362535
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

    dfbackup             ONLINE
      virtio-sbs-XLPH83  ONLINE
[root@timestandstill ~]# zpool import -d /dev/disk/by-id/ dfbackup
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
venuebackup   248G   244G  3.87G    98%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool get autoexpand dfbackup
NAME      PROPERTY    VALUE   SOURCE
dfbackup  autoexpand  on      local
[root@timestandstill ~]# zpool set autoexpand=off dfbackup
[root@timestandstill ~]# zpool set autoexpand=on dfbackup
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
venuebackup   248G   244G  3.87G    98%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool status -v dfbackup
  pool: dfbackup
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    dfbackup             ONLINE       0     0     0
      virtio-sbs-XLPH83  ONLINE       0     0     0

errors: No known data errors
[root@timestandstill ~]# fdisk /dev/disk/by-id/virtio-sbs-XLPH83

WARNING: GPT (GUID Partition Table) detected on '/dev/disk/by-id/virtio-sbs-XLPH83'! The util fdisk doesn't support GPT. Use GNU Parted.


WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/disk/by-id/virtio-sbs-XLPH83: 268.4 GB, 268435456000 bytes
256 heads, 63 sectors/track, 32507 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

                             Device Boot      Start         End      Blocks   Id  System
/dev/disk/by-id/virtio-sbs-XLPH83-part1               1       27957   225443839+  ee  GPT

Command (m for help): q
[root@timestandstill ~]# zpool online -e dfbackup /dev/disk/by-id/virtio-sbs-XLPH83
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
venuebackup   248G   244G  3.87G    98%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool status -v dfbackup
  pool: dfbackup
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    dfbackup             ONLINE       0     0     0
      virtio-sbs-XLPH83  ONLINE       0     0     0

errors: No known data errors

¿Cómo puedo expandir este zpool?

Josh
fuente

Respuestas:

10

Estoy ejecutando ZFS en Ubuntu 16.04 y después de muchas pruebas y errores, esto es lo que funcionó para expandir el disco y el tamaño del grupo sin reiniciar. Mi sistema está alojado en la nube en Profitbricks y utiliza unidades libvirt (no SCSI).

Obtenga detalles del grupo y del dispositivo:

# zpool status -v
   ...
    NAME        STATE     READ WRITE CKSUM
    pool        ONLINE       0     0     0
      vdb       ONLINE       0     0     0

# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool  39.8G  27.1G  12.7G         -    49%    68%  1.00x  ONLINE  -

Activar autoexpand:

# zpool set autoexpand=on pool

Ahora inicie sesión en el panel de control de Profitbricks y aumente el tamaño del disco de 40 GB a 50 GB.

Notifique al sistema el cambio de tamaño del disco y expanda el grupo:

# partprobe
Warning: Not all of the space available to /dev/vdb appears to be used,
you can fix the GPT to use all of the space (an extra 10485760 blocks) or 
continue with the current setting?

# zpool online -e pool vdb

# partprobe

# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool  49.8G  27.1G  21.7G         -    40%    55%  1.00x  ONLINE  -

No estoy seguro de por qué, pero a veces es necesario ejecutarlo partprobey / o zpool online -e pool vdbdos veces para que los cambios sean efectivos.

lfjeff
fuente
1
Parece que su solución fue la misma que la mía? a saber, zpool online -e pool vdbes el comando que hace el truco. Ahora estoy usando ZFS-on-Linux en varios servidores de libvirt y eso funciona para mí (sin sonda)
Josh
También tuve que reiniciar para que los cambios fueran efectivos, luego descubrí que partprobe(ejecutar antes y después zpool online) eliminó la necesidad de reiniciar.
lfjeff
7

Leí en los foros de freebsd una publicación que sugería usar zpool online -e <pool> <vdev>(sin necesidad de desconectar el vdev primero)

En última instancia, esta fue la solución, pero primero requería que ZFS se expandiera automáticamente :

[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool get autoexpand
NAME         PROPERTY    VALUE   SOURCE
dfbackup     autoexpand  on      local
[root@timestandstill ~]# zpool set autoexpand=off dfbackup
[root@timestandstill ~]# zpool online -e dfbackup /dev/disk/by-id/virtio-sbs-XLPH83
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      249G   207G  42.5G    82%  1.00x  ONLINE  -

Se requirió el uso zpool set autoexpand=offseguido de zpool online -epara que el zpool se expandiera para mí, usando ZFS en Linux (en el núcleo, no usando FUSE)

Josh
fuente
Eso no tiene sentido. La lista de correo de ZFS apunta a la necesidad de volver a cargar el módulo del kernel antes de poder ejecutar una expansión de grupo.
ewwhite
Bueno, una combinación de tres reinicios, múltiples exportaciones e importaciones, zpool online -ey lo zpool set autoexpand=offhice por mí @ewwhite ... Tengo el historial completo disponible en mi terminal. No estoy seguro de cuál era el problema entonces.
Josh
Gracias @ewwhite. No estoy usando una versión más nueva, esta versión tiene al menos 15 meses. No estoy seguro de cómo encontrar específicamente la versión.
Josh el