क्या सिर्फ प्लग खींचना ठीक है?


18

जब भी मैं अपनी पीआई को बंद करता हूं, मैं उपयोग करता हूं sudo poweroff, जो (मेरी समझ में) सभी प्रक्रियाओं को रोकने और बंद करने का एक सुरक्षित तरीका है।

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

मैंने जिन लोगों से बात की है, उन्होंने कहा है कि जब वे शट डाउन करना चाहते हैं, तो वे पावर लीड को कोड़ा मार देते हैं, और उन्होंने कभी भी इस पर ध्यान नहीं दिया।

तो सिर्फ पाई को अनप्लग करने में क्या गलत हो सकता है? क्या मुझे बस अनप्लगिंग शुरू करनी चाहिए?

नोट: इस मामले में मैं डेटा हानि के बारे में बहुत चिंतित नहीं हूं। मैं नियमित बैकअप सहेजता हूं और इस Pi का एकमात्र महत्वपूर्ण डेटा मेरे GitHub पर है।


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

2
@DarthVader 'कनेक्टर लाइफ कम करने' से आपका क्या तात्पर्य है? मैं किसी भी अधिक बार अनप्लग और प्लगिंग नहीं करूंगा, मैं एक शटडाउन से पहले बस अनप्लगिंग करूंगा। एसडी कार्ड को अलग कर रहा है केवल समस्या के अलावा? क्या एसडी कार्ड को फॉर्मेट करना हमेशा कार्ड को फिर से उपयोग करने योग्य बनाता है?
जेम्स विक्री

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

जवाबों:


23

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

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

यदि पीआई एसडी कार्ड का उपयोग कर रहा है, तो यहां जोखिम कम से कम है : कार्ड पर फाइल सिस्टम मेमोरी स्थिति के साथ सिंक से बाहर है। आम तौर पर, यह शायद एक बड़ी समस्या नहीं है; शुरुआत के लिए, अधिकांश pis पर डिफ़ॉल्ट रूप से उपयोग की जाने वाली फाइलसिस्टम को इसके खिलाफ एक रक्षा हो सकती है, जैसा कि fsck है जो कि बूट सिस्टम में स्वचालित रूप से लागू नहीं किया जाना चाहिए यदि फाइल सिस्टम साफ-सुथरा नहीं है। मैं समझाता हूँ कि मैं क्यों कहता हूँ "हो सकता है" और नहीं "शीघ्र ही" है, क्योंकि इस संदर्भ में मुझे लगता है कि यह अक्सर नहीं हो सकता है

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

यहाँ समस्या है:

हाल ही में यह मेरे साथ हुआ है कि SD कार्ड के साथ एक समस्या है जो OS / फाइल सिस्टम तंत्र के खिलाफ शक्तिहीन हो सकता है, और जो यह समझा सकता है कि कुछ लोगों को fs भ्रष्टाचार के साथ लगातार समस्याएं हैं, विशेषकर जो सिस्टम की परवाह किए बिना कॉर्ड को हिलाते हुए निकलते हैं। राज्य - उदाहरण के लिए, हाल ही में किसी ने यहां कंप्यूट मॉड्यूल चलाने का दावा किया है, जहां भ्रष्टाचार ने सिस्टम को ~ 1/40 में बिजली की कटौती के लिए अपरिहार्य बना दिया।

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

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

परंतु...

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

और फिर भी, उनके अंदर सभी माइक्रोकंट्रोलर हैं जो बहुत अलग तरीके से काम कर सकते हैं। 1. यह वह है जो कार्ड को एक ब्लैक बॉक्स बनाता है; यह एक मानकीकृत एसडी प्रोटोकॉल के माध्यम से ऑपरेटिंग सिस्टम के साथ बातचीत करता है, और यह ओएस के नियंत्रण का अंतिम बिंदु है।

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

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

अधिक दुर्गम समस्या का क्रेज यह है कि स्केल फाइलसिस्टम यह करते हैं कि आमतौर पर एसडी कार्ड जिस पैमाने पर करते हैं, उससे बहुत छोटा होता है। यदि यह नहीं थे, तो आप भंडारण स्थान का एक अच्छा सौदा बर्बाद कर देंगे, क्योंकि एक फाइलसिस्टम ब्लॉक में केवल एक फ़ाइल से डेटा हो सकता है। यदि ब्लॉक 2 एमबी है और केवल कुछ ही kB डेटा है, तो बाकी बर्बाद हो गया है। तो फाइलसिस्टम ब्लॉक की सीमा 1/2 KiB से 4 KiB तक होती है।

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

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

