पावर लॉस के कारण भ्रष्टाचार के खिलाफ डेटा हासिल करने के लिए क्या फाइल सिस्टम सबसे अच्छा संरक्षण प्रदान करता है?


9

मैं x86 डिवाइस पर एक छोटा uClibcऔर busyboxआधारित एम्बेडेड सिस्टम चला रहा हूं । मैं एक initramfs का उपयोग कर रहा हूं, लेकिन मैं ext3IDE मोड में एक कॉम्पैक्ट फ्लैश डिवाइस पर एक कस्टम डायरेक्टरी को भी बढ़ा रहा हूं जिसे मैं कस्टम लिखित c ++ एप्लिकेशन द्वारा बनाए गए लगातार माप लॉगिंग डेटा को स्टोर करने के लिए उपयोग कर रहा हूं। मैं चुना है ext3के रूप में यह बिजली नुकसान के खिलाफ सुरक्षा के लिए सिफारिश की है जब किताबें मैं पढ़ लिया है के एक जोड़े में आईडीई मोड में सीएफ ड्राइव का उपयोग कर फाइल सिस्टम ( बिल्डिंग लिनक्स सिस्टम एंबेडेड करीम Yaghmour द्वारा और एम्बेडेड लिनक्स प्राइमर क्रिस्टोफर Hallinan द्वारा)। यह विशेष रूप से महत्वपूर्ण है और डेटा महत्वपूर्ण है।

हालाँकि, मेरे पिछले प्रश्न में कुछ टिप्पणियों के कारण भ्रष्ट ext3 फ़ाइलों को पुनर्स्थापित करने के बारे में भ्रम है कि अगर एक फ़ाइल लिखने के दौरान पावर आउटेज होता है, तो ऐसा प्रतीत होता है कि वास्तव में यह फ़ाइल सिस्टम बिजली के कारण डेटा भ्रष्टाचार के खिलाफ सुरक्षा की गारंटी नहीं देता है नुकसान। इसलिए मैं जानना चाहूंगा कि क्या

  1. क्या ext3वास्तव में इस सेटअप के लिए सबसे अच्छा विकल्प है?
  2. क्या डिस्क लेखन ऑपरेशन के दौरान बिजली की हानि केवल उस डेटा के हिस्से को भ्रष्ट करती है जिसे मैं समय-समय पर फाइल में जोड़ रहा हूं या यह पूरी फाइल को भ्रष्ट कर सकता है ?
  3. क्या डेटा जो बिजली की हानि के बिंदु पर पूरी तरह से सुरक्षित नहीं लिखा जा रहा है? विशेष रूप से, क्या कोई जोखिम है कि मेरी initramfs.cpioफ़ाइल भी भ्रष्ट हो सकती है?
  4. क्या कोई तरीका है जो मैं अपने एप्लिकेशन कोड में डेटा की सुरक्षा के लिए उपयोग कर सकता हूं (यानी एक अतिरिक्त विभाजन बनाने और अपने डेटा को मिरर छवियों को लिखने के लिए ताकि हमेशा 2 प्रतियां हों) - मेरे आवेदन के लिए गति एक वास्तविक मुद्दा नहीं है, इसलिए महंगा प्रतिलिपि संचालन स्वीकार्य हैं।

मैंने इस संबंधित प्रश्न के उत्तर देखे और पढ़े हैं: क्या एक बिजली की विफलता के बाद जर्नलिंग फाइलसिस्टम भ्रष्टाचार के खिलाफ गारंटी देते हैं? , लेकिन यह कुछ ऐसी चीजों को कवर नहीं करता है जो मुझे भ्रमित कर रही हैं।

मुझे एहसास है कि मैं बहुत सारे सवाल पूछ रहा हूं, लेकिन ऐसा लगता है कि बहुत अधिक सामग्री पढ़ने के बावजूद मुझे बिजली की हानि की स्थिति में अपने डेटा के जोखिमों को समझने में मूलभूत विफलता हुई है।

जवाबों:


11

सुरक्षा से संबंधित सभी चीजों की तरह, कोई गारंटी नहीं है, लेकिन आपको संभाव्यता के खिलाफ जोखिम (और लागत) को संतुलित करने की भी आवश्यकता है। अनुभव से (और मैं अंधेरे युग के बाद से दर्जनों * निक्स बॉक्सन चला रहा हूं), मेरे पास वास्तव में महत्वपूर्ण शक्ति-कारण फाइल सिस्टम भ्रष्टाचार नहीं है।

