Perché il mio pool ZFS non si espande utilizzando ZFS su Linux?


10

Ho uno zpool ZFS su Linux sotto il kernel 2.6.32-431.11.2.el6.x86_64 che ha un singolo vdev. Il vdev è un dispositivo SAN. Ho ampliato le dimensioni della SAN e, nonostante lo zpool sia autoexpandimpostato su on, anche dopo aver riavviato la macchina, esportato / importato il pool e utilizzato zpool online -e, non sono stato in grado di espandere il pool. Sono sicuro che il vdev sia più grande perché fdiskmostra che è aumentato da 215GiB a 250 GiB. Ecco un esempio di ciò che ho fatto:

[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

Come posso espandere questo zpool?

Risposte:


10

Sto eseguendo ZFS su Ubuntu 16.04 e dopo molte prove ed errori, questo è ciò che ha funzionato per espandere le dimensioni del disco e del pool senza riavviare. Il mio sistema è ospitato nel cloud su Profitbricks e utilizza unità libvirt (non SCSI).

Ottieni dettagli sul pool e sul 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  -

Attiva autoexpand:

# zpool set autoexpand=on pool

Ora accedi al pannello di controllo di Profitbricks e aumenta le dimensioni del disco da 40 GB a 50 GB.

Notifica al sistema la modifica della dimensione del disco ed espandi il 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  -

Non sono sicuro del perché, ma a volte è necessario eseguire partprobee / o zpool online -e pool vdbdue volte per rendere effettive le modifiche.


1
Sembra che la tua soluzione fosse la stessa della mia? vale a dire, zpool online -e pool vdbè il comando che fa il trucco. Ora sto usando ZFS-su-Linux su un numero di server libvirt e questo funziona per me (senza partprobe)
Josh

Dovevo anche riavviare per rendere effettive le modifiche, quindi ho scoperto che partprobe(eseguire prima e dopo zpool online) ha eliminato la necessità di un riavvio.
lfjeff

7

Ho letto sui forum di freebsd un post che mi ha suggerito di usare zpool online -e <pool> <vdev>(senza dover prima disconnettere il vdev)

Questa in definitiva era la soluzione, ma richiedeva che l'autoespandimento ZFS fosse disabilitato per primo :

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

È stato necessario usare follow zpool set autoexpand=offseguito da zpool online -eper fare in modo che zpool si espandesse per me, usando ZFS su Linux (nel kernel, non usando FUSE)


Questo non ha senso. La mailing list ZFS indica la necessità di ricaricare il modulo del kernel prima di poter eseguire l'espansione del pool.
ewwhite,

Bene, una combinazione di tre riavvii, più esportazioni e importazioni, zpool online -ee l' zpool set autoexpand=offho fatto per me @ewwhite ... Ho tutta la cronologia disponibile nel mio terminale. Non sono sicuro di quale fosse il problema allora.
Josh


Grazie @ewwhite. Non sto usando una versione più recente, questa versione ha almeno 15 mesi. Non sono sicuro di come trovare la versione.
Josh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.