एक स्थायी ZFS त्रुटि क्या इंगित करती है?


17

permanent errorsआज मेरे झूले पर कई लोग सवार थे।

  pool: seagate3tb
 state: ONLINE
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://zfsonlinux.org/msg/ZFS-8000-8A
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        seagate3tb  ONLINE       0     0    28
          sda       ONLINE       0     0    56

errors: Permanent errors have been detected in the following files:

        /mnt/seagate3tb/Install.iso
        /mnt/seagate3tb/some-other-file1.txt
        /mnt/seagate3tb/some-other-file2.txt

संपादित करें: मुझे यकीन है कि अगर वे CKSUMमान सटीक हैं। मैं डेटा रिडक्ट कर रहा था और हो सकता है उन लोगों ने गलती की हो। वे 0. हो सकते हैं। दुर्भाग्य से, मैं अपने नोटों में एक निर्णायक जवाब नहीं पा रहा हूं और त्रुटियों को हल कर दिया गया है, इसलिए मुझे यकीन नहीं है, लेकिन बाकी सब कुछ सटीक है / प्रतिबिंबित करता है कि क्या झूले रिपोर्टिंग कर रहे थे।

/mnt/seagate3tb/Install.iso स्थायी त्रुटि के रूप में रिपोर्ट की गई एक उदाहरण फ़ाइल है।

यहाँ मैं उलझन में हूँ। अगर मैं अपने "स्थायी रूप से त्रुटिपूर्ण" की Install.isoतुलना किसी अन्य फाइल सिस्टम पर उसी फ़ाइल के बैकअप के खिलाफ करता हूं , तो वे समान दिखते हैं।

shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328  /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso

फ़ाइलें समान प्रतीत होती हैं। क्या अधिक है, फ़ाइल पूरी तरह से ठीक काम करती है। अगर मैं किसी एप्लिकेशन में इसका उपयोग करता हूं, तो यह ऐसा व्यवहार करता है जैसे मैं उससे उम्मीद करता हूं।

डॉक्स स्थिति के रूप में :

डेटा भ्रष्टाचार की त्रुटियाँ हमेशा घातक होती हैं।

लेकिन मेरी अल्पविकसित फ़ाइल सत्यापन के आधार पर, मुझे यकीन नहीं है कि मैं परिभाषा को समझता हूं fatal

स्थिति: एक या एक से अधिक उपकरणों ने डेटा भ्रष्टाचार के परिणामस्वरूप त्रुटि का अनुभव किया है। एप्लिकेशन प्रभावित हो सकते हैं।

क्रिया: यदि संभव हो तो प्रश्न में फ़ाइल को पुनर्स्थापित करें। अन्यथा बैकअप से पूरे पूल को पुनर्स्थापित करें।

शायद मुझे कुछ याद आ रहा है, लेकिन जहाँ तक मैं बता सकता हूं, फ़ाइल पूरी तरह से ठीक है, और इसे किसी भी बहाली की आवश्यकता नहीं है और न ही यह ZFS से प्रतिपूर्ति के बावजूद, किसी भी भ्रष्टाचार को दिखाता है।

मैंने अन्य लेखों को उसी त्रुटि के साथ देखा है , लेकिन मुझे अभी तक अपने प्रश्न का उत्तर नहीं मिला है।

फ़ाइल के साथ स्थायी त्रुटि क्या है? क्या फ़ाइल के साथ कुछ निचले स्तर की समस्या है जो मेरे लिए केवल स्पष्ट रूप से स्पष्ट नहीं है? यदि हां, तो shasumफ़ाइल में अंतर के कारण इसका पता क्यों नहीं लगाया जाएगा ?

एक layperson के नजरिए से, मुझे इस फ़ाइल के साथ किसी भी त्रुटि को इंगित करने के लिए कुछ भी नहीं दिख रहा है।


क्या आपके पास स्नैपशॉट्स हैं?
ewwhite

