फ़ाइल सिस्टम जो कभी नहीं टूटता (डेटा हानि स्वीकार्य)


9

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

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

अभी मेरा सबसे अच्छा दांव, एसडीएफ पर जेएफएस का उपयोग करना है, मेरी स्थापना में fsck और fsck.jfs शामिल हैं। (600kb + जोड़ना मेरे राम और मेरे फ्लैश खा रहा है। जो बुरा है।) और हर स्टार्टअप पर fsck चलाएं (शायद बहुत बूट समय जोड़ रहा है। जो कुछ बुरा है।) हालांकि यह थोड़ा दुखद लगता है।

क्या किसी को बेहतर तरीके या बेहतर फाइल सिस्टम का पता है?

अद्यतन: e2fsprogs-libs (jfsutils के लिए निर्भरता) मेरे वितरण में संकलित करने के लिए कठिन प्रतीत होता है। मैं ZFS में देखूंगा (हालांकि यह मेरे वितरण के लिए मूल नहीं है। और ऐसा लगता है कि मुझे ऐसा करने की ज़रूरत नहीं है।)

UPDATE2: मेरे सिस्टम और मेरे परीक्षणों के बारे में कुछ और जानकारी: एसडी कार्ड स्टोरेज एक सेकेंडरी, वैकल्पिक स्टोरेज है। SD कार्ड 2Gb-8Gb औद्योगिक ग्रेड माइक्रोएसडी हैं। एसडी कार्ड माउंट-आरटी कमांड के साथ मेरी आरसी के माध्यम से लगाया जाता है। विकल्प "अनात्म" लेकिन "सिंक" नहीं। मेरा वितरण एक कस्टम एनालॉग डिवाइस फ्लेवर्ड uClinux है, जिसमें 3.10 कर्नेल और 1.21 बिजीबॉक्स है। मेरा प्राथमिक भंडारण jffs2 के साथ एक स्पाई फ्लैश है। मैंने उसके साथ कभी कोई समस्या नहीं की है। मुझे यह भी नहीं पता कि कोई fsck.jffs2 उपलब्ध है या नहीं। दूसरी ओर नंद फ्लैश ... लेकिन यह एक अलग कहानी है। एसडी कार्ड का उद्देश्य, माप डेटा को संग्रहीत करना है। 'मॉनीटर' कार्यक्रम एक फाइल के परिणामों को जोड़ देगा और इसमें रणनीतिक सिंक प्लेसमेंट होंगे। जब फ़ाइल किसी दिए गए आकार से ऊपर आती है तो एक नया बनाया जाएगा। जब दी गई फ़ाइलों की संख्या सबसे पुरानी हो गई है तो उसे हटा दिया जाएगा। यदि बिजली के नुकसान के कारण वर्तमान माप फ़ाइल खो गई है, तो यह कोई आपदा नहीं है। फाइलें आमतौर पर 50-100kb पर होती हैं और 1 परिणाम आमतौर पर 1kb होता है। यह अभी शुरुआती विकास का चरण है। कुछ भी तय नहीं है। यह पहली बार है जब मैं एम्बेडेड सिस्टम में गैर-फ्लैश फाइल सिस्टम के साथ काम कर रहा हूं। (मुझे अपने x86 सर्वर पर ext4 मिला।)

मैंने vfat के साथ शुरुआत की। डिफ़ॉल्ट फ़ाइल सिस्टम। (मुझे लगा कि कारखानों के पास इसे चुनने का एक कारण हो सकता है। और अगर चीजें काम करती हैं तो मुझे वास्तव में इतना ध्यान नहीं है।) मैंने अपने एम्बेडेड vfat उपकरणों में कभी भी कोई बिजली हानि के मुद्दे नहीं देखे हैं। मैं WinCE में FAT के साथ मुद्दों का अनुभव किया है। हालाँकि, जब मेरा 'मॉनीटर' कार्यक्रम 100-200 फाइलों तक पहुँच गया, तो इसने कोई और बनाने से इनकार कर दिया। ऐसा लगता है कि एफएटी की जड़ में एक विशेष फ़ाइल सीमा मुद्दा है और उप डायर में थोड़ा बड़ा है। मुझे 1 dir में 500-1000 फाइलें बनाने में सक्षम होना चाहिए। तो vfat नहीं करेंगे।

फिर मैंने ext2 पर स्विच किया। मैं स्टार्टअप पर एक fsck सम्मिलित नहीं किया था, हालांकि। (मुझे नहीं पता था कि मुझे ऐसा करना होगा।) एक दिन के भीतर मेरा 'मॉनिटर' प्रोग्राम 'कुछ इनकोड कुछ' त्रुटि के कारण अधिक फाइल बनाने में असमर्थ था। आपदा!

मेरा वर्तमान समाधान स्टार्टअप पर "e2fsck -y" के साथ ext2 है। अब तक यह आशाजनक है। लेकिन e2fsck और 'fsck at स्टार्टअप' की पूरी अवधारणा मुझ पर भारी पड़ रही है। स्वयं द्वारा e2fsck मेरे प्राथमिक फ्लैश और रैम के 350kb से अधिक खर्च कर रहा है। (जब यह नहीं चल रहा है।) जिसका अर्थ है कि यह मेरा सबसे बड़ा कार्यक्रम है। यह बिजीबॉक्स से बड़ा है। यह लगभग मेरी गिरी को टक्कर दे रहा है।

