उबंटू ज़ेनियल में ज़ाप / देव / डिस्क / बाय-आईडी का उपयोग करने के लिए मजबूर करना


16

मैं Ubuntu 16.04 Xenial एक कोशिश पर बंडल OpenZFS दे रहा हूँ।

पूल बनाते समय, मैं हमेशा उनके सीरियलों में /dev/disk/by-id/(या /dev/disk/gptफ्रीबीएसडी पर) रेसिबिलिटी के लिए ड्राइव करता हूं । /devजब मशीन रिबूट होती है, तो ड्राइव हमेशा उसी क्रम में नहीं होती हैं , और यदि आपके पास मशीन में अन्य ड्राइव हैं, तो पूल सही तरीके से माउंट करने में विफल हो सकता है।

उदाहरण के लिए, zpool status14.04 बॉक्स पर मुझे यह मिल रहा है:

NAME                                  STATE     READ WRITE CKSUM
tank                                  ONLINE       0     0     0
  raidz1-0                            ONLINE       0     0     0
    ata-Hitachi_HDS722020ALA330_[..]  ONLINE       0     0     0
    ata-Hitachi_HDS722020ALA330_[..]  ONLINE       0     0     0
    ata-Hitachi_HDS722020ALA330_[..]  ONLINE       0     0     0
    ata-Hitachi_HUA722020ALA330_[..]  ONLINE       0     0     0

लेकिन जब मैं इसके साथ (संक्षिप्त) 16.04 पर एक नया पूल बनाता हूं:

zpool create pool raidz \
    /dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
    /dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
    /dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
    /dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..]

मैं इसके साथ मिलता हूं zpool status:

NAME        STATE     READ WRITE CKSUM
tank        ONLINE       0     0     0
  raidz1-0  ONLINE       0     0     0
    sdf     ONLINE       0     0     0
    sde     ONLINE       0     0     0
    sdd     ONLINE       0     0     0
    sda     ONLINE       0     0     0

ऐसा लगता है कि ज़ूलप ने उन्हें संदर्भित करने के बजाय, सिम्बलिंक का पालन किया।

क्या पूल बनाने के दौरान मेरे ड्राइव संदर्भों का सम्मान करने के लिए 16.04 पर ज़ूलप को मजबूर करने का एक तरीका है? या वैकल्पिक रूप से, मेरे बारे में गलतफहमी है कि यहाँ क्या कर रहा है?

अपडेट: वर्कअराउंड

मुझे गितुब पर zfsonlinux के लिए एक धागा मिला जिसने एक वर्कअराउंड का सुझाव दिया था। /dev/sdXपहले उपकरणों के साथ अपना झोपड़ी बनाएं , फिर यह करें:

$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN

मैं अभी भी zpool createअगर संभव हो तो प्रारंभिक के साथ ऐसा करने में सक्षम होना पसंद करूंगा ।


इससे कोई फर्क नहीं पड़ता कि आप उन्हें कैसे बनाते हैं। यदि यह / देव / sd के लिए श्रद्धा है? डिवाइस के नाम, zfs exportऔर zfs import -dवैसे भी काम करेंगे। BTW, जब तक आपको वास्तव में अंतरिक्ष के हर बाइट की आवश्यकता न हो, तब तक छापे की बजाय दो प्रतिबिंबित जोड़े का उपयोग करें। छापे का प्रदर्शन छापे -5 से बेहतर है, लेकिन छापे -10 या zfs की तुलना में बहुत खराब है। मिरर किए गए जोड़े से बने पूल का विस्तार करना भी आसान है, बस एक बार में दो डिस्क जोड़ें ... raidz के साथ, आपको प्रत्येक ड्राइव को बड़ी ड्राइव के साथ बदलना होगा, और केवल तब जब आप उन सभी को बदल देंगे पूल में अधिक स्थान उपलब्ध है।
कैस

मेरे पास अभी भी कुछ छापे-जेड पूल हैं, और उन्हें बनाने का अफसोस है। जब मैं प्रतिस्थापन डिस्क खरीदने का जोखिम उठा सकता हूं, तो मैं प्रतिबिंबित जोड़े के साथ नए पूल बनाऊंगा और zfs sendअपने डेटा को नए पूल में कॉपी करने के लिए उपयोग करूंगा। वास्तव में, RAID-z मेरे मिथक बॉक्स के लिए ठीक है, जहां प्रदर्शन महत्वपूर्ण नहीं है जब तक कि मैं एक बार में 6 या 8 ट्रांसकोड नौकरी नहीं कर रहा हूं। जहाँ मेरी /home निर्देशिका रहती है , वहाँ पर जोड़ीदार दर्पणों को बदलना बहुत ध्यान देने योग्य होगा ।
कैस

