ทำไมพูล 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  -

เปิดใช้งาน autoexpand:

# zpool set autoexpand=on pool

ตอนนี้เข้าสู่แผงควบคุม Profitbricks และเพิ่มขนาดดิสก์จาก 40GB เป็น 50GB

แจ้งเตือนระบบการเปลี่ยนขนาดดิสก์และขยายพูล:

# 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 บนลินุกซ์กับจำนวนของเซิร์ฟเวอร์ libvirt และผลงานที่สำหรับฉัน (ไม่ partprobe)
จอช

ฉันต้องรีบู๊ตเพื่อให้การเปลี่ยนแปลงมีประสิทธิภาพจากนั้นฉันก็ค้นพบว่าpartprobe(ทำงานก่อนและหลังzpool online) ไม่จำเป็นต้องรีบูต
lfjeff

7

ฉันอ่านฟอรั่ม freebsdโพสต์ที่แนะนำให้ใช้zpool online -e <pool> <vdev>(โดยไม่จำเป็นต้องออฟไลน์ vdev ก่อน)

นี่เป็นวิธีแก้ปัญหาในที่สุด แต่จำเป็นต้องปิดใช้งาน ZFS autoexpand ก่อน :

[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ทำเพื่อฉัน @ whitewhite ... ฉันมีประวัติเต็มใน terminal ของฉัน ไม่แน่ใจว่าปัญหานั้นเกิดจากอะไร
Josh


ขอบคุณ @white ฉันไม่ได้ใช้รุ่นที่ใหม่กว่ารุ่นนี้มีอายุอย่างน้อย 15 เดือน ฉันไม่แน่ใจว่าจะค้นหาเวอร์ชันโดยเฉพาะได้อย่างไร
Josh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.