क्या BTRFS बिजली आउटेज पर डेटा संगति की गारंटी देता है?


11

जैसा कि ZFS विशेष रूप से बताता है ,ZFS के अयोग्य होने का दावा किया जाता है ZFS स्वीकार करता है कि यह बिजली की विफलता की चपेट में आ सकता है।

मुझे BTRFS के लिए ऐसा कोई वक्तव्य नहीं मिला। क्या यह पावर आउटेज के बीच टिकाऊ है (या डिज़ाइन किया गया है) टिकाऊ है?


दोबारा पढ़ें। "यदि आपका पूल हार्डवेयर या पावर आउटेज के विफल होने के कारण क्षतिग्रस्त है, तो रिपेयरिंग ZFS स्टोरेज पूल-वाइड डैमेज देखें।" (..) कमांड का उपयोग करके पूल को पुनर्प्राप्त करने का प्रयास करेंzpool clear -F
माइकल डी।

तो आप कहते हैं "ZFS डेटा स्थिरता की गारंटी नहीं देता है, यह केवल पुनर्प्राप्त करने का प्रयास करता है"?
समारोह

हाँ। से निपटने के लिए कई कैश हैं, एक हार्ड ड्राइव में निर्मित कैश, ओएस कैश / बफर। कुछ बिंदु पर एक syncया flushजो डिस्क को कैश लिखता है, या पावर आउटेज के दौरान नहीं , वह डेटा खो जाएगा। ZFS पूरी तरह से काम कर सकता है अगर हार्ड डिस्क स्वस्थ है और कोई पावर आउटेज नहीं है (या UPS एक आउटेज पर कंप्यूटर को ठीक से बंद करने के लिए जुड़ा हुआ है)। जिसे आप FAT32 या उसके बारे में नहीं कह सकते।
माइकल डी।

2
डेटा हानि एक चिंता का विषय नहीं है क्योंकि यह एक प्राकृतिक परिणाम है जब बिजली की हानि होती है, लेकिन, मेरे मामले में डेटा संगतता एक चिंता का विषय है। फ़ाइल सिस्टम ऐसी विषम परिस्थितियों में डेटा को ढीला कर सकता है, लेकिन डिस्क में असंगत डेटा का कारण नहीं होना चाहिए। मुझे निरंतर स्नैपशॉट सुविधा की आवश्यकता है, इसलिए मैं BTRFS के साथ चलता रहूंगा। NILFS2 हालांकि मेरे मामले में सबसे करीबी विकल्प है।
समारोह

1
मैंने #btrfs IRC पर सवाल पूछा है, उन्होंने कहा कि should be ok if your hw isn't "buggy"कहाँ नहीं- "छोटी गाड़ी" का मतलब है your hw has correct flush/barrier semantics। मैंने आईआरसी पर इस सवाल का लिंक पोस्ट किया है, उम्मीद है कि किसी को विस्तृत करने में समय लगेगा; लेकिन अभी के लिए यह है।
हाय-एंजेल

जवाबों:


5

मैंने #btrfs IRC पर सवाल पूछा है, उन्होंने कहा कि should be ok if your hw isn't "buggy"कहाँ नहीं- "छोटी गाड़ी" का मतलब है your hw has correct flush/barrier semantics

TL; DR: इसका मतलब है कि ZFS की तरह ही बिजली के नुकसान के कारण btrfs डेटा भ्रष्टाचार से सुरक्षित है।

यहाँ क्यों है: ZFS और btrfs के पीछे सामान्य विचार समान है। दोनों एक डेटा संरचना के रूप में मर्कल पेड़ों का उपयोग करते हैं । राइट्स को अपडेट करने के लिए डिस्क (ओं) पर कई ब्लॉक की आवश्यकता हो सकती है। फ़ाइल सिस्टम खाली ब्लॉकों को नया डेटा लिखकर इसे संभाल रहा है (भले ही किसी मौजूदा फ़ाइल को संशोधित किया जा रहा है, इस प्रकार यह उन ब्लॉकों को संशोधित करने की आवश्यकता नहीं है जो पुराने राज्य को दर्शाते हैं) और एक नया अपडेटेड पेड़ का निर्माण। एक बार सभी भारी उठाने के बाद और डेटा + अपडेट किए गए पेड़ को डिस्क पर लिखा जाता है, हेड पॉइंटर नए पेड़ में परिवर्तन को दृश्यमान बनाता हुआ अपडेट हो जाता है।

यहां बताया गया है कि किसी फाइल पर लिखते समय किस तरह का व्यवहार करना चाहिए:

  1. डिस्क पर ब्लॉक मुक्त करने के लिए डेटा लिखें।
  2. मर्कल ट्री * की एक प्रति बनाएँ, इसे (1) में लिखे बदलावों के अनुसार अपडेट करें।
  3. हार्डवेयर को डिस्क पर डेटा फ्लश करने के लिए कहें - हार्डवेयर सभी लंबित डेटा को लिखता है।
  4. नए मर्कल ट्री को हेड पॉइंटर अपडेट करें।
  5. मुक्त पुराने ब्लॉक जिनकी अब आवश्यकता नहीं है।

