लिनक्स पर ZFS का उपयोग करके मेरा ZFS पूल क्यों नहीं विस्तारित हो रहा है?


10

मेरे पास कर्नेल 2.6.32-431.11.2.el6.x86_64 के तहत लिनक्स पर एक ZFS ज़ूल है जिसमें एक एकल vdev है। Vdev एक SAN डिवाइस है। मैंने SAN के आकार का विस्तार किया, और मशीन को रिबूट करने के बाद भी, पूल को एक्सपोर्ट / इम्पोर्ट करने, और उपयोग करने के बावजूद, ज़ूल को autoexpandसेट करने के बावजूद , मैं पूल का विस्तार करने में असमर्थ था। मुझे यकीन है कि vdev बड़ा है, क्योंकि यह 215GiB से बढ़कर 250 GiB हो गया है। यहाँ एक नमूना है जो मैंने किया:onzpool online -efdisk

[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

मैं इस झूले का विस्तार कैसे कर सकता हूं?

जवाबों:


10

मैं Ubuntu 16.04 पर ZFS चला रहा हूं और बहुत परीक्षण और त्रुटि के बाद, यह वही है जो डिस्क और पूल के आकार को रिबूट किए बिना विस्तारित करने के लिए काम किया है। मेरे सिस्टम को प्रॉफ़िट्रिक्स में क्लाउड में होस्ट किया गया है और 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 नियंत्रण कक्ष में प्रवेश करें और डिस्क आकार 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-on-Linux का उपयोग कर रहा हूँ कई libvirt सर्वर पर और जो मेरे लिए काम करता है (partprobe के बिना)
जोश

मैं भी परिवर्तनों को प्रभावी बनाने के लिए रिबूट करने जा रहा था, तब मुझे पता चला कि partprobe(पहले और बाद में रन zpool online) ने रिबूट की आवश्यकता को समाप्त कर दिया।
lfjeff

7

मैंने फ़्रीबस्ड फ़ोरम पर एक पोस्ट पढ़ी है जिसमें एक सुझाव दिया गया था zpool online -e <pool> <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करने के लिए मेरे लिए विस्तार करने के लिए ज़ूल की आवश्यकता थी, लिनक्स पर ZFS का उपयोग करना (कर्नेल में, FUSE का उपयोग नहीं करना)


इसका कोई मतलब नहीं निकलता। ZFS मेलिंग सूची पूल विस्तार को चलाने में सक्षम होने से पहले कर्नेल मॉड्यूल को फिर से लोड करने की आवश्यकता की ओर इशारा करती है।
ewwhite

खैर, तीन रिबूट, कई निर्यात और आयात के कुछ संयोजन, zpool online -eऔर zpool set autoexpand=offयह मेरे लिए @ewwhite किया ... मेरे पास मेरे टर्मिनल में पूरा इतिहास उपलब्ध है। निश्चित नहीं था कि तब समस्या क्या थी।
जोश


साभार @ewwhite मैं एक नए संस्करण का उपयोग नहीं कर रहा हूं, यह संस्करण कम से कम 15 महीने पुराना है। मैं अनिश्चित हूं कि विशेष रूप से संस्करण को कैसे खोजना है।
जोश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.