मैं ext3 पर विचार कर रहा हूं। इसमें मेटा डेटा को जर्नल्स किया गया है, जिससे चोट नहीं लगेगी। मुझे संदेह है कि हालांकि यह कितना मदद करेगा। मेरी छोटी फ़ाइलों और नियंत्रित सिंक के साथ मुझे लगता है कि मुझे कवर किया जाना चाहिए? इसमें एक आदेशित अनुक्रम है। मतलब यह है कि डेटा भी कुछ हद तक पत्रिकाओं हैं। यह हालांकि गैर-नियतात्मक अंतराल को जन्म दे सकता है। जो मेरी स्थिति में खराब है। (यह शायद एक मुद्दा नहीं है।) इसमें एक अनुसूचित सिंक सुविधा भी है। उदाहरण के लिए। हर 5 सेकंड में कमिट करें। मुझे लगता है कि मेरे अपने syncs के साथ हस्तक्षेप कर रहा है। एसडी कार्ड के लिए बहुत सारे लेखन खराब हैं। यहां तक ​​कि औद्योगिक भी। मुझे यह अक्षम करने के बारे में कोई दस्तावेज नहीं मिल रहा है। और ext3 अभी भी हर स्टार्टअप पर चलाने के लिए fsck की आवश्यकता है! लेकिन ext3 अभी भी एक संभावना है।

Ext4। Ext3 के प्रदर्शन के मुद्दों को बहुत ठीक करेगा। मुझे वास्तव में प्रदर्शन की आवश्यकता नहीं है। और मेरे वितरण में बिल्ट mkfs.ext4 और fsck.ext4 नहीं लगता है। शायद यह कोई समस्या नहीं है। हालांकि यह हो सकता है। उदाहरण के लिए। e2progs-libs (jfsutils के लिए निर्भरता) ढेर सारे संकलन मुद्दों के लिए लगता है।

JFS, XFS, BRFSS। मेरे कर्नेल द्वारा समर्थित सभी। वर्तमान में मेरे उपयोगकर्ता स्पेस टूल बॉक्स में शामिल नहीं है। सभी बल्कि बड़ी जटिल प्रणाली लगती है। और वे सभी स्टार्टअप पर बराबर 'fsck' की आवश्यकता लगती है?

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

UPDATE3: BTW, एम्बेडेड सिस्टम की प्रकृति (यह कम से कम) यह है कि वे स्वायत्त, अप्राप्य, पहुंच से बाहर हैं, और उन्हें वर्षों तक चलना है। Fsck जैसे कार्यक्रमों के लिए मानव संपर्क की आवश्यकता हो सकती है जो मुझे बाहर रेंगते हैं।


1
केवल अपने फाइल सिस्टम को ही क्यों न पढ़ें और केवल जो कुछ भी आप लिखना चाहते हैं उसके लिए एक छोटा फाइल सिस्टम माउंट करें?
क्रिस डाउन

ZFS भी एक विकल्प (अच्छा डेटा अखंडता जाँच) हो सकता है।
Ouki

यह है लिखने के लिए छोटे फाइल सिस्टम
Illishar

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

क्या आपने btrfs.wiki.kernel.org/index.php/Main_Page को देखा है, आपको अपने प्रश्न को अपने शोध से संपादित करना चाहिए ताकि हम आपकी अधिक कुशलता से मदद कर सकें
किवी

जवाबों:


2

यहाँ आपकी कहानी में थोड़ी असंगतता या कम से कम, अस्पष्टता है:

मैं अभी भी एक 'माउंट करने में असमर्थ' का सामना करने के बजाय यह सब खो सकता हूं, 'इस 10 मिनट के लिए प्रतीक्षा करें fsck'

इंप्लाइज - हालाँकि आप वास्तव में यह नहीं कहते हैं - कि यह एक ऐसी समस्या है जिसका आप वास्तव में अनुभव कर रहे हैं। परन्तु फिर:

e2fsprogs-libs (jfsutils के लिए निर्भरता) मेरे वितरण में संकलित करने के लिए कठिन प्रतीत होता है।

मतलब कि आपके पास बिल्कुल भी fsck नहीं है , क्योंकि e2fsprogs-libsयह एक निर्भरता है e2fsprogsजो प्रदान करता है e2fsck। तो शायद आप अभी भी एक योजना के चरण में हैं और यहां तक ​​कि उदाहरण के साथ सिस्टम का परीक्षण भी नहीं किया है ext4, लेकिन इसके बजाय इस निष्कर्ष पर पहुंचे कि आपको जेएफएस से शुरू करना चाहिए? क्या उसका कोई विशेष कारण है?

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

