2014-06-23 7 views
7

मैं ट्रैक/रजिस्टर करना चाहता हूं जब मेरी प्रणाली (रास्पबेरी पीआई) बंद हो जाती है, आमतौर पर अचानक बिजली की कमी के कारण।एसडी कार्ड लिखने की सीमा - डेटा लॉगिंग

मैं इसे एसडी कार्ड में हर 10 मिनट में दिल की धड़कन रिकॉर्ड करके करना चाहता हूं - इसलिए हर 10 मिनट में यह एसडी में जाएगा और फ़ाइल में वर्तमान समय/तारीख लिख देगा। क्या वह लंबे समय तक एसडी को नुकसान पहुंचाएगा?

यदि इसमें केवल 100k लिखने के चक्र हैं, तो इसमें कुछ वर्षों में खराब ब्लॉक होगा। लेकिन मैंने इसे रोकने के लिए सर्किट्री पढ़ी है - क्या यह खराब ब्लॉक को रोक देगा? लॉग को कई ब्लॉक में वितरित करना सुरक्षित होगा?

धन्यवाद

+0

यह आपके एसडी कार्ड के मेक और मॉडल पर निर्भर करेगा, लेकिन अधिकांश आधुनिक कार्डों के साथ मुझे लगता है कि आपको ठीक होना चाहिए। –

उत्तर

16

इस सवाल का सामान्य जवाब एक मजबूत "यह निर्भर करता है" है। (व्यावहारिक जवाब क्या आपके पास पहले से है, यदि आपके फाइल सिस्टम पैरामीटर गलत नहीं कर रहे हैं, तो आप इस मामले में एक बड़े अंतर की है।) यह निम्नलिखित पर निर्भर करता है:

  • एसडी कार्ड प्रकार (एसएलसी/एमएलसी)
  • एसडी कार्ड नियंत्रक (पहनने लेवलिंग)
  • एसडी कार्ड आकार
  • फाइल सिस्टम
  • भाग्य

अगर हम एक फ्लैश चिप पर एक नज़र डालें, इसे में आयोजित किया जाता है क्षेत्रों। एक क्षेत्र एक ऐसा क्षेत्र है जिसे पूरी तरह मिटाया जा सकता है (वास्तव में केवल 1 के साथ एक राज्य में रीसेट), आमतौर पर एसडी कार्ड के लिए 128 कीबी। ज़ीरोस को थोड़ा-सा लिखा जा सकता है, लेकिन लिखने का एकमात्र तरीका इस क्षेत्र को मिटाना है।

सेक्टर के मिटाने की संख्या सीमित है। मिटाए जाने वाले ऑपरेशन में हर बार एक ही क्षेत्र में प्रदर्शन किया जाएगा, और प्रत्येक सेल को लिखे गए मानों में और अनिश्चितता है। कार्ड को दी गई लेखन सीमा वास्तव में एक ही क्षेत्र के लिए मिटाई गई संख्या है।

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

अन्य एल्गोरिदम भी हैं। नियंत्रक क्षेत्र के मिटाए गए समय या किसी क्षेत्र पर होने वाली त्रुटियों को ट्रैक कर सकता है। दुर्भाग्य से, कार्ड निर्माताओं आमतौर पर सटीक एल्गोरिदम बारे में बहुत ज्यादा बता नहीं है, लेकिन एक सिंहावलोकन के लिए, देखें:

http://en.wikipedia.org/wiki/Wear_leveling

वहाँ फ्लैश चिप्स के विभिन्न प्रकार के उपलब्ध हैं। एसएलसी चिप्स प्रति मेमोरी सेल केवल एक बिट स्टोर (यह या तो 0 या 1 है), एमएलसी कोशिकाएं दो या तीन बिट्स स्टोर करती हैं। स्वाभाविक रूप से, एमएलसी चिप्स उम्र बढ़ने के लिए अधिक संवेदनशील हैं। तीन-बिट (आठ स्तर) कोशिकाएं 1000 से अधिक लिखने में सहन नहीं कर सकती हैं। इसलिए, यदि आपको विश्वसनीयता की आवश्यकता है, तो इसकी उच्च कीमत के बावजूद एसएलसी कार्ड लें,

पहनने के स्तर के रूप में पहनने के स्तर पर पूरे सामान पहनते हैं, बड़े कार्ड छोटे कार्डों की तुलना में अधिक क्षेत्र को मिटा देते हैं, क्योंकि उनके पास अधिक से अधिक क्षेत्र होते हैं। सिद्धांत रूप में, 100 000 लेखन चक्र वाले 4 जीबी कार्ड अपने जीवनकाल के दौरान 400 टीबी डेटा ले जाने में सक्षम होंगे।

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

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


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

तो, हम केवल कुछ अनुमान लगा सकते हैं। आइए अनुमान लगाएं कि एक छोटा सा लेखन औसत में दो 4 कीबी ब्लॉक को अमान्य करता है। हर 10 मिनट में लॉग इन करने से हर 160 मिनट में एक 128 कीबी मिट क्षेत्र खपत होती है। यदि कार्ड एक 8 जीबीबी कार्ड है, तो इसमें लगभग 64 के क्षेत्र हैं, इसलिए कार्ड हर 20 वर्षों में एक बार चला जाता है। यदि कार्ड 1000 लिखने के चक्रों को सहन करता है, तो यह 20 000 वर्षों के लिए अच्छा होगा ...

ऊपर की गणना सही पहनने के स्तर और एक बहुत ही कुशल फ़ाइल सिस्टम मानती है। हालांकि, 1 000 का एक सुरक्षा कारक पर्याप्त होना चाहिए।

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

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

+0

ऐसे सूचनात्मक उत्तर लिखने के लिए समय निकालने के लिए धन्यवाद। – jsejcksn

संबंधित मुद्दे