2
ZIL की मिररिंग इसलिए है ताकि आप बिजली के नुकसान से बचाने के लिए बड़े कैपेसिटर वाले महंगे सामानों के बजाय साधारण सस्ते SSDs का उपयोग करके दूर हो सकें। IMO, ZIL की मिररिंग है नहीं वैकल्पिक, कोई फर्क नहीं पड़ता SSDs की तरह आपके पास क्या - अगर आपकी ZIL मरता है, आप इसे में सभी अभी तक किया जा लिखा डेटा और संभवतः भ्रष्ट अपने पूल खो देते हैं। L2ARC के लिए, मैंने विशेष रूप से उन्हें दर्पण नहीं कहा ... L2ARC कैश को मिरर करना समय, धन और अच्छे SSD स्पेस की बर्बादी है (और कैश खोने से रोकने के लिए कुछ भी नहीं करेगा - आपको यह विचार कहां से मिला?)
कैस

1
:) BTW, मेरे दिमाग सही काम नहीं कर रहा था जब मैंने ZIL को प्रतिबिंबित करने का कारण समझाया। यह शक्ति-हानि की रक्षा नहीं है, यह पूरी बकवास है और मुझे यह कभी नहीं कहना चाहिए था। यह ZIL ड्राइव की विफलता के खिलाफ गार्ड है। यानी छापे -1 ZIL के लिए दर्पण। दो यथोचित-मूल्य वाले SSDs, सामान्य रूप से, एक बहुत महंगे एक से बेहतर होते हैं (जब तक कि अधिक महँगे SSD का बहुत तेज़ इंटरफ़ेस न हो, जैसे PCI-e vs SATA)। और एक यूपीएस आवश्यक है ... बिजली-नुकसान के खिलाफ सस्ते संरक्षण।
कैस

1
@ कास मिररेड ZIL एक अप्रत्याशित शटडाउन के रूप में एक ही समय में SLOG डिवाइस की विफलता से बचाता है । सामान्य परिचालनों के तहत, ZIL केवल-लेखन है, और लगातार भंडारण से लिखता है RAM (ARC)। यदि सिस्टम अप्रत्याशित रूप से बंद हो जाता है, तो आशय लॉग (ZIL, SLOG) का उपयोग उन लेखों को समाप्त करने के लिए किया जाता है जो बाधित थे। केवल अगर अप्रत्याशित शट डाउन एक एसएलओजी डिवाइस की विफलता के साथ मेल खाता है, तो आपको बाधित लेखन को पुनर्प्राप्त करने के लिए अनावश्यक एसएलओजी की आवश्यकता होती है। अधिकांश गैर-सर्वर (और कई सर्वर) वर्कलोड के लिए, एक SLOG ओवरकिल है, क्योंकि ZIL वास्तव में केवल सिंक्रोनस राइट्स के साथ खेलने में आता है।
बजे एक CVn

जवाबों:


1

एक समय में एक, zpool import -d /dev/disk/by-idकाम नहीं करता है।

मैंने इसे एक से अधिक परिवेशों पर ध्यान दिया है। मेरे पास एक आयात लिपि है, जो कुछ मैजिक लॉजिक से परे है और शारीरिक रूप से संलग्न ZFS डिवाइसेस को दिखाती है, मूल रूप से यह भी करती है:

zpool import -d /dev/disk/by-id POOL
zpool export POOL
zpool import POOL

दूसरी बार के आसपास, यहां तक ​​कि -dस्विच के बिना , डिवाइस आईडी द्वारा आयात करता है, भले ही यह पहली बार स्पष्ट कमांड के साथ न हो।

यह संभव है कि यह सिर्फ एक ZFS बग के कारण कुछ सप्ताह या महीने की अवधि (एक या दो साल पहले) के दौरान था, और यह अब आवश्यक नहीं है। मुझे लगता है कि मुझे एक बग रिपोर्ट दर्ज करनी चाहिए थी, लेकिन इसके आसपास काम करना मामूली था।


1

मुझे पता है कि यह धागा बासी है, लेकिन एक जवाब है। आयात करने के बाद आपको अपनी कैश फ़ाइल को अपडेट करना होगा। यह उदाहरण कैशे फ़ाइल के लिए डिफ़ॉल्ट स्थान दिखाता है।

$> sudo zpool export POOL
$> sudo zpool import -d /dev/disk/by-id POOL
$> sudo zpool import -c /etc/zfs/zpool.cache
$> sudo zpool status POOL
NAME                                  STATE     READ WRITE CKSUM
POOL                                  ONLINE       0     0     0
  raidz1-0                            ONLINE       0     0     0
    ata-Hitachi_HDS722020ALA330_[..]  ONLINE       0     0     0
    ata-Hitachi_HDS722020ALA330_[..]  ONLINE       0     0     0
    ata-Hitachi_HDS722020ALA330_[..]  ONLINE       0     0     0
    ata-Hitachi_HUA722020ALA330_[..]  ONLINE       0     0     0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.