"सुरक्षित" अप्राप्य चल रहे सिस्टम के लिए ext4 कॉन्फ़िगरेशन


18

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

मैं इसके लिए ext4 का उपयोग करना चाहूंगा। इस तरह के सेटअप के लिए ext4 को कॉन्फ़िगर करने का सबसे अच्छा तरीका क्या है? ध्यान में रखते हुए कि:

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

(मैं इस संबंधित प्रश्न से अवगत हूँ: बिजली हानि पर ext4 / Linux ड्राइव पर डेटा भ्रष्टाचार रोकें )

जवाबों:


11

मैंने नावों पर स्वचालन के लिए एक प्रणाली बनाने में काम किया है, और एक शर्त थी: हर पल में बिजली नीचे जा सकती है और सब कुछ फिर से सही ढंग से बढ़ावा देना चाहिए।

मेरा समाधान एक Gentoo- आधारित initramfs प्रणाली का निर्माण करना था, जिसमें अनुप्रयोग और कॉन्फ़िगरेशन के लिए केवल एक rw फ़ोल्डर था (यह प्रत्येक राउटर / फ़ायरवॉल विक्रेताओं द्वारा उपयोग किया जाता है)। यह समाधान सिस्टम अपग्रेड से निपटने के दौरान जटिलता की एक अतिरिक्त परत जोड़ देता है, लेकिन आपको विश्वास दिलाता है कि सिस्टम हमेशा बूट होगा।

अपने विशिष्ट प्रश्न के संबंध में, आपको EXT4 जर्नल को तेज fsck (कुछ सीकॉड्स में) रखने के लिए सक्षम रखना चाहिए , डेटा = जर्नल माउंट विकल्प का उपयोग करें , कमिट विकल्प को कम करें या बफ़र्स को हमेशा खाली रखने के लिए सिंक विकल्प का उपयोग करें ।

Refs: http://www.kernel.org/doc/Documentation/filesystems/ext4.txt


अच्छा! यदि एप्लिकेशन बहुत अधिक डेटा नहीं लिखता है तो आपको सिंक विकल्प से खुश होना चाहिए।
जियोवन्नी टोराल्डो

1
लिनक्स कर्नेल डॉक्यूमेंट देखने के लिए बेहतर जगह है: kernel.org/doc/Documentation/filesystems/ext4.txt किसी भी संभावित डेटा हानि (* == डिफ़ॉल्ट) को कम करने के लिए डेटा = जर्नल और कमिट = nrsec सक्षम करें
Giovanni Toraldo

समयबद्ध कमिट्स निश्चित रूप से सहायक होते हैं - मेरा मानना ​​है कि आप केवल 1 सेकंड के अंतराल तक ही कम कर सकते हैं (यद्यपि लेखन-गहन ऑप्स के लिए MAJOR प्रदर्शन जुर्माना के साथ), लेकिन यदि आप डेटा हानि के 1 सेकंड का जोखिम नहीं उठा सकते हैं तो आपको बड़ी समस्याएं हो सकती हैं;)
voretaq7

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

1
@Grodriguez "डेटा खोना" फ़ाइल से कुछ भी नहीं हो सकता है "मेरे डेटाबेस के अंदर कर्नेल का एक हिस्सा क्यों है?" - यह सब इस बात पर निर्भर करता है कि "खो" क्या है :)
voretaq7 19

12

मैं इसे यह कहते हुए प्रस्तुत करूंगा कि जहाँ तक मेरा संबंध है, EXT (इसके सभी अवतारों में) एक बहुत ही भयानक फाइल सिस्टम है - मैंने अपेक्षाकृत कम संख्या में लिनक्स / EXT में फाइलसिस्टम के भ्रष्टाचार के " अधिक दिलचस्प " मामलों को देखा है। {2,3,4} मेरे द्वारा उपयोग किए जाने वाले नॉट-एक्सटी फाइलसिस्टम की अपेक्षाकृत बड़ी संख्या में मेरे द्वारा उपयोग की जाने वाली प्रणालियों की तुलना में मेरे पास मौजूद सिस्टम।
यदि संभव हो तो अधिक मजबूत फाइलसिस्टम चुनने की कोशिश करें। अपरिहार्य होने पर आप स्वयं को धन्यवाद देंगे।


