Pourquoi mon pool ZFS ne se développe-t-il pas en utilisant ZFS sous Linux?

10

J'ai un zpool ZFS sur Linux sous le noyau 2.6.32-431.11.2.el6.x86_64 qui a un seul vdev. Le vdev est un périphérique SAN. J'ai agrandi la taille du SAN, et malgré le fait que le zpool ait été autoexpanddéfini sur on, même après le redémarrage de la machine, l'exportation / l'importation du pool et l'utilisation zpool online -e, je n'ai pas pu obtenir l'extension du pool. Je suis sûr que le vdev est plus grand car fdiskil montre qu'il est passé de 215 Gio à 250 Gio. Voici un échantillon de ce que j'ai fait:

[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

Comment puis-je étendre ce zpool?

Josh
la source

Réponses:

10

J'utilise ZFS sur Ubuntu 16.04 et après de nombreux essais et erreurs, c'est ce qui a fonctionné pour augmenter la taille du disque et du pool sans redémarrer. Mon système est hébergé dans le cloud chez Profitbricks et utilise des lecteurs libvirt (et non SCSI).

Obtenez les détails du pool et de l'appareil:

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

Activez autoexpand:

# zpool set autoexpand=on pool

Connectez-vous maintenant au panneau de configuration Profitbricks et augmentez la taille du disque de 40 Go à 50 Go.

Informer le système de la modification de la taille du disque et étendre le pool:

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

Je ne sais pas pourquoi, mais il est parfois nécessaire d'exécuter partprobeet / ou zpool online -e pool vdbdeux fois pour que les modifications soient effectives.

lfjeff
la source
1
On dirait que votre solution était la même que la mienne? à savoir, zpool online -e pool vdbest la commande qui fait l'affaire. J'utilise maintenant ZFS-on-Linux sur un certain nombre de serveurs libvirt et cela fonctionne pour moi (sans partprobe)
Josh
Je devais également redémarrer pour que les modifications soient effectives, puis j'ai découvert que partprobe(exécuter avant et après zpool online) éliminait la nécessité d'un redémarrage.
lfjeff
7

J'ai lu sur les forums freebsd un post qui suggérait d'utiliser zpool online -e <pool> <vdev>(sans avoir besoin de déconnecter d'abord le vdev)

C'était finalement la solution, mais il fallait d'abord désactiver l'extension automatique ZFS :

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

L'utilisation zpool set autoexpand=offsuivie de zpool online -eétait requise pour que le zpool se développe pour moi, en utilisant ZFS sur linux (dans le noyau, sans utiliser FUSE)

Josh
la source
Ça n'a pas de sens. La liste de diffusion ZFS indique qu'il est nécessaire de recharger le module du noyau avant de pouvoir exécuter une extension de pool.
ewwhite
Eh bien, une combinaison de trois redémarrages, de multiples exportations et importations, zpool online -eet zpool set autoexpand=offje l'ai fait pour moi @ewwhite ... J'ai l'historique complet disponible dans mon terminal. Je ne sais pas quel était le problème à l'époque.
Josh
Merci @ewwhite. Je n'utilise pas de version plus récente, cette version a au moins 15 mois. Je ne sais pas exactement comment trouver la version.
Josh