इनोड

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

एक डायरेक्टरी उनके निर्दिष्ट नामों के साथ इनोड्स की एक सूची है। सूची में स्वयं, उसके माता-पिता और उसके प्रत्येक बच्चे के लिए एक प्रविष्टि सम्मिलित है।

व्युत्पत्ति
"इनोड" में "आई " के कारण के बारे में लिनक्स कर्नेल मेलिंग सूची पर अनिश्चितता रही है। 2002 में, यूनिक्स के अग्रणी डेनिस रिची के सामने यह प्रश्न लाया गया, जिन्होंने उत्तर दिया: "In truth, I don't know either. It was just a term that we started to use. "Index" is my best guess, because of the slightly unusual file system structure that stored the access information of files as a flat array on the disk, with all the hierarchical directory information living aside from this. Thus the i-number is an index in this array, the i-node is the selected element of the array. (The "i-" notation was used in the 1st edition manual; its hyphen was gradually dropped.)"

रिची और केन थॉम्पसन द्वारा 1978 का एक लेख "इंडेक्स" की धारणा को इनोड्स की व्युत्पत्ति संबंधी उत्पत्ति का समर्थन करता है। उन्होने लिखा है: "[…] a directory entry contains only a name for the associated file and a pointer to the file itself. This pointer is an integer called the i-number (for index number) of the file. When the file is accessed, its i-number is used as an index into a system table (the i-list) stored in a known part of the device on which the directory resides. The entry found thereby (the file's i-node) contains the description of the file."

इसके अतिरिक्त, मौरिस जे. बाख ने लिखा है कि एक इनोड शब्द सूचक नोड का एक संकुचन है और प्रायः यूनिक्स सिस्टम पर साहित्य में उपयोग किया जाता है।

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

इनोड्स फ़ाइलों और डायरेक्टरीज़ (फ़ोल्डरों) के बारे में जानकारी संग्रहीत करते हैं, जैसे फ़ाइल स्वामित्व, अनुमति मोड (पढ़ना, लिखना, अनुमतियाँ निष्पादित करना), और फ़ाइल प्रकार। कई पुराने फाइल सिस्टम कार्यान्वयन पर, फाइल सिस्टम निर्माण पर इनोड्स की अधिकतम संख्या तय की जाती है, फाइल सिस्टम की अधिकतम संख्या को सीमित कर सकता है। फ़ाइल सिस्टम में इनोड्स के लिए एक विशिष्ट आवंटन हेयुरिस्टिक फ़ाइल सिस्टम में निहित प्रत्येक 2K बाइट्स के लिए एक इनोड है।

कुछ यूनिक्स-शैली फ़ाइल सिस्टम जैसे कि जेड ऍफ़ एस, ओपन जेड ऍफ़ एस, रेज़रऍफ़ एस, बी टी आर ऍफ़ एस, और ए पी ऍफ़ एस एक निश्चित आकार के इनोड तालिका को छोड़ देते हैं, लेकिन समतुल्य क्षमता प्रदान करने के लिए समतुल्य डेटा को संग्रहित करना चाहिए। प्रोग्राम को डेटा प्रदान करने वाले सिस्टम कॉल के संदर्भ में डेटा को स्टैट डेटा कहा जा सकता है। सिस्टम कॉल जो प्रोग्राम को डेटा प्रदान करता है। निश्चित आकार की तालिका के सामान्य विकल्पों में बी-ट्रीज और व्युत्पन्न बी+ ट्रीज सम्मिलित हैं।

इनोड संख्या उपकरण पर ज्ञात स्थान में इनोड्स की तालिका को अनुक्रमित करता है। इनोड संख्या से, कर्नेल का फ़ाइल सिस्टम ड्राइवर फ़ाइल के स्थान सहित इनोड सामग्री तक पहुँच सकता है, जिससे फ़ाइल तक पहुँच की अनुमति मिलती है। फ़ाइल का इनोड संख्या का उपयोग करके पाया जा सकता है।   कमांड रिपोर्ट के पहले कॉलम में इनोड संख्या प्रिंट करता है।