कहा जा रहा है और मेरे सभी व्यक्तिगत पूर्वाग्रह खुले में और एक तरफ धकेल दिए गए हैं, EXT4 में तीन विशेषताएं हैं जिनके बारे में मैं सोच सकता हूं कि इससे मदद मिल सकती है:

  • जर्नलिंग
    EXT4 एक जर्नलेड फाइलसिस्टम हो सकता है, अगर आप इसे चाहते हैं। सुविधा journaling सक्षम करें (और विशेष रूप से करने के लिए डेटा-journaling मोड सेट journalके माध्यम से tune2fsया एक विकल्प माउंट के रूप में)।
    यह एक प्रदर्शन को प्रभावित करता है जैसा कि सभी डेटा को EXT जर्नल में लिखा जाना चाहिए, इससे पहले कि यह फाइल सिस्टम के लिए "प्रतिबद्ध" हो जाए (प्रत्येक लेखन मूल रूप से दो बार होता है), लेकिन यह सुनिश्चित करता है कि आप हमेशा पुनर्प्राप्त कर सकते हैं जहां तक ​​जर्नल रिप्ले आपको बिना किसी के मिल जाएगा समस्या।

  • SYNChronous Mounts
    जब सुरक्षा सर्वोपरि है एक syncविकल्प के साथ एक फाइल सिस्टम बढ़ते हमेशा एक अच्छा विचार है। यह सब तुरंत डिस्क को लिखने के लिए मजबूर करता है - फिर से यह एक प्रदर्शन हिट है, लेकिन एक अच्छा विचार है यदि आप पावर विफलताओं या यादृच्छिक अजनबियों से सीएफ कार्ड को बाहर करने की उम्मीद करते हैं।

  • जितना संभव हो उतना लेखन योग्य फ़ाइल सिस्टम को सीमित करें यह कोई EXT विशिष्ट नहीं है, लेकिन "बस एक बड़ा रूट विभाजन बनाने और इसमें सब कुछ डंप करने" का सर्व-सामान्य लिनक्स दर्शन है, बिल्कुल स्पष्ट, बेवकूफ । एक उचित फाइल सिस्टम संरचना (बनाएं /, /var, /usr, /home, आदि ...), और माउंट के रूप में फ़ाइल सिस्टम की कई केवल पढ़ने के लिए संभव के रूप में।
    यह सुरक्षा के लिए यूनिक्स सिस्टम के लिए आम सलाह हुआ करता था, लेकिन आपके मामले में इसका एक और फायदा है: यदि आप इसे नहीं लिख सकते हैं, तो आप एक फाइल सिस्टम को दूषित नहीं कर सकते।


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

आप किस फाइलसिस्टम की सलाह देते हैं? क्या आप अपने अनुभवों की मात्रा निर्धारित कर सकते हैं?
मार्क वैगनर

@ बेम्बो मेरे अनुभव पूरी तरह से वास्तविक हैं: मैंने कभी भी फाइल सिस्टम के EXT परिवार पर तनाव-परीक्षण नहीं किया है, लेकिन एक घटना जो मेरे दिमाग में चुभती है, जब मैं एक स्क्वीड सर्वर से पीड़ित था "मेरे सभी इनोड्स कहां गए?" - फाइल सिस्टम चालू हो गया, और बाद में किसी तरह साफ सुथरा हो गया, लेकिन हर इनोड किसी भी तरह से एक दावा-लेकिन-कभी-संदर्भित राज्य में नहीं बचा था। उस विशेष गड़बड़ी को ठीक करने का fsck सकारात्मक रूप से EPIC था (हम सिर्फ एक नया FS बनाकर घाव कर रहे हैं)। वह दिन था जब मैंने फाइलसिस्टम के EXT परिवार में सभी आत्मविश्वास खो दिया था।
voretaq7

