Чому мій пул 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.