इनमें से कुछ मशीनें गैर-जमानती फाइलसिस्टम (ufs और ext2 आमतौर पर) पर भी चल रही थीं। उनमें से कुछ एम्बेडेड थे, और कुछ नोकिया N900 जैसे मोबाइल फोन थे - इसलिए एक अच्छी बिजली की आपूर्ति बिल्कुल भी गारंटी नहीं थी।

ऐसा नहीं है कि फाइलसिस्टम भ्रष्टाचार नहीं हो सकता है, यह सिर्फ इतना है कि ऐसा होने की संभावना काफी कम है कि यह आपको चिंता नहीं करनी चाहिए। फिर भी, आपके दांव को न टालने का कोई कारण नहीं।

आपके शाब्दिक सवालों के जवाब में:

  1. कम से कम पहली पुस्तक जिसे आपने संदर्भित किया था ext4- जब लेखक ने उपयोग करने का सुझाव दिया था ext3, तो वे वास्तव में कह रहे थे कि 'अस्थिर या गैर-पत्रिकाओं वाले फाइल सिस्टम का उपयोग न करें ext2')। कोशिश करो ext4, यह काफी परिपक्व है, और गैर-कताई डिस्क के लिए कुछ सभ्य विकल्प हैं जो आपके फ्लैश डिवाइस की जीवन प्रत्याशा को बढ़ा सकते हैं।
  2. संभावना है कि यह आपको अंतिम ब्लॉक या दो खो देगा, संपूर्ण फ़ाइल नहीं। एक पत्रिकाओं फाइल सिस्टम के साथ, यह केवल नुकसान के बारे में होगा। वहाँ विफलता परिदृश्य हैं जहाँ मैं फ़ाइल में छपे यादृच्छिक डेटा को देख सकता था, लेकिन वे आपके माइक्रोफ़ोन के सही तरीके से स्माक्रोमेटोराइट के रूप में संभव के बारे में प्रतीत होते हैं।
  3. देखें 2. कुछ भी नहीं 100.00% सुरक्षित है।
  4. यदि आपके पास दूसरा आईडीई चैनल है, तो वहां एक दूसरा सीएफ कार्ड चिपकाएं और समय-समय पर फाइल सिस्टम का बैकअप हड़पें। ऐसा करने के कई तरीके हैं: rsync, cp dump, dd, यहां तक कि का उपयोग कर md(4)(सॉफ्टवेयर RAID) डिवाइस (आप दूसरे ड्राइव कभी कभी जोड़ने के लिए, यह सिंक करते हैं, तो इसे हटाने - दोनों उपकरणों हर समय रहते हैं, वे एक ही खतरा फाइल सिस्टम के भ्रष्टाचार)। यदि आप LVM का उपयोग करते हैं, तो आप स्नैपशॉट भी ले सकते हैं। एक डेटा संग्रह एम्बेडेड डिवाइस के लिए, मैं सिर्फ तदर्थ समाधान का उपयोग करूंगा जो दूसरे फाइल सिस्टम को कॉपी करता है, डेटा लॉग पर प्रतियां, तुरंत इसे अनमाउंट करता है। यदि आप एक अच्छी बूट छवि वाले उपकरण के बारे में चिंतित हैं, तो बूट प्रबंधक की दूसरी प्रति और दूसरी डिवाइस पर सभी आवश्यक बूट चित्र चिपकाएँ और कंप्यूटर को या तो CF कार्ड से बूट करने के लिए कॉन्फ़िगर करें।

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

    यदि डेटा विशेष रूप से संवेदनशील है, तो मैं नियमित रूप से उपकरण का भुगतान करूंगा, एक ताज़ा एक के लिए बैकअप सीएफ को स्वैप करें और इसे fsckअच्छे माप के लिए अपने सभी फाइल सिस्टम को दे दें ।


