ZFS हॉट स्पेयर काम नहीं कर रहा है


3

मेरे पास अपने vm में गिरने वाला ZFS टेस्ट पूल सेटअप है:

    NAME        STATE     READ WRITE CKSUM
    pool        DEGRADED     0     0     0
      mirror-0  DEGRADED     0     0     0
        sdb     ONLINE       0     0     0
        sdc     ONLINE       0     0     0
    spares
      sdd       AVAIL

मैं एक ऐसे ड्राइव को बदलने की क्षमता का परीक्षण करने की कोशिश कर रहा हूं जो स्वचालित रूप से zfs पूल में अनुपलब्ध हो जाता है । उदाहरण के लिए यदि किसी कारणवश ड्राइव को सिस्टम से हटा दिया जाता है तो अतिरिक्त डाइव ड्राइव हटाने पर तुरंत अपनी जगह ले सकती है। मैंने एक spareड्राइव को कॉन्फ़िगर किया है और मैंने जो पढ़ा है उससे, जिस तरह से मैं इसे समझता हूं वह यह है कि यह मेरा लक्ष्य पूरा करे। मैंने autoreplaceझंडे को onबताने के लिए झंडे को किसी भी खराब ड्राइव को बदलने के लिए कहा है। जब vm से किसी ड्राइव को हटा दें, तो sdbझटकों की स्थिति को देख कर पुनरावृत्ति करें:

    NAME        STATE     READ WRITE CKSUM
    pool        DEGRADED     0     0     0
      mirror-0  DEGRADED     0     0     0
        sdb     UNAVAIL      0     0     0
        sdc     ONLINE       0     0     0
    spares
      sdd       AVAIL

sdbडिवाइस अनुपलब्ध हो जाता है लेकिन अतिरिक्त द्वारा बदल दिया कभी नहीं है। क्या कोई तरीका है जिससे मैं अपने उपयोग-मामले को काम में ला सकूँ?


है sddइतना बड़ा? इसके अलावा, स्पेयर के साथ दो-तरफा दर्पण होने का कोई मतलब नहीं है। बस इसे तीन तरह से दर्पण बनाओ। इसलिए जब तक आप केवल अतिरिक्त प्रतिस्थापन का परीक्षण नहीं कर रहे हैं, आपका कॉन्फ़िगरेशन समझ में नहीं आता है।
एंड्रयू हेनले

@AndrewHenle मैं उत्पादन में इस विन्यास को करने की योजना नहीं बना रहा हूं, मैं एक दर्पण के साथ परीक्षण कर रहा हूं क्योंकि मेरे परीक्षण में यह एकमात्र ऐसा विन्यास है जो अब तक एक स्पेयर के साथ दूर से काम करने के लिए लगता है। मैंने अभी तक रेडज़ के साथ नहीं खेला है, मैं आज ही ऐसा करने की योजना बना रहा हूं लेकिन यह पता चला है कि उबंटू पर हॉट स्पेयर के साथ एक बग चल रहा है मैं आज अपने प्रश्न को संपादित करूंगा। सलाह के लिए धन्यवाद!
ट्रिस्टन विजिल

जवाबों:


2

पहचान

उबंटू 16.04 पर समान मुद्दे वाले किसी भी व्यक्ति के लिए सबसे पहले, यह वर्तमान में एक बग है और अभी तक, मेरी जानकारी के अनुसार, तय नहीं किया गया है। मैं जिस बग का हवाला दे रहा हूं, उसे देखने के लिए आप यहां गितुब वार्तालाप देख सकते हैं। दूसरे मैं इस पोस्ट को एक उत्साही और मध्यवर्ती लिनक्स उपयोगकर्ता के रूप में लिख रहा हूं, मैं एक डेवलपर नहीं हूं या वर्तमान में एक पेशे के रूप में लिनक्स पर काम करता हूं। कहा जा रहा है कि मैं इस मुद्दे पर मिली जानकारी को अपने सर्वोत्तम ज्ञान को प्रदान करूँगा।

समस्या:

zfsonlinuxपैकेज में निर्मित हॉट स्पेयर कार्यक्षमता वर्तमान में मैन पेज में बताए अनुसार काम नहीं करती है। zpoolआदमी पृष्ठ:

Hot Spares
   ZFS allows devices to be associated with pools as "hot spares".
   These devices are not actively used in the pool, but when an active
   device fails, it is automatically replaced by a hot spare.

नोट: कोल्ड स्पेयर (स्वचालित रूप से प्रतिस्थापित नहीं किया गया एक अतिरिक्त) कार्यक्षमता काम कर रही है, लेकिन केवल mirrorsया किसी से मिलकर कॉन्फ़िगरेशन में raidz's। यदि आपके पास फॉलिंग की तरह एक कॉन्फ़िगरेशन है:

NAME      STATE     READ WRITE CKSUM
pool      ONLINE       0     0     0
  sdb     ONLINE       0     0     0
  sdc     ONLINE       0     0     0
spares
  sdd     AVAIL

एक ड्राइव की विफलता पर आप pool I/O is currently suspendedत्रुटि के कारण इसे स्पेयर के साथ बदलने में असमर्थ होंगे ।

प्रयास किए गए समाधान:

