Почему мой пул 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показывает, что он увеличился с 215 ГБ до 250 ГиБ. Вот пример того, что я сделал:

[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дважды, чтобы изменения вступили в силу.

lfjeff
источник
1
Кажется, ваше решение было таким же, как мое? а именно, zpool online -e pool vdbкоманда, которая делает трюк. Сейчас я использую ZFS-on-Linux на нескольких серверах libvirt, и это работает для меня (без partprobe)
Josh
Мне также пришлось перезагрузиться, чтобы изменения вступили в силу, а затем я обнаружил, что 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 месяцев. Я не уверен, как конкретно найти версию.
Джош