यूनिक्स फाइल सिस्टम

यूनिक्स फाइल सिस्टम (यूएफएस) कई यूनिक्स और यूनिक्स जैसे ऑपरेटिंग सिस्टम द्वारा समर्थित फाइल सिस्टम का एक वर्ग है। यह संस्करण 7 यूनिक्स द्वारा उपयोग की जाने वाली मूल फ़ाइल प्रणाली का दूर का वंशज है।

डिजाइन
एक यूएफएस वॉल्यूम निम्नलिखित भागों से बना होता है:


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

इनोड्स को क्रमिक रूप से 0 से प्रारंभ किया जाता है। इनोड 0 असंबद्ध निर्देशिका प्रविष्टियों के लिए आरक्षित है। इनोड 1 ऐतिहासिक यूनिक्स संस्करणों में खराब ब्लॉक फ़ाइल का इनोड था इसके बाद रूट मूल निर्देशिकाके लिए इनोड होता है जो सदैव इनोड 2 होता है और खोए हुए के लिए इनोड होता है। + मिली निर्देशिका जो इनोड 3 है।

निर्देशिका फ़ाइलों में केवल निर्देशिका में फ़ाइल नामों की सूची और प्रत्येक फ़ाइल से जुड़े इनोड होते हैं। सभी फ़ाइल मेटाडेटा (कंप्यूटिंग) को इनोड में रखा जाता है।

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

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

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

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

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

बर्कले एफएफएस पर काम अन्य यूनिक्स विक्रेताओं द्वारा व्यापक रूप से अपनाया गया था और इससे प्राप्त फाइल सिस्टम के वर्ग को सामूहिक रूप से यूएफएस के रूप में जाना जाता है।

कार्यान्वयन
SunOS / Solaris (ऑपरेटिंग सिस्टम), सिस्टम V रिलीज़ 4, HP-UX, और Tru64 UNIX जैसे कुछ मालिकाना यूनिक्स सिस्टम के विक्रेता, और ओपन यूनिक्स व्युत्पन्न सिस्टम जैसे इलुमोस, ने यूएफएस को अपनाया है। उनमें से अधिकांश ने यूएफएस को अपने स्वयं के उपयोगों के लिए अनुकूलित किया, स्वामित्व विस्तार जोड़ते हुए जो कि यूनिक्स के अन्य विक्रे

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

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

4.4बीएसडी और बर्कले सॉफ्टवेयर वितरण यूनिक्स सिस्टम में इससे व्युत्पन्न, जैसे कि फ्रीबीएसडी, नेटबीएसडी, ओपनबीएसडी, और DragonFlyBSD, यूएफएस1 और यूएफएस2 के कार्यान्वयन को दो परतों में विभाजित किया गया है: एक ऊपरी परत जो निर्देशिका संरचना प्रदान करती है और मेटाडेटा (अनुमति, अनुमतियां) का समर्थन करती है। स्वामित्व, आदि) इनोड संरचना में और निचली परतें जो इनोड्स के रूप में कार्यान्वित डेटा कंटेनर प्रदान करती हैं। यह सामान्य कार्यों के लिए साझा कोड के साथ पारंपरिक एफएफएस और लॉग-संरचित फाइल सिस्टम (बीएसडी)बीएसडी) लॉग-स्ट्रक्चर्ड फाइल सिस्टम दोनों का समर्थन करने के लिए किया गया था। ऊपरी परत को यूएफएस कहा जाता है, और निचली परतों को एफएफएस और एलएफएस कहा जाता है। उनमें से कुछ प्रणालियों में एफएफएस शब्द का उपयोग एफएफएस निचली परत और यूएफएस ऊपरी परत के संयोजन के लिए किया जाता है, और एलएफएस शब्द का उपयोग एलएफएस निचली परत और यूएफएस ऊपरी परत के संयोजन के लिए किया जाता है।

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

