जब किसी भी समय बिजली जा सकती है तो सुरक्षित रूप से एसडी कार्ड का उपयोग करें


10

हम एक छोटे से एम्बेडेड लिनक्स सिस्टम (2.6.35-ish) पर काम कर रहे हैं जो ओएस और एप्लिकेशन (250-500Meg) के लिए एक छोटे आंतरिक एनएंड डिवाइस और डेटा के लिए 8 जीबी एसडीएचसी एसडी कार्ड के साथ एक एसडी कार्ड है।

यूनिट की बिजली कभी भी काटी जा सकती है।

सिस्टम को एसडी कार्ड में डेटा स्टोर करना होगा। यह डेटा बहुत महत्वपूर्ण है ... यह सिस्टम का पूरा उद्देश्य है। सिस्टम आमतौर पर दूरस्थ स्थानों में किसी भी नेटवर्क से पूरी तरह से डिस्कनेक्ट हो जाते हैं और डेटा को हर 4-8 सप्ताह में चुपके से प्राप्त किया जाता है।

वर्तमान में, हम एसडी कार्ड पर केवल VFAT मिला है। यह मुख्य रूप से ऐसा था कि पहला परीक्षण ग्राहक अपने Win7 लैपटॉप पर मैन्युअल रूप से डेटा को आसानी से कॉपी कर सकते थे।

हालाँकि, मैं अब चिंतित हूँ कि यह केवल कुछ समय की बात है जब तक कि गलत समय पर बिजली की निकासी डेटा हानि का कारण न हो।

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

ऐसा करने का सबसे अच्छा तरीका क्या है?

संपादित करें

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

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

EDIT 2

इलेक्ट्रॉनिक्स स्टैक एक्सचेंज पर किसी ने याद दिलाया कि NAND पर ECC डेटा भी है, इसलिए इरेज़ की आवश्यकता को रोकने का कोई तरीका नहीं है।

तो, इस स्थिति में ब्लॉक 2mtd के माध्यम से JFFS2 उपयुक्त होगा?

EDIT 3

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


1
"उम्मीद है कि SD कार्ड इतने मूर्ख नहीं हैं ..." <--- ROFLOL। कम संभावना!
derobert

जब तक आपको अपनी समस्या का पूरा हल नहीं मिल जाता है, तब तक syncएसडी कार्ड पर प्रत्येक लिखने के बाद कमांड का उपयोग करें , यह बिट्स को आपके द्वारा परिवर्तित किए जाने के बाद, उन्हें रैम में स्टोर किए बिना ही बना देगा / बना देगा ताकि आपके परिवर्तन कार्ड पर हो जाएं। और बिजली की हानि से नहीं गुजरेगा।
हानन एन।

syncसंभवत: यह और भी बदतर बना देगा, क्योंकि यह समय के अंश को बढ़ाता है कि मेटाडेटा मध्य-अद्यतन है।
बेन Voigt

जवाबों:


5

ठीक है, जिस तरह से आप इसे ठीक कर सकते हैं वह है "किसी भी समय बिजली कटौती की जा सकती है" समस्या को ठीक करने के लिए। क्या बैटरी पावर का एक मिनट भी जोड़ना असंभव है?

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

आपकी मूल समस्या SD कार्ड पर लेवलिंग पहनने की है, जो AFAIK कार्ड विक्रेता पर निर्भर करता है (और शायद बैच भी, वे इसे कभी भी बदल सकते हैं)। यह शायद पावर आउटेज को सही तरीके से हैंडल नहीं करता है। और यह क्या करता है पर निर्भर करता है, इसका मतलब यह नहीं हो सकता है कि आप उस ब्लॉक को भ्रष्ट कर रहे हैं जिसे आप लिख रहे हैं।

  1. तुच्छ रूप से छोटे कार्ड मान लें - 3 (फ्लैश) ब्लॉक। ब्लॉक 1 को 2 या 3 से अधिक राइट्स मिले हैं। मैं भौतिक ब्लॉक नंबर, और तार्किक ब्लॉक ए, बी, सी अक्षर से कॉल करूंगा। अभी, A = 1, B = 2, C = 3।
  2. आप A को ब्लॉक करने के लिए एक लेख जारी करते हैं। एसडी कार्ड आहा की तरह है! हमें यहां लेवलिंग पहनने की जरूरत है, और ब्लॉक 1 2 से पहले पहनने जा रहा है और 3. यह ब्लॉक 1 और 2 को स्वैप करने का निर्णय लेता है।
  3. यह ब्लॉक 1 को रैम स्थिति i (एसडी कार्ड पर, सिस्टम रैम पर नहीं) पढ़ता है। यह उस हिस्से को अपडेट करता है जिसे आप बदलना चाहते थे।
  4. यह ब्लॉक 2 को RAM स्थिति ii में पढ़ता है
  5. यह ब्लॉक 1 मिटाता है
  6. यह रैम स्थिति ii को 1 को ब्लॉक करने के लिए लिखता है।
  7. यह B = 1 कहने के लिए मैपिंग तालिका को अद्यतन करता है
  8. यह ब्लॉक 2 मिटा देता है।
  9. यह राम स्थिति i लिखता है 2 ब्लॉक करने के लिए।
  10. यह A = 2 कहने के लिए मैपिंग टेबल को अपडेट करता है

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


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