3
विल, चूंकि किसी और ने यह नहीं कहा है, क्या मैं आपका स्वागत सर्वरफॉल्ट में कर सकता हूं? यह मुझे एक उत्कृष्ट प्रथम प्रश्न की तरह लगता है , और मुझे आशा है कि यह शिक्षाप्रद उत्तर देने के लिए जारी रहेगा। मुझे आशा है कि आप एसएफ के आसपास रहने और आगे योगदान करने का निर्णय लेंगे।
8

शुक्रिया @ मादरचोद! मैं आपके इस तरह के स्वागत की सराहना करता हूं, और निश्चित रूप से एसएफ के आसपास चिपका रहूंगा। मैंने पहले ही इसे SE समुदायों की अपनी संक्षिप्त सूची में जोड़ दिया है।
विल हाले

जवाबों:


22

शब्दांकन zpool statusथोड़ा भ्रामक है। एक स्थायी त्रुटि (इस संदर्भ में) इंगित करती है कि I / O त्रुटि हुई है और उस पूल के लिए SPA (संग्रहण पूल आवंटन) त्रुटि लॉग में लॉग किया गया है। यह जरूरी नहीं कि अपरिवर्तनीय डेटा भ्रष्टाचार हो।

आपको जो करना चाहिए zpool scrubवह पूल पर चलाया जाता है । जब स्क्रब पूरा हो जाता है, तो एसपीए त्रुटि लॉग घुमाया जाएगा और अब स्क्रब से पहले त्रुटियों को नहीं दिखाएगा। यदि स्क्रब में कोई त्रुटि नहीं है, तो zpool statusअब कोई "स्थायी" त्रुटियां नहीं दिखाई देंगी।

प्रलेखन के बारे में, यह कह रहा है कि केवल "घातक त्रुटियां" इस तरह से लॉग इन होती हैं। एक घातक त्रुटि एक I / O त्रुटि है जिसे ZFS द्वारा स्वचालित रूप से ठीक नहीं किया जा सकता है और इसलिए एक असफल I / O के रूप में एक आवेदन से अवगत कराया गया था। इसके विपरीत, यदि I / O तुरंत सफलतापूर्वक पुनर्प्राप्त हो गया था या यदि तार्किक I / O निरर्थक डिवाइस से संतुष्ट था, तो इसे एक घातक त्रुटि नहीं माना जाएगा और इसलिए इसे डेटा भ्रष्टाचार त्रुटि के रूप में लॉग नहीं किया जाएगा।

एक घातक त्रुटि का मतलब स्थायी डेटा हानि नहीं है, इसका मतलब यह है कि आवेदन के प्रचार से पहले इसे ठीक नहीं किया जा सकता है। उदाहरण के लिए, एक ढीली केबल या खराब नियंत्रक अस्थायी घातक त्रुटियां पैदा कर सकता है, जिसे ZFS "स्थायी" के रूप में वर्णित करेगा। क्या यह वास्तव में एक समस्या है I / O की प्रकृति पर निर्भर करता है और क्या अनुप्रयोग I / O त्रुटियों से उबरने में सक्षम है।

EDIT: पूरी तरह से @bahamat से सहमत हैं कि आपको जल्द से जल्द अतिरेक में निवेश करना चाहिए।


"स्थायी" के रूप में रिपोर्टिंग करने वाली एसपीए त्रुटि लॉग वास्तव में थोड़ा भ्रामक लगता है। zpool scrubआप वास्तव में क्या सुझाव @ टॉम-शॉ किया था, और अपने स्पष्टीकरण सही समझ में आता है। स्क्रब के बाद मुझे इस सरणी पर अब कोई "स्थायी त्रुटियां" नहीं दिखती हैं। मैंने एक असफल रीड के संदर्भ में घातक त्रुटियों के बारे में नहीं सोचा था। मुझे लगता है कि यह एक अस्थायी I / O त्रुटि रही होगी जैसे आप सुझाव देते हैं। मैं अतिरेक की आवश्यकता पर भी पूरी तरह सहमत हूं।
विल हेली