यह इस प्रकार है कि:

  1. एसडी कार्ड कंट्रोलर को इस बात की कोई अवधारणा नहीं है कि "डेटा" सही तरीके से कहां है, सुसंगत फाइल सिस्टम और पैरेन्ट्स, और

  2. SD कार्ड एक ब्लैक बॉक्स है जिसमें OS वास्तव में नहीं देख सकता है,

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

इसलिए:

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

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

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

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

सिर्फ पाई को अनप्लग करने से क्या गलत हो सकता है? क्या मुझे बस अनप्लगिंग शुरू करनी चाहिए? नोट: इस मामले में मैं डेटा हानि के बारे में बहुत चिंतित नहीं हूं।

यह शारीरिक रूप से पाई को नुकसान नहीं पहुंचाएगा, नहीं, बस "डेटा हानि" से "बेकार कार्ड" का विस्तार हो सकता है जिसे पूरी तरह से सुधारने की आवश्यकता है। हालाँकि, मैं कहूँगा कि अगर आप इसे हरे रंग की ACT लाइट के साथ कर रहे हैं तो यह बहुत कम है।


  1. यह महत्वपूर्ण हो सकता है जब यह विचार किया जाए कि कुछ विशिष्ट कार्ड / मॉडल स्पष्ट रूप से कुछ लोगों के लिए दूसरों की तुलना में बदतर क्यों हैं। दुर्भाग्य से, जबकि दो कार्ड जो कि समान रूप से लेबल किए गए हैं, कथित विशेषताओं (आकार, गति, आदि) के संदर्भ में समान हो सकते हैं, निर्माता उन्हें घटक भागों के संदर्भ में वास्तव में 100% समान बनाने के लिए बाध्य नहीं हैं।

1

यह आपके OS की कार्य योजना पर अत्यधिक निर्भर करता है:

  • यदि आप एक मानक योजना का उपयोग कर रहे हैं, जब आप वास्तविक डेटा के लिए r / w मोड में अपने एसडी कार्ड का उपयोग कर रहे हैं (स्वैप विभाजन यहां मायने नहीं रखता है) - तो यह एक समस्या है जैसे सामान्य "पावर-प्लगिंग एक पीसी" मामला : यह Google के चारों ओर है, इसलिए आपके पास मामले के बारे में जानकारी का एक टन होगा। यह बिल्कुल वैसा ही है: समान समस्याएं, समान जोखिम और समान प्रभाव।
  • यदि आप अपने एसडी कार्ड से डेटा पढ़ रहे हैं , यानी roविकल्प के साथ अपने एसडी कार्ड से प्रत्येक डेटा युक्त विभाजन को माउंट करें , तो यह केवल एक प्लग खींचने के लिए कोई समस्या नहीं है: आप अपनी सेवाओं के काम को पूरा कर रहे हैं, वे के बारे में हैं डेटा के लिए एक बाहरी लिखने योग्य भंडारण (जैसे कि NAS या NFS / SMB / CIFS शेयर, उदाहरण के लिए), और सेवाओं के बंद होने के बाद - हाँ, बस प्लग को खींचें: आपको अपने RAM / tmpfs डिस्क की आवश्यकता नहीं है ) किसी भी अधिक है, और आप कुछ भी नुकसान नहीं होगा

1
आपका पहला बिंदु गलत है; एसडी कार्ड जटिलताओं का परिचय देता है जो इसे "बिल्कुल वैसा ही" मुद्दा नहीं बनाता है, जैसे, कताई डिस्क जहां पत्रिकाओं और चेकिंग के लिए ज्यादातर समय प्रभावी सुरक्षा उपाय होने चाहिए, या अधिक महंगा एसएसडी मीडिया हो सकता है जिसमें अतिरिक्त हार्डवेयर हो, और इसके अनुरूप हो सख्त मानक, बनाम एसडी मीडिया। मेरा उत्तर है जहाँ मैं के बारे में बात QV "खाते में एसडी कार्ड की प्रकृति लेने के बिना सार संदर्भ में, ..."
गोल्डीलॉक्स

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

@goldilocks थैंक्यू आपके उत्कृष्ट उत्तर के लिए दोनों। आपने दोनों उत्कृष्ट अंक बनाए हैं, हालांकि मैंने गोल्डीलॉक्स के उत्तर को स्वीकार करने का निर्णय लिया है, क्योंकि यह प्रश्न का उत्तर देते समय बहुत सारी प्रासंगिक जानकारी देता है; हालाँकि, मैंने दोनों उत्तरों को बढ़ा दिया है।
जेम्स विक्री

1

जैसा कि @goldilocks ने उत्तर दिया है कि थोड़ा जोखिम है, लेकिन हम में से अधिकांश ऐसा नहीं करते हैं।

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

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