Dlaczego moja pula ZFS nie rozwija się przy użyciu ZFS w systemie Linux?

10

Mam ZFS ZFS na Linuksie pod jądrem 2.6.32-431.11.2.el6.x86_64, który ma jeden vdev. Vdev jest urządzeniem SAN. Rozszerzyłem rozmiar SAN i pomimo tego, że zpool autoexpandustawił się na on, nawet po ponownym uruchomieniu komputera, eksportowaniu / importowaniu puli i korzystaniu z niej zpool online -e, nie byłem w stanie zmusić puli do rozszerzenia. Jestem pewien, że vdev jest większy, ponieważ fdiskpokazuje, że wzrósł z 215GiB do 250 GiB. Oto próbka tego, co zrobiłem:

[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

Jak mogę rozwinąć ten Zpool?

Josh
źródło

Odpowiedzi:

10

Używam ZFS na Ubuntu 16.04 i po wielu próbach i błędach, to właśnie działało w celu zwiększenia rozmiaru dysku i puli bez ponownego uruchamiania. Mój system jest hostowany w chmurze w Profitbricks i używa napędów libvirt (nie SCSI).

Uzyskaj dane dotyczące basenu i urządzenia:

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

Aktywuj automatyczne rozszerzanie:

# zpool set autoexpand=on pool

Zaloguj się do panelu sterowania Profitbricks i zwiększ rozmiar dysku z 40 GB do 50 GB.

Powiadom system o zmianie rozmiaru dysku i rozszerzeniu puli:

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

Nie jestem pewien dlaczego, ale czasami konieczne jest uruchomienie partprobei / lub zpool online -e pool vdbdwa razy, aby zmiany były skuteczne.

lfjeff
źródło
1
Wygląda na to, że twoje rozwiązanie było takie samo jak moje? mianowicie zpool online -e pool vdbjest to polecenie, które załatwia sprawę. Teraz używam ZFS-on-Linux na wielu serwerach libvirt i to działa dla mnie (bez partprobe)
Josh
Musiałem także ponownie uruchomić komputer, aby zmiany były skuteczne, a potem odkryłem, że partprobe(uruchamianie przed i po zpool online) wyeliminowało potrzebę ponownego uruchomienia komputera.
lfjeff,
7

Przeczytałem na forach freebsd post, który sugerował użycie zpool online -e <pool> <vdev>(bez konieczności wyłączania najpierw vdev w trybie offline)

To ostatecznie było rozwiązanie, ale wymagało najpierw automatycznego rozszerzenia 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  -

Użycie polecenia zpool set autoexpand=offfollow by zpool online -ebyło wymagane, aby Zpool mógł się dla mnie rozwinąć, używając ZFS na Linuksie (w jądrze, nie używając FUSE)

Josh
źródło
To nie ma sensu. Lista mailingowa ZFS wskazuje na konieczność przeładowania modułu jądra przed uruchomieniem rozszerzenia puli.
ewwhite
Cóż, kombinacja trzech ponownych uruchomień, wielu eksportów i importów, zpool online -ei zpool set autoexpand=offzrobiłem to dla mnie @ewwhite ... Mam pełną historię dostępną w moim terminalu. Nie jestem pewien, na czym polegał problem.
Josh
Dzięki @ewwhite. Nie używam nowszej wersji, ta wersja ma co najmniej 15 miesięcy. Nie jestem pewien, jak konkretnie znaleźć wersję.
Josh