आप पहले ही कह चुके हैं कि आपको बिजली कटौती (जो काफी उचित है) को सहन करने में सक्षम होने की आवश्यकता है, लेकिन मैं इसका उल्लेख करता हूं क्योंकि इसका मतलब है कि कुछ पीआईएस, या कुछ एसडी कार्ड, या दोनों के कुछ संयोजन हैं, जो बस के लिए प्रवण हैं किसी घटना (वृद्धि?) के कारण फाइलसिस्टम को भ्रष्ट करना, जो कि प्लग को खींचने पर या तो नियमित रूप से होता है, या जब इसे वापस रखा जाता है। मुझे भी नहीं देखा गया है - और बहुत सारे लोगों को प्रयास करने के लिए बहुत समय है - किसी के किसी भी रिपोर्ट में कहा गया है कि वे btrfs या jfs या जो कुछ भी और अब समस्या हल हो गए हैं।

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

फिर से, इन सभी रिपोर्टों को सही मानते हुए (मुझे नहीं पता कि लोग इसके बारे में झूठ क्यों बोलेंगे), वहाँ बहुत कुछ है जो सिर्फ सफाई से नहीं, बल्कि बहुत कम चल रहा है, लेकिन यह केवल उपयोगकर्ताओं के एक छोटे प्रतिशत को प्रभावित करता है, फिर से लागू होता है किसी प्रकार का सामान्य हार्डवेयर दोष।

अनुकरणीय पर मैं लिखने -yके लिए /forcefsckइतना है कि अगले बूट पर यह स्वचालित रूप से चलाया जाता है एक बूट लिपि में है, और किसी भी समस्याओं तय कर रहे हैं, यह आवश्यक है या नहीं प्रतीत होता है चाहे। 700 Mhz सिंगल कोर पर ~ 12 GB फाइल सिस्टम के लिए ~ 4 GB डेटा वाले ~ 10 सेकंड लगते हैं। तो "10 मिनट" एक अविश्वसनीय रूप से लंबे समय की तरह लगता है, खासकर जब से आप पहले से ही कहा है, "यह है लिखने के लिए छोटे फाइल सिस्टम!"।

आप syncनियमित अंतराल पर कॉल करने पर भी विचार कर सकते हैं ।

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


वास्तव में, मेरा e2fsck e2fsprogs-libs निर्भरता के बिना संकलन करने में सक्षम है। मैं इसके बारे में सोच रहा हूँ। (यह बिजीबॉक्स संस्करण नहीं है।) लेकिन मैं इसे बिल्कुल नहीं पसंद करूंगा ... मैं कुछ और जानकारी के साथ सवाल को अपडेट करूंगा।
इलिशार

मुझे आश्चर्य है कि यह w / o libext2fs काम करता है (या आपने एक स्थैतिक संस्करण का निर्माण किया है? या शायद यह अलग पैकेजिंग का मामला है? वैसे भी ...)। मैं बेहतर journalnalling, और तेजी से fsck जाँच , यदि संभव हो, और शायद syncमाउंट विकल्प की वजह से ext2 पर ext4 के लिए विकल्प चुनूंगा । जबकि वह और जर्नलिंग आपके लिखने के चक्र को बढ़ाएगा, यह देखना कठिन है कि वैकल्पिक फाइल सिस्टम (उदाहरण के लिए, एक सैद्धांतिक जो ऑनलाइन जाँच करता है) एक ही चीज़ को कम या ज्यादा कर सकता है, अगर मजबूती लक्ष्य है। सौभाग्य और अगर आपको कोई समाधान मिल जाए, तो अपना उत्तर जोड़ें।
गोल्डीलॉक्स

2

कार्यक्रम पर जाना चाहिए!

वैसे यह एक सामान्य आवश्यकता है और जब यह एक स्थिर प्रणाली चुनने की बात आती है तो लिनक्स सिस्टम सबसे अच्छा विकल्प है।

आपके प्रयास भी सही दिशा में नहीं जाते हैं। हालांकि एक स्थिर प्रणाली प्राप्त करने के लिए आप क्या कर सकते हैं?

पहले स्तर में आप अपनी फ़ाइल प्रणाली में सुधार कर सकते हैं:

  • बनाते या संशोधित करते समय yournal_data_orderedएक ext3/ext4फाइल सिस्टम पर उपयोग करें tune2fs
  • जब जाँच के साथ JFSउपयोग करें --replay_journal_only
  • इनस्क्रिप्ट में सेटिंग करके ऑटोरेपेयर को सक्षम करें FSCKFIX=yes

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

अगले स्तर में आपको एम्बेडेड सिस्टम छोड़ने और उच्च उपलब्धता के बारे में कुछ विषयों को पढ़ने की आवश्यकता होगी


इनस्क्रिप्ट के लिए, ओपी से बचने के लिए ऑटो-चेकिंग कुछ है। इसलिए फाइलसिस्टम को ऑनलाइन फाइलसिस्टम चेकिंग का समर्थन करना होगा।
ब्राचली

1
के साथ yournal_data_orderedया replay_journal_onlyयह जांच करने के लिए केवल कुछ सेकंड लगते हैं, यही अंतर है।

1
हाँ कृपया। क्या आप एक फ़ाइल सिस्टम के बारे में जानते हैं जो ऑनलाइन जाँच का समर्थन करता है?
इलिशर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.