Mengapa kolam ZFS saya tidak berkembang menggunakan ZFS di Linux?

10

Saya memiliki ZFS zpool di linux di bawah kernel 2.6.32-431.11.2.el6.x86_64 yang memiliki vdev tunggal. Vdev adalah perangkat SAN. Saya memperluas ukuran SAN, dan meskipun zpool telah autoexpanddiatur ke on, bahkan setelah me-reboot mesin, mengekspor / mengimpor kolam, dan menggunakan zpool online -e, saya tidak bisa membuat kolam memperluas. Saya yakin vdev lebih besar karena fdiskmenunjukkan ia telah meningkat dari 215GiB menjadi 250 GiB. Berikut contoh apa yang saya lakukan:

[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

Bagaimana saya bisa memperluas zpool ini?

Josh
sumber

Jawaban:

10

Saya menjalankan ZFS di Ubuntu 16.04 dan setelah banyak coba-coba, inilah yang bekerja untuk memperluas ukuran disk dan kumpulan tanpa me-reboot. Sistem saya dihosting di cloud di Profitbricks dan menggunakan drive libvirt (bukan SCSI).

Dapatkan detail kolam dan perangkat:

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

Aktifkan perluasan otomatis:

# zpool set autoexpand=on pool

Sekarang masuk ke panel kontrol Profitbricks dan tambah ukuran disk dari 40GB menjadi 50GB.

Beritahu sistem perubahan ukuran disk dan perluas kumpulan:

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

Saya tidak yakin mengapa, tetapi kadang-kadang diperlukan untuk menjalankan partprobedan / atau zpool online -e pool vdbdua kali untuk membuat perubahan efektif.

lfjeff
sumber
1
Sepertinya solusi Anda sama dengan solusi saya? yaitu, zpool online -e pool vdbadalah perintah yang melakukan trik. Saya sekarang menggunakan ZFS-on-Linux di sejumlah server libvirt dan itu berfungsi untuk saya (tanpa partprobe)
Josh
Saya juga harus me-reboot untuk membuat perubahan efektif, kemudian saya menemukan bahwa partprobe(jalankan sebelum dan sesudah zpool online) menghilangkan kebutuhan untuk reboot.
lfjeff
7

Saya membaca di forum freebsd sebuah posting yang disarankan untuk digunakan zpool online -e <pool> <vdev>(tanpa perlu offline vdev terlebih dahulu)

Ini pada akhirnya adalah solusinya, tetapi mengharuskan ZFS autoexpand dinonaktifkan terlebih dahulu :

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

Diperlukan menggunakan zpool set autoexpand=offdiikuti zpool online -euntuk mendapatkan zpool untuk diperluas untuk saya, menggunakan ZFS di linux (di kernel, tidak menggunakan FUSE)

Josh
sumber
Itu tidak masuk akal. Milis ZFS menunjukkan perlu memuat ulang modul kernel sebelum dapat menjalankan ekspansi kumpulan.
ewwhite
Nah, beberapa kombinasi dari tiga reboot, beberapa ekspor dan impor, zpool online -edan zpool set autoexpand=offmelakukannya untuk saya @ewwhite ... Saya memiliki sejarah lengkap yang tersedia di terminal saya. Tidak yakin apa masalahnya saat itu.
Josh
Terima kasih @white. Saya tidak menggunakan versi yang lebih baru, versi ini setidaknya berumur 15 bulan. Saya tidak yakin bagaimana secara spesifik untuk menemukan versi.
Josh