एसडी कार्ड को भ्रष्टाचार-सबूत बनाना


11

मेरी एम्बेडेड लिनक्स डिवाइस कुछ डायग्नोस्टिक्स डेटा को बचाने के लिए एक एसडी कार्ड का उपयोग करती है, आंतरिक फ्लैश के लिए बहुत अधिक उपयोगी है।

समस्या यह है कि यदि डिवाइस को अनपेक्षित रूप से बंद कर दिया गया है, तो कार्ड पर फाइल सिस्टम (FAT32) दूषित है।

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

इसे कम करने के लिए आप कौन से तरीके सुझाएंगे? स्टार्टअप पर पर्याप्त fsck.vfat चल रहा है?

कुछ और जानकारी:

  • कार्ड को उपयोगकर्ता द्वारा हटाने योग्य नहीं माना जाना है। इसे आंतरिक डिस्क माना जाता है। इस पर संग्रहीत कोई भी डेटा नेटवर्क पर डाउनलोड करने या एक यूएसबी ड्राइव के लिए सुलभ होगा, और सिस्टम स्वचालित रूप से सबसे पुरानी प्रविष्टियों को शुद्ध करता है। इसका मतलब है कि यह आपके औसत पीसी में पठनीय होने की आवश्यकता नहीं है।
  • सिस्टम वर्तमान में FAT, yaffs और jffs2 का समर्थन करता है। कर्नेल में अन्य फाइल सिस्टम जोड़ना संभव है, लेकिन यदि अन्य रास्ते मौजूद हैं, तो हम उन्हें पहले पसंद करेंगे।
  • डेटा हानि के बिना भी कई मिनट के लिए मांग पर लेखन को निलंबित किया जा सकता है।
  • आंशिक डेटा हानि या मामूली भ्रष्टाचार स्वीकार्य है। लॉगिंग का पूर्ण विराम नहीं है।
  • अधिकांश समय पॉवरऑफ़ घटनाएँ पूरी तरह अप्रत्याशित होती हैं।
  • यह प्रणाली ARM9, 200MHZ, 64MB RAM, 32MB आंतरिक फ्लैश पर चल रही है और अपनी प्राथमिक भूमिका के लिए CPU शक्ति का अधिकांश उपयोग करती है। फैंसी संसाधन-भारी समाधानों के बारे में सोचते हुए इसे ध्यान में रखें।

3
आप शायद पहले से ही इस पर विचार कर रहे हैं, लेकिन यह इस सवाल से भटकने वाले अन्य लोगों के लिए उल्लेख के लायक है: अधिकांश फ्लैश कार्ड (एसडी, सीएफ, आदि) में केवल कुछ हजार चक्रों (सर्वोत्तम रूप से) का लेखन सहनशीलता है। डेटा लॉगिंग या इसी तरह के कार्यों के लिए सामान्य कार्ड का उपयोग करना अंततः उन्हें मार देगा (और आमतौर पर कम समय में लोगों के विचार से)।
क्रिस एस

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

यदि आपका उपकरण बंद है और कार्ड में यह डेटा नहीं लिखा है तो लागत क्या है? जैसे अगर डायग्नोस्टिक डेटा नहीं लिखा है, तो क्या आपके पास बहुत समय या पैसा खो जाएगा या आपके पास कुछ लॉग फाइलें नहीं होंगी?
फ्रीहिट

1
@Freheit: ग्राहकों के लिए पूरी तरह से महत्वहीन सुविधा नहीं होने के बावजूद अस्पष्ट है, लेकिन गायब है, और इसके अलावा अगर कोई और वास्तव में खराब है और बलि का बकरा खोजता है, तो हम अदालत में बचाव का एक रास्ता खो देते हैं। संभावना विफलता से पहले डेटा डेटा सबसे मूल्यवान है - एक प्रमाण जो डिवाइस ने अंतिम क्षण तक सही ढंग से काम किया, और यह नहीं कि उसकी अपनी गलती ने घटनाओं को आपदा में बढ़ा दिया।
एसएफ।

का उल्लेख किया। आप स्पष्ट रूप से कुछ महत्वपूर्ण के लिए डेटा कैप्चर कर रहे हैं!
फ़्रीहिट

जवाबों:


8

आप block2mtdड्राइवर का उपयोग ट्रांसेक्शनल jffs2 या yaffs (2) फाइल सिस्टम का उपयोग करने के लिए कर सकते हैं जो आपके एसडी कार्ड के लिए कहीं और काम करते प्रतीत होते हैं, जो पावरऑफ पर डेटा हानि या फाइल सिस्टम भ्रष्टाचार की आपकी समस्या को हल करेगा।

हालांकि ऐसा करने से अन्य समस्याएं हो सकती हैं। चूँकि SD कार्ड में पहनने के लिए लेवलिंग और सेक्टर रीमैपिंग के लिए खुद के मैकेनिज्म होने की संभावना है, ये jffs2's और yaffs के कार्यान्वयन के साथ हस्तक्षेप कर सकते हैं, वही करने के लिए, जीवन काल या आपके SD कार्ड के प्रदर्शन को कम कर सकता है। यदि यह कोई मुद्दा नहीं है, तो यह कोशिश करने लायक होना चाहिए।


2GB SD कार्ड भरने के लिए महीने या दो के साथ, पूरी तरह से यादृच्छिक लोड संतुलन के साथ पहनने की सीमा तक पहुंचना भी एक समस्या नहीं होनी चाहिए।
एसएफ।

5

जांचें कि क्या आप जिस कर्नेल का उपयोग करते हैं, वह vfat के लिए फ्लश और / या सिंक फ्लैग का समर्थन करता है (ऐसा लगता है कि कुछ संस्करण इसे अनदेखा करते हैं, सावधान रहें!)।

या बस फाइलसिस्टम के साथ पूरी तरह से दूर करें अगर सब कुछ एक फाइल में जा सकता है (जैसा कि कच्चे लॉग स्ट्रीम के साथ होगा!) या कुछ निश्चित आकार की फाइलों में (विभाजन का उपयोग करें;)

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