यह उन हल किए गए समाधानों की एक सूची है, जिनसे मैं गुजरा हूँ और परिणाम प्राप्त हुए हैं:

  1. ZFS ऑटो को प्रतिस्थापित करता है: यह पता चलता है कि zpoolमैन पेज और मेरी समझ के अनुसार , autoreplaceकार्यक्षमता क्षतिग्रस्त ड्राइव को स्पेयर के साथ बदलने के लिए नहीं है, बल्कि क्षतिग्रस्त ड्राइव को अपने स्थान पर पाए गए किसी भी नए डिवाइस से बदलने के लिए है। zpoolआदमी पृष्ठ:

    If set to "on", any new device, found in the same physical location
    as a device that previously belonged to the pool, is automatically 
    formatted and replaced.
    

    autoreplaceपर होना अच्छा है, लेकिन एक गर्म अतिरिक्त की कार्यक्षमता को प्राप्त करने के लिए मुझे विश्वास नहीं है कि इसकी आवश्यकता है। मैं इस आदमी पृष्ठ के अलावा अन्य की पुष्टि करने में सक्षम नहीं है क्योंकि मैं काम करने के लिए अतिरिक्त प्राप्त करने में असमर्थ था।

  2. ZED.rc: मैं बाद में वार्तालाप में से पाया GitHub कि ZED_SPARE_ON_CHECKSUM_ERRORSऔर ZED_SPARE_ON_IO_ERRORSझंडे की जरूरत में सेट करने zed.rc। जैसा कि @ user121391 ने इस पोस्ट के उत्तर में कहा, जेड सेवा / डेमॉन वह है जो पूल की स्थिति को निर्धारित करता है और उस स्थिति के आधार पर क्या किया जाना आवश्यक है। आप zed.d को काम करके देख सकते हैं zpool eventsयहाँ linux पर zed.d पर अधिक । झंडे सेट करने, रिबूट करने और, नए पूल को सिर्फ मामले में समेटने के बाद, हॉट स्पेयर का मेरा परीक्षण फिर से नकारात्मक हो गया।

  3. ZED.d स्क्रिप्ट: @Michael Kjörling की टिप्पणी में उन्होंने ZED के साथ पैक की गई कुछ लिपियों का उल्लेख किया है जो कि गर्म स्पेयर परिदृश्य के साथ मदद करने के लिए लिखी गई हैं। मैं वास्तव में अंदर स्थित लिपियों को ढूंढता था /etc/zfs/zed.d। आप इन लिपियों को यहाँ github पृष्ठ पर देख सकते हैं । Zed.d की मेरी समझ से, जब एक घटना को ट्रिगर किया जाता है ZED डेमॉन अपनी स्थिति के आधार पर इनमें से एक स्क्रिप्ट चलाता है। कहा जा रहा है कि मैंने io-spare.shऔर checksum-spare.shमैन्युअल रूप से चलाने की कोशिश की थी और जब तक वे पूल की अपरिवर्तित स्थिति को निष्पादित करने के लिए समय लेते हैं, तब तक वे सही तरीके से नहीं चल रहे थे। शायद यह मुद्दे का एक संभावित स्रोत है।

मेरी योजनाएँ

मेरे ज्ञान के लिए, ZFS के Ubuntu 16.04 उपयोगकर्ताओं के लिए, वर्तमान में इस समस्या का कोई समाधान नहीं है। मेरी योजना है कि परीक्षण में मुझे मिलने वाले प्रदर्शन के आधार पर ( mirroredया raidzRAID5) के विन्यास के साथ ZFS का उपयोग जारी रखना चाहिए। (आईना तेज होगा लेकिन मैं इसकी गति देखना चाहता हूं raidz) एक गर्म स्पेयर इन दोनों विन्यासों के अतिरेक को बढ़ाएगा। लेकिन दुर्भाग्य से हमें zfsonlinuxपरियोजना के आगे विकास तक इंतजार करना होगा ।


1
अच्छा लिखना है। मुझे लगता है कि बग के साथ धीमी प्रगति है क्योंकि गर्म पुर्जें अब उपयोगी नहीं हैं - एकमात्र स्थिति वे अच्छी हैं यदि आपके पास कम अतिरेक के साथ कई अलग-अलग पूल हैं, अन्यथा आप डिस्क को सीधे पूल में जोड़ने से कहीं अधिक लाभान्वित होते हैं। इसके अलावा raidz1 से, जो मैं आज का उपयोग नहीं करूंगा क्योंकि लिखने की छेद की समस्या के कारण, यह सिर्फ 2-तरफा दर्पण या धारीदार दर्पण छोड़ देता है जहां पुर्जों का फायदा होगा।
user121391

0

एक त्वरित खोज निम्नलिखित पैदावार देती है :

[ओपन] सोलारिस पर, इसे एक इवेंट डेमन द्वारा नियंत्रित किया जाता है। ऑटोरप्लेस ऑन / ऑफ बस डेमन को बताता है कि रिप्लेसमेंट करना है या नहीं। FreeBSD पर, ऑटोरप्लेस सेटिंग डिफ़ॉल्ट रूप से कुछ भी नहीं करती है - आपको वास्तविक प्रतिस्थापन को ट्रिगर करने के लिए एक devd नियम लिखने की आवश्यकता है। मुझे यकीन नहीं है कि लिनक्स क्या करता है, लेकिन मुझे यकीन है कि इसे सिस्टमड में जोड़ा जा सकता है

ऐसा लगता है कि ZoL के साथ आप इसके लिए ZED , ZFS इवेंट डेमन का भी उपयोग कर सकते हैं ।


2
हां, इस परिदृश्य को संभालने के लिए ZED स्क्रिप्ट के साथ आता है। देखें /usr/lib/x86_64-linux-gnu/zfs/zed.d/checksum-spare.sh(उबंटू पर एक अलग स्थान पर हो सकता है, लेकिन मुझे संदेह है)।
एक सीवीएन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.