Чому мій пул ZFS не розширюється за допомогою ZFS в Linux?


10

У мене є ZFS zpool на Linux під ядром 2.6.32-431.11.2.el6.x86_64, який має єдиний vdev. Vdev - це пристрій SAN. Я збільшив розмір SAN, і незважаючи на те, що zpool autoexpandвстановив on, навіть після перезавантаження машини, експорту / імпорту басейну та використання zpool online -e, мені не вдалося змусити пул розширюватися. Я впевнений, що vdev більший, тому що fdiskпоказує, що він збільшився з 215GiB до 250 GiB. Ось зразок того, що я зробив:

[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

Як я можу розширити цей zpool?

Відповіді:


10

Я запускаю ZFS на Ubuntu 16.04 і після багатьох проб і помилок, саме це працювало для розширення розміру диска та пулу без перезавантаження. Моя система розміщується в хмарі на Profitbricks і використовує диски libvirt (не SCSI).

Отримати інформацію про пул та пристрої:

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

Активувати автоматичне розгортання:

# zpool set autoexpand=on pool

Тепер увійдіть на панель управління Profitbricks та збільште розмір диска з 40 ГБ до 50 ГБ.

Повідомте систему про зміну розміру диска та розширення пулу:

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

Я не впевнений, чому, але іноді потрібно запустити partprobeта / або zpool online -e pool vdbдвічі, щоб зміни були ефективними.


1
Здається, ваше рішення було таким же, як і моє? а саме zpool online -e pool vdb- це команда, яка виконує трюк. Зараз я використовую ZFS-на-Linux на ряді серверів libvirt, і це працює для мене (без partprobe)
Джош,

Мені також довелося перезавантажуватись, щоб зміни були ефективними, тоді я виявив, що partprobe(запускати до і після zpool online) усунув необхідність перезавантаження.
lfjeff

7

Я читав на форумах freebsd пост, який запропонував використовувати zpool online -e <pool> <vdev>(не потрібно спочатку відключати vdev)

Це в кінцевому підсумку було рішенням, але для цього потрібно було спочатку відключити автоматичне розширення 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  -

Використовуючи zpool set autoexpand=offпотім zpool online -eпотрібно , щоб отримати zpool розширити для мене, з допомогою ZFS на Linux (в ядрі, а НЕ з допомогою FUSE)


Це не має сенсу. Список розсилки ZFS вказує на необхідність перезавантажити модуль ядра перед тим, як мати можливість запустити розширення пулу.
ewwhite

Ну, якась комбінація трьох перезавантажень, багаторазового експорту та імпорту, zpool online -eі zpool set autoexpand=offце зробили для мене @ewwhite ... У мене є повна історія в моєму терміналі. Не впевнений, у чому тоді була проблема.
Джош


Дякую @ewwhite. Я не використовую новішу версію, цій версії принаймні 15 місяців. Я не впевнений, як конкретно знайти версію.
Джош
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.