+1, हालांकि प्रतिकृति प्राथमिक प्रतिलिपि के समान समस्याओं से ग्रस्त है - यदि आप दो उपकरणों को समन्वयित करना शुरू करते हैं (जैसा कि यह RAID या उच्च स्तर की उपयोगिता के माध्यम से होता है) और शक्ति बाहर निकल जाती है (जब डेटा में लगातार संलग्न होता है), तो आप फिर से कचरा उठाएं। RAID1 होने में क्या मदद हो सकती है, समय-समय पर भौतिक रूप से उपकरणों में से एक को बदलना और एक ऑफ लाइन बैकअप को हटा दिया जाना चाहिए। आपको इसे हटाने से पहले एफएस को फ्रीज करना होगा, हालांकि यह सुनिश्चित करने के लिए कि यह सुसंगत है (यानी स्नैपशॉट बनाते हैं)। XFS उन फ़ाइल सिस्टमों में से एक है जिनके पास इसके लिए समर्थन है।
पीटरफ

वास्तव में। जैसे मैंने लिखा, कोई गारंटी नहीं है। किसी भी समय आप डेटा लिख ​​रहे हैं, आप पर भ्रष्टाचार हो सकता है। Electronics.stackexchange.com पर लोग सुपरकैपेसिटर और ब्राउन-आउट डिटेक्शन के साथ खेल रहे हैं, जहां एम्बेडेड सिस्टम को पावर आउट होने की सूचना मिलती है, और फिर भी लिखने के लिए पर्याप्त रस मिलता है। शायद। :) यह सब इस बात का है कि आप संभावित खतरे के बारे में कितना सोचते हैं, और कितना पैसा / प्रयास आप इस मुद्दे को हटाने के लिए खर्च करना चाहते हैं (और अगले एक पर विचार करना शुरू करें)।
एलेक्सिओस

इस उत्तर के लिए धन्यवाद। यह मेरे लिए चीजों को काफी स्पष्ट करता है।
गणितज्ञ १

4

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

उसके कारण, महत्वपूर्ण डेटा की रक्षा करने की रणनीति को हार्डवेयर स्तर पर किए गए निर्णयों से सबसे अधिक लाभ होगा , उदाहरण के लिए, एक निर्बाध बिजली की आपूर्ति का उपयोग करके। संभवतः यह आपकी स्थिति में इतना संभव नहीं है।

आपने कहा है कि प्रदर्शन वास्तव में एक बड़ा मुद्दा नहीं है, इसलिए इसका विवेकपूर्ण उपयोग करें fsync()

क्या डिस्क लेखन ऑपरेशन के दौरान बिजली की हानि केवल डेटा के उस हिस्से को भ्रष्ट करती है जिसे मैं समय-समय पर फाइल में जोड़ रहा हूं या यह पूरी फाइल को भ्रष्ट कर सकता है?

मैं वर्षों से व्यक्तिगत रूप से और निम्न-मध्यम ट्रैफ़िक इंटरनेट सर्वरों पर extN फाइलसिस्टम का उपयोग कर रहा हूं, और एलेक्सिस की तरह मैंने बिजली की खराबी के कारण बहुत भ्रष्टाचार नहीं देखा है (हालांकि निष्पक्ष होने के लिए, सर्वर में यूपीएस है और मैं याद नहीं कर सकता हूं उनमें से एक वास्तव में उस तरह से नीचे जा रहा है)। एक और अधिक गंभीर मुद्दा हार्डवेयर की विफलता से भ्रष्टाचार है, जो विभिन्न फाइल सिस्टम (फिर से) समस्या से निपटने के लिए अधिक और कम सक्षम हो सकता है, लेकिन (फिर से) यह मौलिक रूप से उनके नियंत्रण से परे है और वे इसे रोक नहीं सकते हैं।

मैंने कभी-कभी फाइलों को खोते हुए देखा है, या शून्य आकार में काट दिया है। मुझे लगता है कि एक अच्छा मौका है कि ये किसी भी तरह ठीक हो जाए; मेरे लिए यह आवश्यक नहीं था क्योंकि वे बैकअप ले चुके थे। ज्यादातर समय अगर कुछ भी गलत है, तो इससे fsckनिपटने के लिए लगता है।

क्या डेटा जो बिजली की हानि के बिंदु पर पूरी तरह से सुरक्षित नहीं लिखा जा रहा है? विशेष रूप से, क्या कोई जोखिम है कि मेरी initramfs.cpio फ़ाइल भी भ्रष्ट हो सकती है?

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

क्या कोई तरीका है जो मैं डेटा की सुरक्षा के लिए अपने एप्लिकेशन कोड में उपयोग कर सकता हूं?