फ़ाइल नाम और डायरेक्टरी प्रभाव:
 * इनोड्स में उनके हार्ड लिंक नाम नहीं होते हैं, केवल अन्य फ़ाइल मेटाडेटा होते हैं।
 * यूनिक्स डायरेक्टरी संघ संरचनाओं की सूची है, जिनमें से प्रत्येक में एक फ़ाइल नाम और एक इनोड संख्या होती है।
 * फ़ाइल सिस्टम ड्राइवर को एक विशेष फ़ाइल नाम के लिए एक डायरेक्टरी खोजनी चाहिए और फिर फ़ाइल नाम को सही संगत इनोड संख्या में परिवर्तित करना चाहिए।

ऑपरेटिंग सिस्टम कर्नेल द्वारा इस डेटा के इन-मेमोरी रिप्रेजेंटेशन को लिनक्स में कहा जाता है। बीएसडी से प्राप्त सिस्टम इस शब्द   ("वी" कर्नेल की वर्चुअल फाइल सिस्टम परत को संदर्भित करता है) का उपयोग करते हैं।

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

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

निहितार्थ
इनोड्स के साथ डिज़ाइन किए गए फ़ाइल सिस्टम में निम्नलिखित प्रशासनिक विशेषताएँ होंगी:
 * फाइलों के कई नाम हो सकते हैं। यदि एकाधिक नाम एक ही इनोड से हार्ड लिंक करते हैं तो नाम समतुल्य होते हैं; यानी, सबसे पहले बनाए जाने की कोई विशेष स्थिति नहीं है। यह सांकेतिक लिंक के विपरीत है, जो मूल नाम पर निर्भर करता है, न कि इनोड (संख्या) पर।
 * एक इनोड में कोई लिंक नहीं हो सकता है। एक अनलिंक की गई फ़ाइल को डिस्क से हटा दिया जाता है, और इसके संसाधनों को पुनःआवंटन के लिए मुक्त कर दिया जाता है, लेकिन विलोपन को तब तक प्रतीक्षा करनी चाहिए जब तक कि इसे खोलने वाली सभी प्रक्रियाएँ इसे अनुमति देना समाप्त न कर दें। इसमें निष्पादन योग्य फाइलें सम्मिलित हैं, जो उन्हें निष्पादित करने वाली प्रक्रियाओं द्वारा स्पष्ट रूप से खुली हुई हैं।
 * प्रायः किसी खुली फ़ाइल से उस फ़ाइल नाम को मैप करना संभव नहीं है जिसका उपयोग इसे खोलने के लिए किया गया था। ऑपरेटिंग सिस्टम फ़ाइल नाम को तुरंत एक इनोड संख्या में बदल देता है और फिर फ़ाइल नाम को छोड़ देता है। इसका मतलब है कि getcwd और getwd लाइब्रेरी फ़ंक्शंस पैरेंट डायरेक्टरी को वर्किंग डायरेक्टरी से मेल खाने वाली इनोड वाली फाइल खोजने के लिए सर्च करते हैं, फिर उस डायरेक्टरी के मूल डायरेक्टरी को खोजते हैं, और इसी तरह रूट डायरेक्टरी तक पहुँचते हैं। SVR4 और लिनक्स सिस्टम इसे संभव बनाने के लिए अतिरिक्त जानकारी बनाए रखते हैं।
 * ऐतिहासिक रूप से, डायरेक्टरीज़ को हार्ड लिंक करना संभव था। इसने डायरेक्टरी संरचना को एक निर्देशित विश्वकोश ग्राफ के विपरीत एक अचक्रिय निर्देशित ग्राफ बना दिया। यहां तक ​​कि एक डायरेक्टरी के लिए उसका स्वयं का माता-पिता होना भी संभव था। आधुनिक प्रणालियां प्रायः इस भ्रामक स्थिति को प्रतिबंधित करती हैं, सिवाय इसके कि मूल प्रणालि के जनक को अभी भी मूल रूप में परिभाषित किया जाता है। इस निषेध का सबसे उल्लेखनीय अपवाद मैक ओएस एक्स (संस्करण 10.5 और उच्चतर) में पाया जाता है जो सुपर उपयोक्ता द्वारा डायरेक्टरीज़ के हार्ड लिंक बनाने की अनुमति देता है।
 * एक फ़ाइल का इनोड संख्या वही रहता है जब इसे उसी उपकरण पर किसी अन्य डायरेक्टरी में ले जाया जाता है, या जब डिस्क को डीफ़्रेग्मेंट किया जाता है, जो इसके भौतिक स्थान को बदल सकता है, बिना किसी रुकावट के पढ़ने और लिखे जाने के दौरान भी इसे स्थानांतरित करने और नाम बदलने की अनुमति देता है। इसका तात्पर्य यह भी है कि कई गैर-यूनिक्स फ़ाइल सिस्टम, जैसे फ़ाइल आवंटन तालिका और इसके वंशजों के साथ पूरी तरह से अनुरूप इनोड व्यवहार को लागू करना असंभव है, जिनके पास फ़ाइल की डायरेक्टरी प्रविष्टि और इसके डेटा दोनों को इधर-उधर ले जाने पर इस व्युत्क्रम को संग्रहीत करने का कोई तरीका नहीं है।
 * इनोड फाइल सिस्टम के साथ नए लाइब्रेरीज को इंस्टॉल करना सरल है। एक चल रही प्रक्रिया एक लाइब्रेरी फ़ाइल तक पहुँच सकती है जबकि दूसरी प्रक्रिया उस फ़ाइल को बदल देती है, एक नया इनोड बना रही है, और नई फ़ाइल के लिए एक पूरी तरह से नई मैपिंग विद्यमान होगी ताकि लाइब्रेरी तक पहुँचने के बाद के प्रयासों को नया संस्करण मिल सके। यह सुविधा वर्तमान में मैप की गई लाइब्रेरी को बदलने के लिए रीबूट करने की आवश्यकता को समाप्त करती है।
 * उपकरण के लिए इनोड्स से बाहर निकलना संभव है। जब ऐसा होता है, तो उपकरण पर नई फ़ाइलें नहीं बनाई जा सकतीं, भले ही खाली स्थान उपलब्ध हो। मेल सर्वर जैसे उपयोग स्थितियों के लिए यह सबसे सामान्य है जिसमें कई छोटी फाइलें होती हैं। फाइल सिस्टम (जैसे जेएफएस या एक्सएफएस) विस्तार या गतिशील इनोड आवंटन के साथ इस सीमा से बचते हैं, जो फाइल सिस्टम को "बढ़ा" सकता है या इनोड की संख्या बढ़ा सकता है।

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

यदि फ़ाइल का डेटा डेटा के पॉइंटर्स के लिए आवंटित स्थान में उचित बैठता है, तो इस स्थान का आसानी से उपयोग किया जा सकता है। उदाहरण के लिए, ईएक्सटी2 और इसके उत्तरवर्ती इस तरह से सिमलिंक्स (प्रायः फ़ाइल नाम) के डेटा को स्टोर करते हैं यदि डेटा 60 बाइट्स ("तेज प्रतीकात्मक लिंक") से अधिक नहीं है।

ईएक्सटी4 में एक फाइल सिस्टम विकल्प है जिसे इनलाइनिंग डेटा कहा जाता है जो फ़ाइल सिस्टम निर्माण के दौरान सक्षम होने पर ईएक्सटी4 को इनलाइनिंग करने की अनुमति देता है। क्योंकि एक इनोड का आकार सीमित होता है, यह केवल बहुत छोटी फाइलों के लिए काम करता है।

गैर-यूनिक्स सिस्टम में

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

यह भी देखें

 * इनोड सूचक संरचना
 * सूचित करें

बाहरी संबंध

 * Anatomy of the Linux File System
 * Inode definition
 * Explanation of Inodes, Symlinks, and Hardlinks