टॉम, आपको थोड़ी देर में नहीं देखा। वापसी पर स्वागत है।
वाबेट

7

एक स्थायी त्रुटि का मतलब है कि फ़ाइल में एक चेकसम त्रुटि हुई है और मरम्मत के लिए पर्याप्त प्रतिकृतियां नहीं थीं। इसका मतलब है कि एक I / O त्रुटि के कारण कम से कम एक पढ़ा हुआ दूषित डेटा वापस आ गया। यदि जो कुछ भी पढ़ने को मिला है, तो लिखा है कि उसी डिस्क फ़ाइल पर अब आपके पास अपरिवर्तनीय डेटा भ्रष्टाचार होगा।

आपके पूल कॉन्फ़िगरेशन को देखते हुए, ऐसा लगता है कि आपके पास कोई अतिरेक नहीं है। यह बहुत खतरनाक है। आपको ZFS के किसी भी स्व-उपचार लाभ नहीं मिलते हैं, लेकिन यह आपको यह बताने में सक्षम होगा कि डेटा भ्रष्टाचार कब हुआ है। आमतौर पर जेडएफएस स्वचालित रूप से और चुपचाप दूषित रीड्स को सही कर देगा, लेकिन आपके मामले में यह नहीं हो सकता। ऐसा भी लगता है कि आप पहले ही दौड़ चुके हैं zpool clearक्योंकि CKSUMगिनती 0दोनों ड्राइव के लिए है।

दुर्भाग्य से, कोई प्रतिकृतियों के साथ वास्तव में जानने का कोई तरीका नहीं है।


2
zpool clearत्रुटि संदेश को भी साफ़ नहीं करेगा , न कि केवल त्रुटि के कारण? यह अजीब है कि संदेश जारी रहता है, फिर भी कोई त्रुटि नहीं दिखाई जाती है।
user121391

2
मैं क्षमाप्रार्थी हूं। मैंने गोपनीयता के लिए स्थायी त्रुटियों की सूची से फ़ाइलों को छोड़ दिया था। उस आउटपुट को संपादित करने में, मैंने CKSUM काउंट को भी समाप्त कर दिया और मूल्यवान संदर्भ खो दिया। मैंने वास्तविकता को प्रतिबिंबित करने के लिए प्रश्न संपादित किया है। @ user121391
हेली

उस स्थिति में, यदि आपके द्वारा दिखाए गए नंबर सही हैं, तो आपको कहीं न कहीं एक हार्डवेयर त्रुटि है। चूंकि दोनों डिस्क दिखाते हैं CKSUM countsकि यह दोनों डिस्क के बीच नियंत्रक, केबल, या कोई साझा हार्डवेयर हो सकता है। यह भी संभव है कि दोनों डिस्क विफल हो रही हों। किसी भी घटना में यह अतिरेक ASAP को जोड़ने की आवश्यकता को रेखांकित करता है, और भ्रष्टाचार के लिए संकेतित फ़ाइलों का निरीक्षण करता है।
bahamat

ओपी के पास कोई अतिरेक नहीं है; vdev में 56 CKSUM त्रुटियां हैं, और पूल में 28 CKSUM त्रुटियां हैं। इसलिए मुझे यकीन नहीं है कि आप अपनी पिछली टिप्पणी में "दोनों डिस्क" द्वारा क्या उल्लेख कर रहे थे। मैं अतिरेक के मूल्य पर आपकी बात से सहमत हूं।
बजे एक CVn

आप सही हे। मैंने पूल नाम को गलत तरीके से फैलाया जैसे कि यह कोई और डिस्क हो। यह बात बताने के लिए धन्यवाद।
bahamat 14
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.