Fsync () के बारे में बात दोहराते हुए । C ++ / iostream ऑब्जेक्ट के पास इसके लिए कोई विधि नहीं है (:: फ्लश और :: सिंक fsync नहीं हैं), लेकिन आपको केवल एक फ़ाइल विवरणक की आवश्यकता है।


इस जवाब के लिए थैंक्यू यह बहुत मददगार भी है। मैं विभाजन को बढ़ा रहा हूं syncजो /etc/fstabफ़ाइल में विकल्प के माध्यम से लिखा जाता है क्योंकि मैं समझता हूं कि यह लिखने को समान रूप से होने के लिए मजबूर करता है। मैं यह मान रहा हूं कि इसका मतलब है कि जब मेरी फाइल कोड रिटर्न लिखती है, तो डेटा को डिस्क पर भौतिक रूप से लिखा गया है। मैं समझ गया था कि syncअनिवार्य रूप से fsync(my_filedescriptor)एक लेखन के बाद कॉल करने के साथ ही बढ़ते हैं । क्या मेरी यह समझ सही है?
गणितज्ञ १

@ mathematician1975 मैं ऐसा मानूंगा, यह कोई ऐसी चीज नहीं है जिस पर मैंने शोध किया है। IMO, जब तक यह किसी भी तरह से असुविधाजनक नहीं होता, तब तक fsync()आपको लगता है कि बिंदुओं पर फेंकना उचित है, वैसे भी चोट नहीं पहुंचेगी , और सिस्टम को और अधिक मजबूत बनाता है (उदाहरण के लिए, यदि उपकरण बिना सिंक सेट, आदि के बिना लापरवाही से घुड़सवार है)।
गोल्डीलॉक्स

1

जेडएफएस निश्चित रूप से एक फाइल सिस्टम है जो भ्रष्टाचार के खिलाफ डिजाइन द्वारा संरक्षित है और संभवतः एकमात्र है। हालाँकि, मैं UFSlinux आधारित प्लेटफार्मों के लिए ZFS कार्यान्वयन (या तो फ्यूज आधारित या देशी) की उपलब्धता के बारे में निश्चित नहीं हूं।


0

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

डाउन-साइड यह है कि यह बहुत महंगा है, अप-साइड पर वे बहुत समर्थन देते हैं। खर्च के कारण, यह वास्तव में केवल उच्च दांव और / या उच्च मात्रा वाले उत्पादों के लिए एक विकल्प है। जैसे कि तेल और गैस उत्पादन में महत्वपूर्ण एम्बेडेड उपकरण, जो "अनिश्चित" ऑपरेटिंग परिस्थितियों (जैसे अक्सर बिजली आउटेज, आदि) के भीतर सिस्टम अखंडता सुनिश्चित करने की आवश्यकता होती है।

की जाँच करें DataLight (कंपनी) और / या उत्पाद " रिलायंस नाइट्रो "। (रिलायंस उनकी विरासत है और सुरक्षित है लेकिन बहुत प्रभावी समाधान नहीं है, जो रिलायंस एनआईटीआरओ द्वारा दिया गया है )। यहां तक ​​कि अगर आपके पास इस प्रणाली का उपयोग करने के लिए पैसा नहीं है, तो उनके पास कुछ बहुत अच्छे लेख हैं, जो चर्चा करते हैं कि उनका सिस्टम कैसे काम करता है, क्यों यह ext3 और ext4 की तुलना में अधिक विश्वसनीय है।

मेरी क्षमा याचना अगर यह एक विज्ञापन की तरह पढ़ती है, तो बस विकल्पों को इंगित करना चाहती थी।


नमस्ते और साइट पर आपका स्वागत है। यदि आप उत्पादों का सुझाव देने जा रहे हैं, तो कृपया मुझे) प्रश्न में उत्पाद के लिए एक लिंक प्रदान करें; ii) समझाएं कि यह विकल्पों से बेहतर क्यों है (आप सिर्फ यह दावा करते हैं कि यह एक जबरदस्त काम करता है लेकिन यह नहीं समझाएं कि यह किसी और चीज से बेहतर क्यों है); iii) यदि आप इसे बनाने वाली कंपनी से जुड़े हैं, तो आपको यह स्पष्ट करने या स्पैमिंग का आरोप लगाने की आवश्यकता है (यह कहते हुए कि आप कर रहे हैं, बस एक सिर है)।
टेराडो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.