¿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?

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.


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)


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.