जब मैंने हेडलेस पी पर नेटवर्किंग खो दी हो, तो उस स्थिति में जब मैं आमतौर पर किसी कीबोर्ड में प्लग करने के लिए बहुत आलसी होता हूं, तो सिवाय इसके कि मैं उन्हें बंद करने के अर्थ में, पाई को अनप्लग करने की आदत न डालूं ।
आम तौर पर मैं हमेशा यह सुनिश्चित करने के लिए जांच करता हूं कि हरे रंग की एसीटी प्रकाश उस बिंदु पर नहीं है; हाल के मॉडल (या फर्मवेयर?) के लिए यह तब बंद होगा जब एसडी कार्ड एक्सेस नहीं किया जा रहा हो। जो आप सुनिश्चित करना चाहते हैं। जब तक आप इसे लगातार लिख रहे हैं, यह काफी सरल होना चाहिए; जब तक मुक्त रैम में हेडरूम की एक सभ्य मात्रा होती है (संदर्भ के आधार पर 50-100 + एमबी का कहना है), तब चीजें जो अक्सर फिर से इस्तेमाल होने का खतरा होता है, लेकिन वास्तव में किसी भी समय एक प्रक्रिया द्वारा लोड नहीं किया जाता है नि: शुल्क मेमोरी में कैश किया जाएगा और ओएस द्वारा वहां से पुनः लोड किया जाएगा, वास्तविक भौतिक माध्यम नहीं। इस तरह से सभी समकालीन सामान्य प्रयोजन ऑपरेटिंग सिस्टम संचालित होते हैं।
यदि पीआई एसडी कार्ड का उपयोग कर रहा है, तो यहां जोखिम कम से कम है : कार्ड पर फाइल सिस्टम मेमोरी स्थिति के साथ सिंक से बाहर है। आम तौर पर, यह शायद एक बड़ी समस्या नहीं है; शुरुआत के लिए, अधिकांश pis पर डिफ़ॉल्ट रूप से उपयोग की जाने वाली फाइलसिस्टम को इसके खिलाफ एक रक्षा हो सकती है, जैसा कि fsck है जो कि बूट सिस्टम में स्वचालित रूप से लागू नहीं किया जाना चाहिए यदि फाइल सिस्टम साफ-सुथरा नहीं है। मैं समझाता हूँ कि मैं क्यों कहता हूँ "हो सकता है" और नहीं "शीघ्र ही" है, क्योंकि इस संदर्भ में मुझे लगता है कि यह अक्सर नहीं हो सकता है ।
जहां तक मुझे पता है, मैंने प्लग को खींचते समय फाइल सिस्टम भ्रष्टाचार या डेटा हानि के साथ कभी समाप्त नहीं किया है, जो मैंने वर्षों में एक सौ या अधिक बार किया हो सकता है। हालाँकि, फिर से, मैं इसे आदतन नहीं करता हूँ। यदि आप इसे दिन में कई बार करते हैं, तो आप अंततः सांख्यिकीय जोखिम के स्तर पर दौड़ सकते हैं, और इसमें संभावित रूप से गंदा पकड़ शामिल है।
यहाँ समस्या है:
हाल ही में यह मेरे साथ हुआ है कि SD कार्ड के साथ एक समस्या है जो OS / फाइल सिस्टम तंत्र के खिलाफ शक्तिहीन हो सकता है, और जो यह समझा सकता है कि कुछ लोगों को fs भ्रष्टाचार के साथ लगातार समस्याएं हैं, विशेषकर जो सिस्टम की परवाह किए बिना कॉर्ड को हिलाते हुए निकलते हैं। राज्य - उदाहरण के लिए, हाल ही में किसी ने यहां कंप्यूट मॉड्यूल चलाने का दावा किया है, जहां भ्रष्टाचार ने सिस्टम को ~ 1/40 में बिजली की कटौती के लिए अपरिहार्य बना दिया।
अमूर्त शब्दों में, एसडी कार्ड की प्रकृति को ध्यान में रखे बिना , सिस्टम के व्यस्त होने के बावजूद भी ऐसा नहीं होना चाहिए, क्योंकि भ्रष्ट होने की सबसे अधिक संभावना है गैर-महत्वपूर्ण सामान जो लिखा जा रहा है, न कि कोई सिस्टम सॉफ्टवेयर जो प्रभावी है केवल और केवल अपडेट के दौरान बदल जाता है।
यह हो सकता है अगर बिट्स को चारों ओर से घेरे में लिया जा रहा है, और इसलिए फाइलसिस्टम मेटा जानकारी संग्रहीत करता है जहां विभिन्न बिट्स दूषित हैं। फिर भी, हालांकि, जर्नलिंग और fsck को इससे निपटने में सक्षम होना चाहिए, जिसमें कर्नेल को बूट करने की आवश्यकता होती है, लेकिन pi पर कर्नेल एक अलग बूट पार्टीशन पर होता है जो उपयोग के दौरान अनमाउंट हो सकता है (अपडेट करते समय को छोड़कर) क्योंकि सिस्टम बूट होने के बाद इसका कोई भी उपयोग नहीं किया जाता है। मतलब कि विभाजन के बारे में जानकारी प्रभावी रूप से, अचूक होनी चाहिए, तब भी जब उसे माउंट किया गया हो।
परंतु...
एसडी कार्ड ऑपरेटिंग सिस्टम का एक ब्लैक बॉक्स है। उससे बाहर निकलने का कोई रास्ता नहीं है। जबकि एसडी कार्ड नियंत्रकों के लिए विशिष्ट ड्राइवर हैं जो कंप्यूटर के हार्डवेयर का हिस्सा हैं (पीआई पर, यह SoC का हिस्सा है) कार्ड के विभिन्न, विशिष्ट बनाता है और मॉडल के लिए ड्राइवर जैसी कोई चीज नहीं है।
और फिर भी, उनके अंदर सभी माइक्रोकंट्रोलर हैं जो बहुत अलग तरीके से काम कर सकते हैं। 1. यह वह है जो कार्ड को एक ब्लैक बॉक्स बनाता है; यह एक मानकीकृत एसडी प्रोटोकॉल के माध्यम से ऑपरेटिंग सिस्टम के साथ बातचीत करता है, और यह ओएस के नियंत्रण का अंतिम बिंदु है।
एसडी कार्ड और अन्य सॉलिड स्टेट मीडिया जो पारंपरिक कताई डिस्क से अलग है उनमें से एक है अपारदर्शी वर्चुअल एड्रेसिंग का उपयोग; वे ऑपरेटिंग सिस्टम की धारणाओं में भौतिक रूप से जानकारी संग्रहीत नहीं करते हैं। यह ज्यादातर एक अच्छी बात है, वरना हम वास्तव में कार्ड, आदि के विभिन्न ब्रांडों के लिए विभिन्न चालकों की आवश्यकता हो सकती है, और यह (अस्पष्टता से) लागू करने के लिए कार्ड की अनुमति देता है पहनने लेवलिंग , जो काफी उनके जीवन काल को बढ़ाता है।
एक और चीज जो वे भरोसा करते हैं, वह अपेक्षाकृत बड़ी "ब्लॉक मिटा" है; जब किसी ब्लॉक में डेटा को बदलना पड़ता है, तो पूरा ब्लॉक मिटा दिया जाता है और फिर से लिखा जाता है। फाइलसिस्टम भी निश्चित रूप से इस तरह का काम करते हैं, लेकिन ध्यान दें कि एक सिस्टम सॉफ्टवेयर स्तर पर है, और इसके परिणामस्वरूप होने वाली समस्याएं बिल्कुल जर्नलिंग और fsck
डील करने की समस्याओं के प्रकार हैं ।
अधिक दुर्गम समस्या का क्रेज यह है कि स्केल फाइलसिस्टम यह करते हैं कि आमतौर पर एसडी कार्ड जिस पैमाने पर करते हैं, उससे बहुत छोटा होता है। यदि यह नहीं थे, तो आप भंडारण स्थान का एक अच्छा सौदा बर्बाद कर देंगे, क्योंकि एक फाइलसिस्टम ब्लॉक में केवल एक फ़ाइल से डेटा हो सकता है। यदि ब्लॉक 2 एमबी है और केवल कुछ ही kB डेटा है, तो बाकी बर्बाद हो गया है। तो फाइलसिस्टम ब्लॉक की सीमा 1/2 KiB से 4 KiB तक होती है।
यह बिल्कुल स्पष्ट है कि एसडी कार्ड ऐसा नहीं करते हैं, और वास्तव में, नहीं कर सकता है, क्योंकि एसडी कार्ड में नियंत्रक को "फ़ाइल", "फाइलसिस्टम", या यहां तक कि "डिवाइस पार्टीशन" जैसी सीमाओं के बारे में जागरूकता नहीं है। यह सिर्फ उन आंकड़ों से संबंधित है जो ओएस एक ब्लैक बॉक्स के अंदर से अपारदर्शी परत के माध्यम से चाहता है, जहां भौतिक स्तर पर कुछ भी हो सकता है।
उन कारणों में से एक यह स्पष्ट है (आधार कार्ड से अलग "पहली जगह में ऐसा नहीं कर सकता था") उन ब्लॉक अक्सर काफी बड़े होते हैं, फिर भी कार्ड सभी स्थान का उपयोग करने का एक सभ्य काम करने लगते हैं। एक मिटा ब्लॉक आकार में कई मेगाबाइट हो सकता है । क्या अधिक है, विवरण स्वामित्व हैं। हालांकि ऐसे तंत्र हो सकते हैं जिनके द्वारा ओएस कार्ड से मिटा ब्लॉक आकार का अनुरोध कर सकता है, कार्ड को यह प्रदान करने की आवश्यकता नहीं है, यह इसके बारे में झूठ बोल सकता है, और अगर ओएस ने इसका लाभ उठाने की कोशिश की तो यह बेतुका हो जाएगा।
यह इस प्रकार है कि:
एसडी कार्ड कंट्रोलर को इस बात की कोई अवधारणा नहीं है कि "डेटा" सही तरीके से कहां है, सुसंगत फाइल सिस्टम और पैरेन्ट्स, और
SD कार्ड एक ब्लैक बॉक्स है जिसमें OS वास्तव में नहीं देख सकता है,
फिर एक दिए गए 1 एमबी इरेज़ ब्लॉक में क्या है, जहां एक कार्ड में 4 किब या छोटे फाइल सिस्टम ब्लॉक का उपयोग करके कई विभाजन होते हैं, एक बार कार्ड का पर्याप्त उपयोग किए जाने के बाद मनमाना होने के लिए बाध्य होता है (और संभवतः तब भी जब इसका बहुत अधिक उपयोग नहीं किया गया हो सब)। यह शायद तब भी सच है जब आप ओएस को बड़े / संबंधित ब्लॉक आकारों का उपयोग करने के लिए मजबूर करने की कोशिश करते हैं; वे गुमराह करेंगे।
इसलिए:
यदि एसडी कार्ड एक ब्लॉक को बदलने के बीच में है, तो बिजली काट दी जाती है, जिसके परिणामस्वरूप डेटा की काफी बड़ी मात्रा का नुकसान हो सकता है जो कार्ड से कुछ भी हो सकता है । यह "केवल पढ़ने के लिए" के रूप में चिह्नित जानकारी हो सकती है। यह एक विभाजन से जानकारी हो सकती है जो कि माउंट नहीं है , और, जाहिर है कि अधिकतर अप्रयुक्त बूट विभाजन से।
यदि ऐसा होता है और कार्ड में स्वयं की सुरक्षा प्रणाली नहीं है (जो कुछ हो सकता है, लेकिन मुझे यकीन है कि सबसे अधिक नहीं है), तो आप एक FUBAR स्थिति को देख सकते हैं। पत्रिका रैंडम एमबी आकार के भ्रष्टाचार से रक्षा नहीं करेगा जो विभाजन की सीमाओं को भी नहीं पहचानता है। या fsck।
या, चूंकि कार्ड का हार्डवेयर आम तौर पर मालिकाना होता है, इसलिए कार्ड के निर्माता द्वारा उत्पादित सॉफ़्टवेयर के अलावा और कुछ भी हो सकता है - यह मानते हुए कि यह प्रशंसनीय है। मैंने ऐसा कभी नहीं सुना है। यह कार्ड को अधिक जटिल, अधिक महंगा और उपयोग करने के लिए अधिक परेशानी वाला बना देगा। जो लक्ष्य न हो।
एक और तरीका रखो, एसडी कार्ड का इस तरह से मज़बूती से इस्तेमाल करने का इरादा नहीं है । वे सस्ते और बहुत उपयोगी हैं, लेकिन यह प्रोटोकॉल में एक व्यापार बंद का परिणाम है: सामान्य तौर पर, कार्ड पर किसी भी चीज़ के लिए डेटा अखंडता की कोई गारंटी नहीं है यदि आप मनमाने ढंग से इसे शक्ति मारते हैं।
सिर्फ पाई को अनप्लग करने से क्या गलत हो सकता है? क्या मुझे बस अनप्लगिंग शुरू करनी चाहिए? नोट: इस मामले में मैं डेटा हानि के बारे में बहुत चिंतित नहीं हूं।
यह शारीरिक रूप से पाई को नुकसान नहीं पहुंचाएगा, नहीं, बस "डेटा हानि" से "बेकार कार्ड" का विस्तार हो सकता है जिसे पूरी तरह से सुधारने की आवश्यकता है। हालाँकि, मैं कहूँगा कि अगर आप इसे हरे रंग की ACT लाइट के साथ कर रहे हैं तो यह बहुत कम है।
- यह महत्वपूर्ण हो सकता है जब यह विचार किया जाए कि कुछ विशिष्ट कार्ड / मॉडल स्पष्ट रूप से कुछ लोगों के लिए दूसरों की तुलना में बदतर क्यों हैं। दुर्भाग्य से, जबकि दो कार्ड जो कि समान रूप से लेबल किए गए हैं, कथित विशेषताओं (आकार, गति, आदि) के संदर्भ में समान हो सकते हैं, निर्माता उन्हें घटक भागों के संदर्भ में वास्तव में 100% समान बनाने के लिए बाध्य नहीं हैं।