खैर, हमारे मामले में "फिक्स 'पावर को किसी भी समय काटा जा सकता है" "ट्रक ड्राइवरों को पहिया के पीछे सो जाने और हमारे उपकरणों में ड्राइविंग करने से रोकने के लिए" फोड़ा नीचे गिरता है। "इसमें एक ट्रक दुर्घटनाग्रस्त हो गया" वास्तव में विफलता का सबसे आम तरीका है।
एसएफ।

1
एक मिनट की बैटरी पावर की जरूरत नहीं होनी चाहिए। एक एसडी कार्ड को सुरक्षित रूप से अनमाउंट करने के लिए आवश्यक शक्ति की मात्रा उस सीमा के भीतर अच्छी तरह से होनी चाहिए जो एक संधारित्र स्टोर कर सकता है।
बेन Voigt

4

कुछ इसी तरह की चर्चा इलेक्ट्रॉनिक्स.स्टैकएक्सचेंज डॉट कॉम में की गई थी: मैं अप्रत्याशित बिजली विफलताओं के खिलाफ एसडी कार्ड की सुरक्षा कैसे करूं?

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

लघुकथा यह है: आपके पास बैटरी की शक्ति नहीं हो सकती है, लेकिन आपूर्ति को सुचारू करने के लिए आपकी बिजली आपूर्ति में कुछ बहुत बड़े कैपेसिटर हैं। असल में, बिजली सिर्फ बाहर नहीं जाती है। वोल्टेज टेपर बंद। वहाँ शायद एक भूरे रंग की सुरक्षा आईसी / सर्किट है जो आपके एम्बेडेड सिस्टम पर RESET सिग्नल का संकेत देता है जब वोल्टेज एक निश्चित बिंदु से नीचे गिरता है। पीसी मदरबोर्ड में वे भी होते हैं, और वे PSU से 'POWEROK' सिग्नल पर प्रतिक्रिया करते हैं। इसका मतलब यह है कि, जब बिजली निकलती है, तो कंप्यूटर सुरक्षित स्तर से नीचे वोल्टेज गिरने से पहले कुछ मिलीसेकंड को बलपूर्वक रोक देगा। इस समय के दौरान, एसडी कार्ड जैसे परिधीय उपकरण अभी भी संचालित हैं, लेकिन कंप्यूटर से अधिक लेनदेन नहीं होते हैं।

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

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

वैसे भी, यह अच्छी तरह से हो सकता है कि आपके पास इतना मुद्दा नहीं होगा। अपने कार्ड पर ब्लॉक मान लेने से 100 राइट्स बच सकते हैं (रूढ़िवादी - लेकिन अच्छी गुणवत्ता वाले कार्ड प्राप्त करने की कोशिश करें!), और 8 जीबी कार्ड का उपयोग करके, आपने पहले ब्लॉक के मरने के समय तक 800GB लिखा होगा (सांख्यिकीय रूप से, निश्चित रूप से)।


सवाल शुरू किया गया था क्योंकि मैं पहले से ही बिजली की घटनाओं पर बड़े पैमाने पर एसडी कार्ड भ्रष्टाचार कर रहा था। बहुत अक्सर, वास्तव में। हो सकता है कि 1 में 20 बिजली की विफलता की घटनाएँ भयावह थीं, और संभवतः 4 में से 1 ने कम से कम कुछ नुकसान किया। मैंने अंततः आंतरिक नंद फ्लैश पर डेटा के एक दिन के मूल्य को संग्रहीत करने के लिए बदल दिया, और प्रतिलिपि करने के लिए SD आधी रात को (एक 1 सेकंड या इतने ऑपरेशन)। मैं भविष्य में चीजों को बेहतर बनाना चाह रहा हूं। मुझे पहले से ही रेल पर 400uF मूल्य के कैप मिले हैं ... पर्याप्त नहीं, जाहिरा तौर पर ... शायद ब्राउनआउट को ठीक से संभाला नहीं जा रहा है।
द्रोण

यह एक बहुत ही उच्च घटना दर है! आस्टसीलस्कप जांच पाने के लिए समय और कार्रवाई, मेथिंक्स में इसे देखें। यद्यपि यह संभव है कि आप इसके चारों ओर सॉफ़्टवेयर में काम कर सकते हैं, बिजली की खपत के मामले में सबसे अच्छा तरीका यह सुनिश्चित करना है कि आपके पास हार्डवेयर ग्लिट्स नहीं हैं। हो सकता है कि आप अपना दांव हेज कर सकते हैं और Electronics.stackexchange.com पर भी पूछ सकते हैं ?
एलेक्सियो

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

4

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


3

बिजली कटौती और समग्र डेटा सुरक्षा की संभावना वाले वातावरण में डेटा सुरक्षा के लिए आपको और भी अधिक बिंदुओं पर सवार होना चाहिए।

भंडारण के लिए USE NO MLC सेल, केवल SLC के पास डेटा अवधारण समय है जो पर्याप्त है। फिर उन एसएलसी कार्डों में स्मार्ट फ़र्मवेयर हो सकते हैं, कुछ किसी भी राज्य में बिजली की हानि से दूषित नहीं हो सकते हैं। वे बिजली कटौती को मापते हैं और सुरक्षित करते हैं कि अंतिम ब्लॉक पूरी तरह से लिखा गया है।

वे कार्ड अधिक महंगे हैं और थोड़ा धीमा तो एमएलसी सेल। विक्रेताओं को कार्ड के लिए स्विस की तरह देखें।

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