पुन: जर्नलिंग, तीन विकल्प हैं data=journal(जो मैंने ऊपर वर्णित किया है), data=ordered(मेटाडेटा जर्नल है। डेटा मेटाडेटा से पहले फाइल सिस्टम के लिए प्रतिबद्ध है), और data=writeback(जो प्रभावी रूप से कोई जर्नलिंग नहीं है - डेटा की सुरक्षा - खराब चीजें) एक दुर्घटना के बाद हो सकता है, जैसे फाइलों के बीच में कबाड़)। मेरा मानना orderedहै कि इन दिनों अधिकांश लिनक्स
डिस्ट्रोस

2
"जितना संभव हो उतना सीमित लेखन योग्य फाइल सिस्टम" के अलावा: डेबियन विकी में डेमों पर कई उदाहरणों के साथ ठीक ऐसा करने के लिए एक मार्गदर्शक है जिसे विशेष उपचार की आवश्यकता होती है। यह अधिकांश अन्य संकटों के लिए भी मान्य होना चाहिए: wiki.debian.org/ReadonlyRoot
krissi

7

EXT4 आपके सिस्टम के लिए सबसे अच्छे विकल्प की तरह नहीं है; मैं एक लॉग-स्ट्रक्चर्ड फाइलसिस्टम को देखने का सुझाव दूंगा। ये डेटा को वर्चुअल स्ट्रीम के खिलाफ लिखने के अपडेट की एक निरंतर स्ट्रीम के रूप में मानते हुए काम करते हैं, एक पॉइंटर के साथ जो नवीनतम 'हेड' को इंगित करता है। अपडेट डेटा और मेटाडेटा को स्टोरेज में लिखते हैं, फिर पॉइंटर को अपडेट करते हैं। लिखने के बाद क्रैश होने की स्थिति में लेकिन पॉइंटर अपडेट से पहले नवीनतम डेटा खो जाता है लेकिन फाइल सिस्टम सुसंगत है।

दो उम्मीदवार फाइलसिस्टम लॉगएफएस और एनआईएलएफएस हैं । दोनों मेनलाइन लिनक्स कर्नेल में उपलब्ध हैं।


1

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

Ext4 (और परिवार) विभिन्न हार्डवेयर और उपयोग के मामलों पर उपयोग के कई अरबों घंटे (मुझे लगता है) के साथ एक सामान्य सामान्य उद्देश्य फाइलसिस्टम है। हालाँकि, क्या आपके लिए पूछना वास्तव में ext4 के साथ फिट नहीं है। Voretaq7 और Giovanni से संकेत आपको ext4 का उपयोग करने में सबसे अच्छा पाने में मदद करेंगे यदि आपको करना है, लेकिन असली जवाब अपनी आवश्यकताओं के लिए कुछ अधिक अनुकूल उपयोग करना है। स्टीव ने आपको कुछ विकल्प दिए हैं। यदि आप एक ext4 FS से बिजली खींचते रहते हैं तो आपको अंततः एक गड़बड़ मिल जाएगी।

यदि यह एक बंद प्रणाली है जिसे आप बना रहे हैं, तो आपको कुछ और उपयुक्त उपयोग करने का विकल्प बनाना चाहिए या स्वीकार करना चाहिए कि कुछ बिंदु पर समस्याएं होंगी। यह 100 में से केवल 1 पावर आउटेज हो सकता है या 1000 में से 1 हो सकता है। यह आपके लिए जोखिम उठाने के लिए काफी अच्छा हो सकता है और डिवाइस बिना किसी मैनुअल हस्तक्षेप के लंबे समय (वर्षों) तक चलने की संभावना हो सकती है।

यदि यह एक ऐसा उत्पाद है जिसे आप व्यापक रूप से तैनात करने / बाजार में लाने का इरादा रखते हैं तो आपके पास कुछ और उपयुक्त उपयोग करने का विकल्प है। या आप उन उपकरणों के प्रतिशत का समर्थन करने के लिए व्यावसायिक निर्णय लेते हैं जो हर साल ईंट होंगे और उन्हें पुनर्प्राप्त करने के लिए या तो प्रतिस्थापन या मैनुअल हस्तक्षेप की आवश्यकता होगी।

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