यदि (4) लेनदेन पूरा होने के बाद बिजली गुल हो जाती है। यदि चरणों (1) से (3) के दौरान बिजली खो जाती है, तो फ़ाइल सिस्टम पुरानी स्थिति के साथ आएगा (चरण 1 में लिखा गया डेटा खो गया है लेकिन फ़ाइल सिस्टम सुसंगत है)। ध्यान दें कि फ़ाइल सिस्टम त्रुटियों के लिए जाँच करने की कोई आवश्यकता नहीं है, जिसका अर्थ है कि फ़ाइल सिस्टम तुरंत उपलब्ध है जो एक बड़ा लाभ है (बड़ी फ़ाइल सिस्टम की जाँच करने में बहुत लंबा समय लग सकता है!)।

यहाँ एक उदाहरण है कि कैसे चीजें "छोटी गाड़ी" हार्डवेयर के साथ गलत हो सकती हैं:

  1. डिस्क पर ब्लॉक मुक्त करने के लिए डेटा लिखें।
  2. मर्कल ट्री * की एक प्रति बनाएँ, इसे (1) में लिखे बदलावों के अनुसार अपडेट करें।
  3. हार्डवेयर को डिस्क में डेटा फ्लश करने के लिए कहें - हार्डवेयर पूरा होने की पुष्टि करता है लेकिन सभी तरह से फ्लश नहीं करता है (जैसे डिस्क के राइट-बैक कैश में डेटा रह सकता है)।
  4. नए मर्कल ट्री को हेड पॉइंटर अपडेट करें। यह डेटा अन्य लंबित डेटा (उदाहरण के लिए क्योंकि डिस्क का सिर सही स्थान पर होता है) से पहले डिस्क पर लिखा जाता है।
  5. चरणों में लिखे गए डेटा (1) और (2) डिस्क पर लिखे जाते हैं।
  6. मुक्त पुराने ब्लॉक जिनकी अब आवश्यकता नहीं है।

अगर (4) और (5) के बीच या चरण (5) प्रदर्शन के दौरान बिजली गुल हो जाती है तो फाइल सिस्टम असंगत हो जाएगा। परिणामस्वरूप मर्कल ट्री और / या डेटा केवल आंशिक रूप से लिखा जा सकता है जिससे फ़ाइल सिस्टम असंगत हो जाता है।

व्यवहार में आपको RAID नियंत्रकों का उपयोग करते समय विशेष रूप से सावधान रहना होगा । वे आमतौर पर डिस्क पर राइट-बैक कैश अक्षम करते हैं और इसके बजाय अपने स्वयं के राइट-बैक कैश का उपयोग करते हैं। यहाँ गलत होने के लिए दो सामान्य तरीके हैं:

* मैं यहां चीजों को सरल बना रहा हूं। यह वास्तव में पूरे पेड़ की नकल करने के लिए आवश्यक नहीं है। केवल उन भागों को जोड़ा गया है जिन्हें जोड़ने की आवश्यकता है - शेष भागों को पुराने और नए पेड़ के बीच साझा किया जा सकता है


इस अच्छी व्याख्या के लिए धन्यवाद। हालांकि, आईआरसी वार्तालाप सहित सभी दावों के लिए उद्धरण की आवश्यकता है। तब आपका उत्तर स्वीकार किया जाएगा।
सेरेमनी

आईआरसी लॉग के बारे में, मैं यहाँ @ हाय-एंजेल की टिप्पणी का उल्लेख कर रहा था। शायद वह एक संदर्भ प्रदान कर सकता है? मैंने अन्य भागों में कुछ और संदर्भ जोड़े, हालाँकि।
मार्टिन

BTRFS मर्कल वृक्षों का उपयोग नहीं करता है, यह B- वृक्षों (इसलिए 'B-TRee FileSystem') का उपयोग करता है, और आपकी विफलता के उदाहरणों के लिए यह आवश्यक है कि लिखने वाले अवरोधों को हार्डवेयर द्वारा ठीक से लागू नहीं किया जाता (जो वास्तव में इन दिनों एक असामान्य मामला है) । अन्यथा, अच्छा जवाब।
ऑस्टिन हेमेलरगन

Btrfs द्वारा उपयोग किए जाने वाले पेड़ वास्तव में दोनों B- पेड़ हैं (यह संपत्ति पेड़ के "आकार" और इस तथ्य के बारे में है कि वे स्व-संतुलन हैं) और हैश / मर्कल पेड़ (पत्तियों में कुछ डेटा के हैश होते हैं, नोड्स होते हैं) उनके बच्चों के हैश, इस प्रकार प्रत्येक परिवर्तन जड़ तक सभी तरह का प्रचार करता है)। इन हैश को सत्यापित करने में सक्षम होने के कारण btrfs और ZFS को दूषित डेटा का पता लगाने की अनुमति मिलती है (और यदि इसे "मिररिंग मोड" में उपयोग किया जाता है तो इसे किसी अन्य डिस्क से पढ़ें)।
मार्टिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.