यूएफएस2 में, किर्क मैककुसिक और पॉल-हेनिंग कैंप ने फ्रीबीएसडी एफएफएस और यूएफएस परत  को 64-बिट ब्लॉक पॉइंटर्स (वॉल्यूम को 8 ज़ेबिबाइट्स तक बढ़ने की अनुमति), चर-आकार के ब्लॉक (सीमा (फ़ाइल सिस्टम) के समान) जोड़ने के लिए बढ़ाया, बढ़ाया ध्वज क्षेत्र, अतिरिक्त 'जन्म समय' टिकटें विस्तारित विशेषता समर्थन और पॉज़िक्स1.ई एसीएल यूएफएस2 फ्रीबीएसडी 5.0 ​​के साथ प्रारंभ होकर समर्थित यूएफएस संस्करण बन गया। फ्रीबीएसडी ने सॉफ्ट अपडेट और यूएफएस1 और यूएफएस2 दोनों के लिए फाइल सिस्टम  स्नैपशॉट (कंप्यूटर संचयन) बनाने की क्षमता भी प्रस्तुत की इसके बाद से इन्हें नेटबीएसडी में पोर्ट कर दिया गया है, किन्तु अंततः सॉफ्ट अपडेट्स (नेटबीएसडी में सॉफ्ट डिपेंडेंसी कहा जाता है) को नेटबीएसडी 6.0 से डब्ल्यूएपीबीएल (जिसे लॉगिंग भी कहा जाता है) नामक कम जटिल फ़ाइल सिस्टम जर्नलिंग मैकेनिज्म के पक्ष में हटा दिया गया था, जिसे नेटबीएसडी में एफएफएस में जोड़ा गया था। 5.0। ओपनबीएसडी ने संस्करण 2.9 के बाद से सॉफ्ट अपडेट का समर्थन किया है और संस्करण 4.2 के बाद से यूएफएस2 (एफएफएस2) समर्थन (कोई एसीएल नहीं) है। ओपनबीएसडी ने अब यूएफएस2 को डिफ़ॉल्ट यूएफएस संस्करण बना दिया है और इसे 6.7 रिलीज के साथ सम्मिलित किया जाएगा। फ्रीबीएसडी 7.0 के बाद से, यूएफएस भी जर्नल जीओएम प्रदाता का उपयोग करके जर्नलिंग फ़ाइल सिस्टम का समर्थन करता है। फ्रीबीएसडी 9.0 सॉफ्ट अपडेट्स (SU+J) के शीर्ष पर लाइटवेट जर्नलिंग के लिए समर्थन जोड़ता है, जो बैकग्राउंड ऍफ़एससीके और एनएफएसवी4 एसीएल की आवश्यकता को बहुत कम कर देता है।

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

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

नेक्स्टस्टेप, जो कि बीएसडी-व्युत्पन्न था, ने भी यूएफएस के एक संस्करण का उपयोग किया। एप्पल Inc. के मैक ओएसमें, यह एचएफएस प्लस एचएफएस +, उनके मालिकाना फ़ाइल सिस्टम के विकल्प के रूप में उपलब्ध था। चूँकि ,मैक ओएस एक्स लेपर्ड के रूप में, मैक ओएस एक्स को यूएफएस-प्रारूपित वॉल्यूम पर स्थापित करना अब संभव नहीं था। इसके अतिरिक्त यूएफएस-प्रारूपित वॉल्यूम पर स्थापित मैक ओएस एक्स के पुराने संस्करणों को लेपर्ड में अपग्रेड नहीं किया जा सकता है; उन्नयन के लिए स्टार्टअप वॉल्यूम को पुन: स्वरूपित करने की आवश्यकता है। Mac OS X में यूएफएस के रूप में स्वरूपित डिस्क के लिए 4GB फ़ाइल सीमा थी। मैक ओएस एक्स लायन के रूप में यूएफएस समर्थन पूरी तरह से हटा दिया गया था।

यह भी देखें

 * फाइल सिस्टम की तुलना

बाहरी संबंध

 * The Solaris यूएफएस File System, see also
 * USF(sic)/यूएफएस2 format
 * Locality and The Fast File System
 * Apple File System
 * Locality and The Fast File System
 * Apple File System