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

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

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


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

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

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

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

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

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

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

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

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

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

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

UFS2 में, Kirk McKusick और Poul-Henning Kamp ने FreeBSD FFS और UFS लेयर्स को 64-बिट ब्लॉक पॉइंटर्स (वॉल्यूम को 8 ज़ेबिबाइट्स तक बढ़ने की अनुमति), चर-आकार के ब्लॉक (सीमा (फ़ाइल सिस्टम) के समान) जोड़ने के लिए बढ़ाया, बढ़ाया ध्वज क्षेत्र, अतिरिक्त 'जन्म समय' टिकटें, विस्तारित विशेषता समर्थन और POSIX1.e ACL। UFS2 FreeBSD 5.0 ​​के साथ शुरू होकर समर्थित UFS संस्करण बन गया। FreeBSD ने सॉफ्ट अपडेट और UFS1 और UFS2 दोनों के लिए फाइल सिस्टम स्नैपशॉट (कंप्यूटर भंडारण)  बनाने की क्षमता भी पेश की। इसके बाद से इन्हें NetBSD में पोर्ट कर दिया गया है, लेकिन अंततः सॉफ्ट अपडेट्स (NetBSD में सॉफ्ट डिपेंडेंसी कहा जाता है) को NetBSD 6.0 से WAPBL (जिसे लॉगिंग भी कहा जाता है) नामक कम जटिल फ़ाइल सिस्टम जर्नलिंग मैकेनिज्म के पक्ष में हटा दिया गया था, जिसे NetBSD में FFS में जोड़ा गया था। 5.0। OpenBSD ने संस्करण 2.9 के बाद से सॉफ्ट अपडेट का समर्थन किया है और संस्करण 4.2 के बाद से UFS2 (FFS2) समर्थन (कोई ACL नहीं) है। OpenBSD ने अब UFS2 को डिफ़ॉल्ट UFS संस्करण बना दिया है और इसे 6.7 रिलीज के साथ शामिल किया जाएगा। FreeBSD 7.0 के बाद से, UFS भी gjournal GEOM प्रदाता का उपयोग करके जर्नलिंग फ़ाइल सिस्टम का समर्थन करता है। FreeBSD 9.0 सॉफ्ट अपडेट्स (SU+J) के शीर्ष पर लाइटवेट जर्नलिंग के लिए समर्थन जोड़ता है, जो बैकग्राउंड fsck और NFSv4 ACLs की आवश्यकता को बहुत कम कर देता है।

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

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

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

यह भी देखें

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

बाहरी संबंध

 * The Solaris UFS File System, see also
 * USF(sic)/UFS2 format
 * Locality and The Fast File System
 * Apple File System
 * Locality and The Fast File System
 * Apple File System