क्या अप्रत्याशित बिजली हानि एक लिनक्स इंस्टाल को नुकसान पहुंचा सकती है?


22

मैं एक लिनक्स एम्बेडेड बोर्ड (डेबियन चलाता है) जैसे रास्पबेरी पाई, बीगल बोर्ड / हड्डी, या ऑलिमेक्स पर एक एप्लिकेशन विकसित कर रहा हूं। बोर्ड एक ऐसे वातावरण पर काम करते हैं, जिसमें बिजली अप्रत्याशित रूप से कट जाती है (यह PSU, आदि की जगह के लिए बहुत जटिल है) और ऐसा हर दो बार में होता है। मुझे आश्चर्य है कि अगर अप्रत्याशित बिजली कटौती लिनक्स ऑपरेशन सिस्टम पर दुर्घटना / समस्या का कारण होगी? अगर यह कुछ ऐसा है जो मुझे चिंता करना चाहिए, तो आप अप्रत्याशित बिजली कटौती के खिलाफ ओएस पर नुकसान को रोकने के लिए क्या सुझाव देंगे?

पुनश्च। एप्लिकेशन को स्टोरेज माध्यम (एसडी कार्ड) के लिए कुछ डेटा लिखने की आवश्यकता है, मुझे लगता है कि इसे केवल-पढ़ने के लिए माउंट करने के लिए उपयुक्त नहीं होगा।


1
Ext2 (ext3 या उच्चतर का उपयोग करें) से दूर रहें filesystems पर आप बहुत कुछ संशोधित करते हैं, और आपको अधिकांश भाग के लिए ठीक होना चाहिए।
लॉरेंससी

जब तक आप अपने एसडी कार्ड को निर्दिष्ट करने में बहुत सावधानी बरतते हैं, अगर आप अप्रत्याशित रूप से बिजली काटते हैं तो कार्ड कुछ भी गारंटी नहीं देते हैं। कार्ड एक पहनने-लेवलिंग चाल के बीच में हो सकता है, जिससे अजीब, अप्रत्याशित भ्रष्टाचार हो सकता है - जो एक अलग विभाजन में भी हो सकता है!
derobert

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

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

जवाबों:


14

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

जैसा कि l0b0 ने लिखा है, जर्नलिंग फाइल सिस्टम का उपयोग करने से मदद मिलेगी, क्योंकि यह इस बात पर नज़र रखने में सक्षम होगा कि वास्तव में क्या किया है। विकिपीडिया की जानकारी है कि l0b0 जुड़ा हुआ के अलावा, आप में रुचि हो सकती /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure साथ ही ।

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


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

11

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

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


5

यह निर्भर करेगा

  1. चाहे आप जर्नलिंग फ़ाइल सिस्टम का उपयोग कर रहे हों और
  2. कितनी अच्छी तरह से अनुप्रयोग गर्भपात प्रसंस्करण को संभालने में सक्षम हैं।

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

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


1

चूँकि किसी ने भी किसी विशिष्ट फाइल सिस्टम का उल्लेख नहीं किया है: अधिक आधुनिक फाइल सिस्टम (ext3, ext4, ntfs) जर्नलिंग के कारण पुराने फाइल सिस्टम (ext2, ext, fat32) की तुलना में क्रैश को बेहतर तरीके से संभालने में सक्षम हैं ।

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

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