जर्नलिंग फ़ाइल सिस्टम: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 20: Line 20:
तत्पश्चात इसे 1993 में माइक्रोसॉफ्ट के [[ विंडोज़ एनटी |विंडोज़ एनटी]] के [[एनटीएफएस]] फाइल सिस्टम में, 1998 में एप्पल के [[एचएफएस प्लस]] फाइल सिस्टम में और 2001 में [[लिनक्स]] के [[ext3]] फाइल सिस्टम में इम्प्लीमेंट किया गया था।<ref>{{cite web|url=http://marc.info/?l=linux-kernel&m=100650331813822&w=2|title='2.4.15-final' - MARC|website=marc.info|access-date=March 24, 2018}}</ref>
तत्पश्चात इसे 1993 में माइक्रोसॉफ्ट के [[ विंडोज़ एनटी |विंडोज़ एनटी]] के [[एनटीएफएस]] फाइल सिस्टम में, 1998 में एप्पल के [[एचएफएस प्लस]] फाइल सिस्टम में और 2001 में [[लिनक्स]] के [[ext3]] फाइल सिस्टम में इम्प्लीमेंट किया गया था।<ref>{{cite web|url=http://marc.info/?l=linux-kernel&m=100650331813822&w=2|title='2.4.15-final' - MARC|website=marc.info|access-date=March 24, 2018}}</ref>
==तर्कसंगत ==
==तर्कसंगत ==
फ़ाइलों और निर्देशिकाओं में परिवर्तनों को प्रतिबिंबित करने के लिए फ़ाइल सिस्टम को अपडेट करने के लिए सामान्तयः कई अलग-अलग लेखन कार्यों की आवश्यकता होती है। यह डेटा स्ट्रक्चरओं को अमान्य मध्यवर्ती स्थिति में छोड़ने के लिए लिखने के बीच रुकावट (जैसे बिजली विफलता या सिस्टम [[क्रैश (कंप्यूटिंग)]]) को संभव बनाता है।<ref name="developerworks-1" />
फ़ाइलों और डायरेक्ट्रियों में चेंजेज़ को रिफ्लेक्ट करने के लिए तथा फ़ाइल सिस्टम को अपडेट करने के लिए सामान्तयः कई भिन्न-भिन्न राइट ऑपरेशनों की आवश्यकता होती है। इससे राइटिंग के मध्य इंट्रप्शन (जैसे पावर फेल्यर या सिस्टम [[क्रैश (कंप्यूटिंग)]]) के कारण डेटा स्ट्रक्चर्स को इनवैलिड इंटरमीडिएट स्टेट में छोड़ना संभव हो जाता है।<ref name="developerworks-1" />


उदाहरण के लिए, यूनिक्स फ़ाइल सिस्टम पर किसी फ़ाइल को हटाने में तीन चरण शामिल होते हैं:<ref>File Systems from Tanenbaum, A.S. (2008). Modern operating systems (3rd ed., pp. 287). Upper Saddle River, NJ: Prentice Hall.</ref>
उदाहरण के लिए, यूनिक्स फ़ाइल सिस्टम पर किसी फ़ाइल को डिलीट करने में तीन चरण सम्मिलित होते हैं:<ref>File Systems from Tanenbaum, A.S. (2008). Modern operating systems (3rd ed., pp. 287). Upper Saddle River, NJ: Prentice Hall.</ref>
# इसकी निर्देशिका प्रविष्टि को हटाया जा रहा है.
# इसकी डायरेक्टरी एंट्री को रिमूव करना।
# मुक्त [[इनोड]] के पूल में इनोड जारी करना।
# फ्री [[इनोड]] के पूल में इनोड रिलीज़ करना।
# सभी डिस्क ब्लॉक को मुक्त डिस्क ब्लॉक के पूल में लौटाना।
# सभी डिस्क ब्लॉक को फ्री डिस्क ब्लॉक के पूल में रिटर्न करना।


यदि चरण 1 के बाद और चरण 2 से पहले कोई दुर्घटना होती है, तो अनाथ इनोड होगा और इसलिए [[भंडारण रिसाव]] होगा; यदि चरण 2 और 3 के बीच कोई क्रैश होता है, तो फ़ाइल द्वारा पहले उपयोग किए गए ब्लॉक का उपयोग नई फ़ाइलों के लिए नहीं किया जा सकता है, जिससे फ़ाइल सिस्टम की भंडारण क्षमता प्रभावी रूप से कम हो जाती है। चरणों को पुनः व्यवस्थित करने से भी मदद नहीं मिलती है। यदि चरण 3 चरण 1 से पहले होता है, तो उनके बीच दुर्घटना फ़ाइल के ब्लॉक को नई फ़ाइल के लिए पुन: उपयोग करने की अनुमति दे सकती है, जिसका अर्थ है कि आंशिक रूप से हटाई गई फ़ाइल में किसी अन्य फ़ाइल की सामग्री का हिस्सा होगा, और किसी भी फ़ाइल में संशोधन दोनों में दिखाई देगा। दूसरी ओर, यदि चरण 2, चरण 1 से पहले होता है, तो उनके बीच दुर्घटना के कारण फ़ाइल अस्तित्व में प्रतीत होने के बावजूद अप्राप्य हो जाएगी।
यदि चरण 1 के पश्चात् और चरण 2 से पूर्व कोई क्रैश होता है, तो ओर्फेंड इनोड होगा और इस कारण से [[भंडारण रिसाव|स्टोरेज लीक]] हो सकती है; यदि चरण 2 और 3 के मध्य कोई क्रैश होता है, तो फ़ाइल द्वारा पूर्व उपयोग किए गए ब्लॉक का उपयोग नई फ़ाइलों के लिए नहीं किया जा सकता है, जिससे फ़ाइल सिस्टम की स्टोरेज क्षमता प्रभावी रूप से कम हो जाती है। चरणों को पुनः व्यवस्थित करने से भी सहायता प्राप्त नहीं होती है। यदि चरण 3 चरण 1 से पूर्व होता है, तो उनके मध्य क्रैश फ़ाइल के ब्लॉक को नई फ़ाइल के लिए पुन: उपयोग करने की अनुमति दे सकता है, जिसका अर्थ है कि आंशिक रूप से हटाई गई फ़ाइल में किसी अन्य फ़ाइल की सामग्री का हिस्सा होगा, और किसी भी फ़ाइल में संशोधन दोनों में दिखाई देगा। दूसरी ओर, यदि चरण 2, चरण 1 से पहले होता है, तो उनके मध्य दुर्घटना के कारण फ़ाइल अस्तित्व में प्रतीत होने के बावजूद अप्राप्य हो जाएगी।


ऐसी विसंगतियों का पता लगाने और उनसे उबरने के लिए आम तौर पर ग्राफ सिद्धांत की शर्तों की पूरी शब्दावली की आवश्यकता होती है#इसके डेटा स्ट्रक्चरओं का चलना, उदाहरण के लिए [[fsck]] (फ़ाइल सिस्टम चेकर) जैसे उपकरण द्वारा।<ref name="ostep-1" /> यह आम तौर पर पढ़ने-लिखने की पहुंच के लिए फ़ाइल सिस्टम को अगली बार माउंट करने से पहले किया जाना चाहिए। यदि फ़ाइल सिस्टम बड़ा है और यदि अपेक्षाकृत कम I/O बैंडविड्थ है, तो इसमें लंबा समय लग सकता है और इसके परिणामस्वरूप लंबे समय तक डाउनटाइम हो सकता है यदि यह शेष सिस्टम को ऑनलाइन वापस आने से रोकता है।
ऐसी विसंगतियों का पता लगाने और उनसे उबरने के लिए आम तौर पर ग्राफ सिद्धांत की शर्तों की पूरी शब्दावली की आवश्यकता होती है#इसके डेटा स्ट्रक्चर्स का चलना, उदाहरण के लिए [[fsck]] (फ़ाइल सिस्टम चेकर) जैसे उपकरण द्वारा।<ref name="ostep-1" /> यह आम तौर पर पढ़ने-लिखने की पहुंच के लिए फ़ाइल सिस्टम को अगली बार माउंट करने से पहले किया जाना चाहिए। यदि फ़ाइल सिस्टम बड़ा है और यदि अपेक्षाकृत कम I/O बैंडविड्थ है, तो इसमें लंबा समय लग सकता है और इसके परिणामस्वरूप लंबे समय तक डाउनटाइम हो सकता है यदि यह शेष सिस्टम को ऑनलाइन वापस आने से रोकता है।


इसे रोकने के लिए, जर्नल फ़ाइल सिस्टम विशेष क्षेत्र - जर्नल - आवंटित करता है जिसमें वह समय से पहले किए जाने वाले परिवर्तनों को रिकॉर्ड करता है। किसी दुर्घटना के बाद, पुनर्प्राप्ति में फ़ाइल सिस्टम से जर्नल को पढ़ना और इस जर्नल से परिवर्तनों को तब तक दोहराना शामिल होता है जब तक कि फ़ाइल सिस्टम फिर से सुसंगत न हो जाए। इस प्रकार परिवर्तनों को [[परमाणुता (डेटाबेस सिस्टम)]] (विभाज्य नहीं) कहा जाता है, जिसमें वे या तो सफल होते हैं (मूल रूप से सफल होते हैं या पुनर्प्राप्ति के दौरान पूरी तरह से दोहराए जाते हैं), या बिल्कुल भी दोबारा नहीं दोहराए जाते हैं (छोड़ दिए जाते हैं क्योंकि वे अभी तक पूरी तरह से लिखे नहीं गए थे) दुर्घटना घटित होने से पहले का जर्नल)।
इसे रोकने के लिए, जर्नल फ़ाइल सिस्टम विशेष क्षेत्र - जर्नल - आवंटित करता है जिसमें वह समय से पहले किए जाने वाले परिवर्तनों को रिकॉर्ड करता है। किसी दुर्घटना के बाद, पुनर्प्राप्ति में फ़ाइल सिस्टम से जर्नल को पढ़ना और इस जर्नल से परिवर्तनों को तब तक दोहराना सम्मिलित होता है जब तक कि फ़ाइल सिस्टम फिर से सुसंगत न हो जाए। इस प्रकार परिवर्तनों को [[परमाणुता (डेटाबेस सिस्टम)]] (विभाज्य नहीं) कहा जाता है, जिसमें वे या तो सफल होते हैं (मूल रूप से सफल होते हैं या पुनर्प्राप्ति के दौरान पूरी तरह से दोहराए जाते हैं), या बिल्कुल भी दोबारा नहीं दोहराए जाते हैं (छोड़ दिए जाते हैं क्योंकि वे अभी तक पूरी तरह से लिखे नहीं गए थे) दुर्घटना घटित होने से पहले का जर्नल)।


== तकनीक ==
== तकनीक ==
Line 45: Line 45:
तार्किक जर्नल जर्नल में फ़ाइल मेटाडेटा में केवल परिवर्तनों को स्टोर्ड करता है, और काफी बेहतर लेखन प्रदर्शन के लिए दोष सहनशीलता का व्यापार करता है।<ref>{{citation|title = Analysis and Evolution of Journaling File Systems|first1 = Vijayan|last1 = Prabhakaran|first2 = Andrea C|last2 = Arpaci-Dusseau|first3 = Remzi H|last3 = Arpaci-Dusseau|url = https://www.usenix.org/events/usenix05/tech/general/full_papers/prabhakaran/prabhakaran.pdf|journal = 2005 USENIX Annual Technical Conference|publisher = USENIX Association|access-date = July 27, 2007|archive-url = https://web.archive.org/web/20070926161625/https://www.usenix.org/events/usenix05/tech/general/full_papers/prabhakaran/prabhakaran.pdf|archive-date = September 26, 2007|url-status = live}}.</ref> लॉजिकल जर्नल वाला फ़ाइल सिस्टम क्रैश होने के बाद भी जल्दी ठीक हो जाता है, लेकिन अनजर्नल फ़ाइल डेटा और जर्नल मेटाडेटा को -दूसरे के साथ समन्वयित होने की अनुमति दे सकता है, जिससे डेटा भ्रष्टाचार हो सकता है।
तार्किक जर्नल जर्नल में फ़ाइल मेटाडेटा में केवल परिवर्तनों को स्टोर्ड करता है, और काफी बेहतर लेखन प्रदर्शन के लिए दोष सहनशीलता का व्यापार करता है।<ref>{{citation|title = Analysis and Evolution of Journaling File Systems|first1 = Vijayan|last1 = Prabhakaran|first2 = Andrea C|last2 = Arpaci-Dusseau|first3 = Remzi H|last3 = Arpaci-Dusseau|url = https://www.usenix.org/events/usenix05/tech/general/full_papers/prabhakaran/prabhakaran.pdf|journal = 2005 USENIX Annual Technical Conference|publisher = USENIX Association|access-date = July 27, 2007|archive-url = https://web.archive.org/web/20070926161625/https://www.usenix.org/events/usenix05/tech/general/full_papers/prabhakaran/prabhakaran.pdf|archive-date = September 26, 2007|url-status = live}}.</ref> लॉजिकल जर्नल वाला फ़ाइल सिस्टम क्रैश होने के बाद भी जल्दी ठीक हो जाता है, लेकिन अनजर्नल फ़ाइल डेटा और जर्नल मेटाडेटा को -दूसरे के साथ समन्वयित होने की अनुमति दे सकता है, जिससे डेटा भ्रष्टाचार हो सकता है।


उदाहरण के लिए, किसी फ़ाइल में जोड़ने पर तीन अलग-अलग लेखन शामिल हो सकते हैं:
उदाहरण के लिए, किसी फ़ाइल में जोड़ने पर तीन अलग-अलग लेखन सम्मिलित हो सकते हैं:
# फ़ाइल का इनोड, फ़ाइल के मेटाडेटा में नोट करने के लिए कि इसका आकार बढ़ गया है।
# फ़ाइल का इनोड, फ़ाइल के मेटाडेटा में नोट करने के लिए कि इसका आकार बढ़ गया है।
# मुक्त स्थान मानचित्र, जोड़े जाने वाले डेटा के लिए स्थान के आवंटन को चिह्नित करने के लिए।
# मुक्त स्थान मानचित्र, जोड़े जाने वाले डेटा के लिए स्थान के आवंटन को चिह्नित करने के लिए।
Line 52: Line 52:


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


मामले को जटिल बनाने के लिए, कई बड़े भंडारण उपकरणों के पास अपने स्वयं के लेखन कैश होते हैं, जिसमें वे बेहतर प्रदर्शन के लिए आक्रामक रूप से लेखन को पुन: व्यवस्थित कर सकते हैं। (यह विशेष रूप से चुंबकीय हार्ड ड्राइव पर आम है, जिसमें बड़ी खोज विलंबता होती है जिसे एलेवेटर सॉर्टिंग के साथ कम किया जा सकता है।) कुछ जर्नलिंग फ़ाइल सिस्टम रूढ़िवादी रूप से मानते हैं कि ऐसी राइट-रीऑर्डरिंग हमेशा होती है, और डिवाइस को फ्लश करने के लिए मजबूर करके शुद्धता के लिए प्रदर्शन का त्याग करते हैं। जर्नल में कुछ बिंदुओं पर कैश (ext3 और ext4 में बाधाएं कहा जाता है)।<ref>{{citation|title = Barriers and journaling filesystems|url = https://lwn.net/Articles/283161/|first = Jonathan|last = Corbet|date = May 21, 2008|access-date = March 6, 2010|archive-url = https://web.archive.org/web/20100314050156/http://lwn.net/Articles/283161/|archive-date = March 14, 2010|url-status = live}}</ref>
मामले को जटिल बनाने के लिए, कई बड़े भंडारण उपकरणों के पास अपने स्वयं के लेखन कैश होते हैं, जिसमें वे बेहतर प्रदर्शन के लिए आक्रामक रूप से लेखन को पुन: व्यवस्थित कर सकते हैं। (यह विशेष रूप से चुंबकीय हार्ड ड्राइव पर आम है, जिसमें बड़ी खोज विलंबता होती है जिसे एलेवेटर सॉर्टिंग के साथ कम किया जा सकता है।) कुछ जर्नलिंग फ़ाइल सिस्टम रूढ़िवादी रूप से मानते हैं कि ऐसी राइट-रीऑर्डरिंग हमेशा होती है, और डिवाइस को फ्लश करने के लिए मजबूर करके शुद्धता के लिए प्रदर्शन का त्याग करते हैं। जर्नल में कुछ बिंदुओं पर कैश (ext3 और ext4 में बाधाएं कहा जाता है)।<ref>{{citation|title = Barriers and journaling filesystems|url = https://lwn.net/Articles/283161/|first = Jonathan|last = Corbet|date = May 21, 2008|access-date = March 6, 2010|archive-url = https://web.archive.org/web/20100314050156/http://lwn.net/Articles/283161/|archive-date = March 14, 2010|url-status = live}}</ref>

Revision as of 01:57, 23 November 2023


जर्नलिंग फाइल सिस्टम ऐसा फ़ाइल सिस्टम है जो जर्नल (कंप्यूटिंग) नामक डेटा स्ट्रक्चर में ऐसे चेंजेज़ के गोल को रिकॉर्ड करके फ़ाइल सिस्टम के मुख्य भाग में अभी तक प्रतिबद्ध नहीं किए गए चेंजेज़ का ट्रैक रखता है, जो सामान्तयः सर्कुलर लॉग होता है। सिस्टम क्रैश या पावर फेल्यर की स्थिति में, ऐसे फ़ाइल सिस्टम को डेटा कर्रप्ट होने की कम संभावना के साथ अधिक तीव्रता से पुनः ऑनलाइन लाया जा सकता है।[1][2]

वास्तविक इम्प्लीमेंटेशन के आधार पर, जर्नलिंग फ़ाइल सिस्टम केवल स्टोर्ड मेटा डेटा का ट्रैक रख सकता है, जिसके परिणामस्वरूप डेटा कर्रप्शन की बढ़ती संभावना के व्यय पर परफॉरमेंस में उन्नति होती है। वैकल्पिक रूप से, जर्नलिंग फ़ाइल सिस्टम स्टोर्ड डेटा और संबंधित मेटाडेटा दोनों को ट्रैक कर सकता है, जबकि कुछ इम्प्लीमेंटेशन इस संबंध में सेलेक्टेबल बिहेवियर की अनुमति देते हैं।[3]

इतिहास

1990 में आईबीएम ने एआईएक्स 3.1 में जेएफएस (फ़ाइल सिस्टम) को प्रथम यूनिक्स कमर्शियल फ़ाइल सिस्टम में से एक के रूप में प्रस्तुत किया, जिसने जर्नलिंग को भी इम्प्लीमेंट किया था।[4] इसके पश्चात् आगामी वर्ष इस विचार को लॉग-स्ट्रक्चर्ड फ़ाइल सिस्टम पर व्यापक रूप से साइटेड पेपर में लोकप्रिय बनाया गया था।[5]

तत्पश्चात इसे 1993 में माइक्रोसॉफ्ट के विंडोज़ एनटी के एनटीएफएस फाइल सिस्टम में, 1998 में एप्पल के एचएफएस प्लस फाइल सिस्टम में और 2001 में लिनक्स के ext3 फाइल सिस्टम में इम्प्लीमेंट किया गया था।[6]

तर्कसंगत

फ़ाइलों और डायरेक्ट्रियों में चेंजेज़ को रिफ्लेक्ट करने के लिए तथा फ़ाइल सिस्टम को अपडेट करने के लिए सामान्तयः कई भिन्न-भिन्न राइट ऑपरेशनों की आवश्यकता होती है। इससे राइटिंग के मध्य इंट्रप्शन (जैसे पावर फेल्यर या सिस्टम क्रैश (कंप्यूटिंग)) के कारण डेटा स्ट्रक्चर्स को इनवैलिड इंटरमीडिएट स्टेट में छोड़ना संभव हो जाता है।[1]

उदाहरण के लिए, यूनिक्स फ़ाइल सिस्टम पर किसी फ़ाइल को डिलीट करने में तीन चरण सम्मिलित होते हैं:[7]

  1. इसकी डायरेक्टरी एंट्री को रिमूव करना।
  2. फ्री इनोड के पूल में इनोड रिलीज़ करना।
  3. सभी डिस्क ब्लॉक को फ्री डिस्क ब्लॉक के पूल में रिटर्न करना।

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

ऐसी विसंगतियों का पता लगाने और उनसे उबरने के लिए आम तौर पर ग्राफ सिद्धांत की शर्तों की पूरी शब्दावली की आवश्यकता होती है#इसके डेटा स्ट्रक्चर्स का चलना, उदाहरण के लिए fsck (फ़ाइल सिस्टम चेकर) जैसे उपकरण द्वारा।[2] यह आम तौर पर पढ़ने-लिखने की पहुंच के लिए फ़ाइल सिस्टम को अगली बार माउंट करने से पहले किया जाना चाहिए। यदि फ़ाइल सिस्टम बड़ा है और यदि अपेक्षाकृत कम I/O बैंडविड्थ है, तो इसमें लंबा समय लग सकता है और इसके परिणामस्वरूप लंबे समय तक डाउनटाइम हो सकता है यदि यह शेष सिस्टम को ऑनलाइन वापस आने से रोकता है।

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

तकनीक

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

जब जर्नल स्वयं लिखा जा रहा हो तो जर्नल के आंतरिक प्रारूप को क्रैश होने से बचाना चाहिए। कई जर्नल इम्प्लीमेंटेशन (जैसे कि ext4 में JBD2 परत) चेकसम के साथ लॉग किए गए प्रत्येक परिवर्तन को इस समझ के साथ ब्रैकेट करते हैं कि क्रैश लापता (या बेमेल) चेकसम के साथ आंशिक रूप से लिखित परिवर्तन छोड़ देगा जिसे जर्नल को दोबारा चलाने पर आसानी से अनदेखा किया जा सकता है। अगला रिमाउंट.

भौतिक पत्रिकाएँ

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

भौतिक पत्रिकाएँ महत्वपूर्ण प्रदर्शन जुर्माना लगाती हैं क्योंकि प्रत्येक परिवर्तित ब्लॉक को दो बार भंडारण के लिए प्रतिबद्ध किया जाना चाहिए, लेकिन पूर्ण दोष संरक्षण की आवश्यकता होने पर स्वीकार्य हो सकता है।[8]

तार्किक जर्नल

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

उदाहरण के लिए, किसी फ़ाइल में जोड़ने पर तीन अलग-अलग लेखन सम्मिलित हो सकते हैं:

  1. फ़ाइल का इनोड, फ़ाइल के मेटाडेटा में नोट करने के लिए कि इसका आकार बढ़ गया है।
  2. मुक्त स्थान मानचित्र, जोड़े जाने वाले डेटा के लिए स्थान के आवंटन को चिह्नित करने के लिए।
  3. नया आवंटित स्थान, वास्तव में संलग्न डेटा लिखने के लिए।

केवल-मेटाडेटा जर्नल में, चरण 3 लॉग नहीं किया जाएगा। यदि चरण 3 पूरा नहीं किया गया था, लेकिन पुनर्प्राप्ति के दौरान चरण 1 और 2 को दोबारा चलाया जाता है, तो फ़ाइल को कचरे के साथ जोड़ दिया जाएगा।

खतरे लिखें

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

मामले को जटिल बनाने के लिए, कई बड़े भंडारण उपकरणों के पास अपने स्वयं के लेखन कैश होते हैं, जिसमें वे बेहतर प्रदर्शन के लिए आक्रामक रूप से लेखन को पुन: व्यवस्थित कर सकते हैं। (यह विशेष रूप से चुंबकीय हार्ड ड्राइव पर आम है, जिसमें बड़ी खोज विलंबता होती है जिसे एलेवेटर सॉर्टिंग के साथ कम किया जा सकता है।) कुछ जर्नलिंग फ़ाइल सिस्टम रूढ़िवादी रूप से मानते हैं कि ऐसी राइट-रीऑर्डरिंग हमेशा होती है, और डिवाइस को फ्लश करने के लिए मजबूर करके शुद्धता के लिए प्रदर्शन का त्याग करते हैं। जर्नल में कुछ बिंदुओं पर कैश (ext3 और ext4 में बाधाएं कहा जाता है)।[10]

विकल्प

नरम अद्यतन

कुछ यूनिक्स फ़ाइल सिस्टम इम्प्लीमेंटेशन जर्नलिंग से बचते हैं और इसके बजाय सॉफ्ट अपडेट लागू करते हैं: वे अपने राइट्स को इस तरह से ऑर्डर करते हैं कि ऑन-डिस्क फाइल सिस्टम कभी भी असंगत नहीं होता है, या क्रैश की स्थिति में बनाई जा सकने वाली मात्र असंगतता स्टोरेज है रिसना। इन लीक से उबरने के लिए, मुक्त स्थान मानचित्र को अगले माउंट पर फ़ाइल सिस्टम के पूर्ण चलने के विरुद्ध समेटा जाता है। यह कचरा संग्रहण (कंप्यूटर विज्ञान) सामान्तयः पृष्ठभूमि में किया जाता है।[11]

लॉग-संरचित फ़ाइल सिस्टम

लॉग-संरचित फ़ाइल सिस्टम में, राइट-ट्वाइस पेनल्टी लागू नहीं होती है क्योंकि जर्नल स्वयं फ़ाइल सिस्टम है: यह संपूर्ण स्टोरेज डिवाइस पर कब्जा कर लेता है और इसे संरचित किया जाता है ताकि इसे सामान्य फ़ाइल सिस्टम की तरह ट्रैवर्स किया जा सके।

लिखने पर नकल फ़ाइल सिस्टम

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

यह भी देखें

संदर्भ

  1. 1.0 1.1 Jones, M Tim (June 4, 2008), Anatomy of Linux journaling file systems, IBM DeveloperWorks, archived from the original on February 21, 2009, retrieved April 13, 2009
  2. 2.0 2.1 Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (January 21, 2014), Crash Consistency: FSCK and Journaling (PDF), Arpaci-Dusseau Books, archived (PDF) from the original on January 24, 2014, retrieved January 22, 2014
  3. "tune2fs(8) – Linux man page". linux.die.net. Archived from the original on February 25, 2015. Retrieved February 20, 2015.
  4. Chang, A.; Mergen, M.F.; Rader, R.K.; Roberts, J.A.; Porter, S.L. (January 1990), "Evolution of storage facilities in AIX Version 3 for RISC System/6000 processors" (PDF), IBM Journal of Research and Development, 34:1: 105–109, doi:10.1147/rd.341.0105
  5. Rosembaum, Mendel; Ousterhout, John (February 1991). लॉग-स्ट्रक्चर फ़ाइल सिस्टम का डिज़ाइन और कार्यान्वयन (PDF). ACM 13th Annual Symposium on Operating Systems Principles.
  6. "'2.4.15-final' - MARC". marc.info. Retrieved March 24, 2018.
  7. File Systems from Tanenbaum, A.S. (2008). Modern operating systems (3rd ed., pp. 287). Upper Saddle River, NJ: Prentice Hall.
  8. Tweedie, Stephen (2000), "Ext3, journaling filesystem", Proceedings of the Ottawa Linux Symposium: 24–29
  9. Prabhakaran, Vijayan; Arpaci-Dusseau, Andrea C; Arpaci-Dusseau, Remzi H, "Analysis and Evolution of Journaling File Systems" (PDF), 2005 USENIX Annual Technical Conference, USENIX Association, archived (PDF) from the original on September 26, 2007, retrieved July 27, 2007.
  10. Corbet, Jonathan (May 21, 2008), Barriers and journaling filesystems, archived from the original on March 14, 2010, retrieved March 6, 2010
  11. Seltzer, Margo I; Ganger, Gregory R; McKusick, M Kirk, "Journaling Versus Soft Updates: Asynchronous Meta-data Protection in File Systems", 2000 USENIX Annual Technical Conference, USENIX Association, archived from the original on October 26, 2007, retrieved July 27, 2007.