इनोड
इनोड (इंडेक्स नोड) एक यूनिक्स फाइलसिस्टम सिस्टम में एक डेटा संरचना है। यूनिक्स-शैली फ़ाइल सिस्टम जो एक फ़ाइल सिस्टम का वर्णन करता है। फ़ाइल-सिस्टम ऑब्जेक्ट जैसे कम्प्यूटर फाइल या एक निर्देशिका (कंप्यूटिंग)। प्रत्येक इनोड ऑब्जेक्ट के डेटा की विशेषताओं और डिस्क ब्लॉक स्थानों को संग्रहीत करता है।[1] फ़ाइल-सिस्टम ऑब्जेक्ट विशेषताओं में मेटा डेटा शामिल हो सकता है (अंतिम परिवर्तन का समय,[2] एक्सेस, संशोधन), साथ ही स्वामी और फ़ाइल सिस्टम अनुमतियाँ डेटा।[3] एक निर्देशिका उनके निर्दिष्ट नामों के साथ इनोड्स की एक सूची है। सूची में स्वयं, उसके माता-पिता और उसके प्रत्येक बच्चे के लिए एक प्रविष्टि शामिल है।
व्युत्पत्ति
आई इनोड के कारण के बारे में लिनक्स कर्नेल मेलिंग सूची पर अनिश्चितता रही है। 2002 में, यूनिक्स के अग्रणी डेनिस रिची के सामने यह प्रश्न लाया गया, जिन्होंने उत्तर दिया:[4]
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 का एक पेपर इंडेक्स की धारणा को इनोड्स की व्युत्पत्ति संबंधी उत्पत्ति का समर्थन करता है। उन्होने लिखा है:[5]
[…] 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.
इसके अतिरिक्त, मौरिस जे. बाख ने लिखा है कि एक इनोड शब्द इंडेक्स नोड का एक संकुचन है और आमतौर पर UNIX सिस्टम पर साहित्य में उपयोग किया जाता है।[6]
विवरण
एक फ़ाइल सिस्टम उस फ़ाइल की सामग्री के विपरीत, फ़ाइलों के बारे में डेटा संरचनाओं पर निर्भर करता है। पूर्व को मेटाडेटा-डेटा कहा जाता है जो डेटा का वर्णन करता है। प्रत्येक फ़ाइल एक इनोड से जुड़ी होती है, जिसे एक पूर्णांक द्वारा पहचाना जाता है, जिसे अक्सर आई-नंबर या इनोड नंबर के रूप में संदर्भित किया जाता है।
इनोड्स फ़ाइलों और निर्देशिकाओं (फ़ोल्डरों) के बारे में जानकारी संग्रहीत करते हैं, जैसे फ़ाइल स्वामित्व, एक्सेस मोड (पढ़ना, लिखना, अनुमतियाँ निष्पादित करना), और फ़ाइल प्रकार। कई पुराने फाइल सिस्टम कार्यान्वयन पर, फाइल सिस्टम निर्माण पर इनोड्स की अधिकतम संख्या तय की जाती है, फाइल सिस्टम की अधिकतम संख्या को सीमित कर सकता है। फ़ाइल सिस्टम में इनोड्स के लिए एक विशिष्ट आवंटन हेयुरिस्टिक फ़ाइल सिस्टम में निहित प्रत्येक 2K बाइट्स के लिए एक इनोड है।[8]
कुछ यूनिक्स-शैली फ़ाइल सिस्टम जैसे कि ZFS, OpenZFS, ReiserFS, btrfs, और APFS एक निश्चित आकार के इनोड टेबल को छोड़ देते हैं, लेकिन समतुल्य क्षमता प्रदान करने के लिए समतुल्य डेटा को संग्रहित करना चाहिए। के संदर्भ में डेटा को स्टेट डेटा कहा जा सकता है stat
सिस्टम कॉल जो प्रोग्राम को डेटा प्रदान करता है। निश्चित आकार की तालिका के सामान्य विकल्पों में बी-पेड़ और व्युत्पन्न बी+ पेड़ शामिल हैं।
इनोड नंबर डिवाइस पर ज्ञात स्थान में इनोड्स की तालिका को अनुक्रमित करता है। इनोड नंबर से, कर्नेल का फ़ाइल सिस्टम ड्राइवर फ़ाइल के स्थान सहित इनोड सामग्री तक पहुँच सकता है, जिससे फ़ाइल तक पहुँच की अनुमति मिलती है। फ़ाइल का इनोड नंबर का उपयोग करके पाया जा सकता है ls -i
आज्ञा। ls -i
ई> कमांड रिपोर्ट के पहले कॉलम में इनोड नंबर प्रिंट करता है।
फ़ाइल नाम और निर्देशिका प्रभाव:
- इनोड्स में उनके कड़ी कड़ी नाम नहीं होते हैं, केवल अन्य फ़ाइल मेटाडेटा होते हैं।
- यूनिक्स निर्देशिका संघ संरचनाओं की सूची है, जिनमें से प्रत्येक में एक फ़ाइल नाम और एक इनोड संख्या होती है।
- फ़ाइल सिस्टम ड्राइवर को एक विशेष फ़ाइल नाम के लिए एक निर्देशिका खोजनी चाहिए और फिर फ़ाइल नाम को सही संगत इनोड संख्या में परिवर्तित करना चाहिए।
ऑपरेटिंग सिस्टम कर्नेल द्वारा इस डेटा के इन-मेमोरी रिप्रेजेंटेशन को कहा जाता है struct inode
लिनक्स में। बीएसडी से प्राप्त सिस्टम इस शब्द का उपयोग करते हैं vnode
(v कर्नेल की वर्चुअल फाइल सिस्टम परत को संदर्भित करता है)।
पॉज़िक्स इनोड विवरण
POSIX मानक फ़ाइल-सिस्टम व्यवहार को अनिवार्य करता है जो पारंपरिक UNIX फ़ाइल सिस्टम से बहुत अधिक प्रभावित होता है। एक इनोड को वाक्यांश फ़ाइल सीरियल नंबर द्वारा दर्शाया जाता है, जिसे फ़ाइल के लिए प्रति-फ़ाइल सिस्टम अद्वितीय पहचानकर्ता के रूप में परिभाषित किया जाता है।[9] वह फ़ाइल सीरियल नंबर, फ़ाइल वाले डिवाइस की डिवाइस आईडी के साथ, पूरे सिस्टम के भीतर विशिष्ट रूप से फ़ाइल की पहचान करता है।[10]
POSIX सिस्टम के भीतर, एक फ़ाइल में निम्नलिखित विशेषताएँ होती हैं[10] जिसे द्वारा पुनर्प्राप्त किया जा सकता है stat
सिस्टम कॉल:
- डिवाइस आईडी (यह फ़ाइल वाले डिवाइस की पहचान करता है; यानी सीरियल नंबर की विशिष्टता का दायरा)।
- फ़ाइल सीरियल नंबर।
- फ़ाइल सिस्टम अनुमतियाँ जो फ़ाइल प्रकार और यह निर्धारित करती हैं कि फ़ाइल का स्वामी, उसका समूह और अन्य लोग फ़ाइल तक कैसे पहुँच सकते हैं।
- एक संदर्भ गिनती बताती है कि कितने हार्ड लिंक इनोड की ओर इशारा करते हैं।
- फ़ाइल के स्वामी का उपयोगकर्ता पहचानकर्ता (यूनिक्स)।
- फ़ाइल का समूह पहचानकर्ता (यूनिक्स)।
- फ़ाइल की डिवाइस आईडी अगर यह एक डिवाइस फ़ाइल है।
- बाइट्स में फ़ाइल का आकार।
- समय-चिह्न बता रहा है कि इनोड को आखिरी बार कब संशोधित किया गया था (ctime, इनोड परिवर्तन समय), फ़ाइल सामग्री अंतिम बार संशोधित (mtime, संशोधन समय), और अंतिम बार एक्सेस किया गया (atime, पहूंच समय)।
- पसंदीदा I/O ब्लॉक आकार।
- इस फ़ाइल को आवंटित ब्लॉकों की संख्या।
निहितार्थ
इनोड्स के साथ डिज़ाइन किए गए फ़ाइल सिस्टम में निम्नलिखित प्रशासनिक विशेषताएँ होंगी:
- फाइलों के कई नाम हो सकते हैं। यदि एकाधिक नाम एक ही इनोड से हार्ड लिंक करते हैं तो नाम समतुल्य होते हैं; यानी, सबसे पहले बनाए जाने की कोई विशेष स्थिति नहीं है। यह सांकेतिक लिंक के विपरीत है, जो मूल नाम पर निर्भर करता है, न कि इनोड (संख्या) पर।
- एक इनोड में कोई लिंक नहीं हो सकता है। एक अनलिंक की गई फ़ाइल को डिस्क से हटा दिया जाता है, और इसके संसाधनों को पुनःआवंटन के लिए मुक्त कर दिया जाता है, लेकिन विलोपन को तब तक प्रतीक्षा करनी चाहिए जब तक कि इसे खोलने वाली सभी प्रक्रियाएँ इसे एक्सेस करना समाप्त न कर दें। इसमें निष्पादन योग्य फाइलें शामिल हैं, जो उन्हें निष्पादित करने वाली प्रक्रियाओं द्वारा स्पष्ट रूप से खुली हुई हैं।
- आम तौर पर किसी खुली फ़ाइल से उस फ़ाइल नाम को मैप करना संभव नहीं है जिसका उपयोग इसे खोलने के लिए किया गया था। ऑपरेटिंग सिस्टम फ़ाइल नाम को तुरंत एक इनोड नंबर में बदल देता है और फिर फ़ाइल नाम को हटा देता है। इसका मतलब है कि डायरेक्ट.एच|getcwd() और डायरेक्ट.एच|getwd() लाइब्रेरी फ़ंक्शंस कार्यशील निर्देशिका से मेल खाने वाले इनोड वाली फ़ाइल को खोजने के लिए [[मूल निर्देशिका]] को खोजते हैं, फिर उस निर्देशिका के मूल निर्देशिका को खोजते हैं, और रूट निर्देशिका तक पहुँचने तक। SVR4 और Linux सिस्टम इसे संभव बनाने के लिए अतिरिक्त जानकारी बनाए रखते हैं।
- ऐतिहासिक रूप से, निर्देशिकाओं को हार्ड लिंक करना संभव था। इसने निर्देशिका संरचना को एक निर्देशित विश्वकोश ग्राफ के विपरीत एक मनमाना निर्देशित ग्राफ बना दिया। यहां तक कि एक निर्देशिका के लिए उसका स्वयं का माता-पिता होना भी संभव था। आधुनिक प्रणालियां आम तौर पर इस भ्रामक स्थिति को प्रतिबंधित करती हैं, सिवाय इसके कि जड़ के जनक को अभी भी जड़ के रूप में परिभाषित किया जाता है। इस निषेध का सबसे उल्लेखनीय अपवाद macOS (संस्करण 10.5 और उच्चतर) में पाया जाता है जो सुपर उपयोक्ता द्वारा निर्देशिकाओं के हार्ड लिंक बनाने की अनुमति देता है।[11]
- एक फ़ाइल का इनोड नंबर वही रहता है जब इसे उसी डिवाइस पर किसी अन्य निर्देशिका में ले जाया जाता है, या जब डिस्क defragmentation होती है जो इसके भौतिक स्थान को बदल सकती है, इसे बिना किसी कारण के पढ़े और लिखे जाने के बावजूद इसे स्थानांतरित करने और नाम बदलने की अनुमति देता है एक रुकावट। इसका तात्पर्य यह भी है कि कई गैर-यूनिक्स फ़ाइल सिस्टम, जैसे फ़ाइल आवंटन तालिका और इसके वंशजों के साथ पूरी तरह से अनुरूप इनोड व्यवहार को लागू करना असंभव है, जिनके पास फ़ाइल की निर्देशिका प्रविष्टि और इसके डेटा दोनों होने पर इस व्युत्क्रम को संग्रहीत करने का कोई तरीका नहीं है। के आसपास ले जाया गया।
- इनोड फाइल सिस्टम के साथ नए पुस्तकालयों की स्थापना सरल है। एक चल रही प्रक्रिया एक लाइब्रेरी फ़ाइल तक पहुँच सकती है जबकि दूसरी प्रक्रिया उस फ़ाइल को बदल देती है, एक नया इनोड बना रही है, और नई फ़ाइल के लिए एक पूरी तरह से नई मैपिंग मौजूद होगी ताकि लाइब्रेरी तक पहुँचने के बाद के प्रयासों को नया संस्करण मिल सके। यह सुविधा वर्तमान में मैप की गई लाइब्रेरी को बदलने के लिए रीबूट करने की आवश्यकता को समाप्त करती है।
- डिवाइस के इनोड्स से बाहर निकलना संभव है। जब ऐसा होता है, तो डिवाइस पर नई फ़ाइलें नहीं बनाई जा सकतीं, भले ही खाली स्थान उपलब्ध हो। मेल सर्वर की तुलना जैसे उपयोग मामलों के लिए यह सबसे आम है जिसमें कई छोटी फाइलें होती हैं। फाइल सिस्टम (जैसे जेएफएस (फाइल सिस्टम) या एक्सएफएस) इस सीमा से एक्सटेंट (फाइल सिस्टम) या डायनेमिक इनोड आवंटन से बच जाते हैं, जो फाइल सिस्टम को बढ़ा सकते हैं या इनोड्स की संख्या बढ़ा सकते हैं।
इनलाइनिंग
अंतरिक्ष (कोई डेटा ब्लॉक की आवश्यकता नहीं) और लुकअप समय (कोई और डिस्क एक्सेस की आवश्यकता नहीं) दोनों को बचाने के लिए इनोड में बहुत छोटी फ़ाइलों को संग्रहीत करना समझ में आता है। इस फाइल सिस्टम फीचर को इनलाइनिंग कहा जाता है। आधुनिक फाइल सिस्टम का उपयोग करते समय इनोड और फ़ाइल डेटा का सख्त अलगाव अब ग्रहण नहीं किया जा सकता है।
यदि फ़ाइल का डेटा डेटा के पॉइंटर्स के लिए आवंटित स्थान में फिट बैठता है, तो इस स्थान का आसानी से उपयोग किया जा सकता है। उदाहरण के लिए, यदि डेटा 60 बाइट्स (तेज़ प्रतीकात्मक लिंक) से अधिक नहीं है, तो ext2 और इसके उत्तराधिकारी इस तरह से सिमिलिंक (आमतौर पर फ़ाइल नाम) के डेटा को संग्रहीत करते हैं।[12]
Ext4 में एक फाइल सिस्टम विकल्प है जिसे कहा जाता है inline_data
जो फ़ाइल सिस्टम निर्माण के दौरान सक्षम होने पर ext4 को इनलाइनिंग करने की अनुमति देता है। क्योंकि एक इनोड का आकार सीमित होता है, यह केवल बहुत छोटी फाइलों के लिए काम करता है।[13]
गैर-यूनिक्स सिस्टम में
- एनटीएफएस में एक बी-ट्री में फाइलों को संग्रहित करने वाली एक मास्टर फाइल टेबल (एमएफटी) है। प्रत्येक प्रविष्टि में एक फ़ाइलआईडी होती है, जो इनोड संख्या के अनुरूप होती है, जो विशिष्ट रूप से इस प्रविष्टि को संदर्भित करती है।[14] प्रविष्टि में तीन टाइमस्टैम्प, एक डिवाइस आईडी, विशेषताएँ, संदर्भ संख्या और फ़ाइल आकार पाए जाते हैं, लेकिन POSIX के विपरीत अनुमतियाँ एक अलग API के माध्यम से व्यक्त की जाती हैं।[15] ऑन-डिस्क लेआउट अधिक जटिल है।[16] पहले के FAT फाइल सिस्टम में ऐसी तालिका नहीं थी और हार्ड लिंक बनाने में असमर्थ थे।
- एनटीएफएस में एमएफटी प्रविष्टि में छोटी फाइलों को इनलाइन करने की अवधारणा भी है।[17]
- व्युत्पन्न ReFS में समरूप MFT है। आरईएफएस में 128-बिट फ़ाइल आईडी है; यह एक्सटेंशन NTFS को भी बैकपोर्ट किया गया था, जिसमें मूल रूप से 64-बिट फ़ाइल आईडी थी।[15]* वही स्टेट-जैसी GetFileInformationByHandle एपीआई का उपयोग क्लस्टर साझा वॉल्यूम और सर्वर मैसेज ब्लॉक | एसएमबी 3.0 पर किया जा सकता है, इसलिए इन प्रणालियों में फ़ाइल आईडी की समान अवधारणा हो सकती है।[15]
यह भी देखें
- इनोड सूचक संरचना
- सूचित करें
संदर्भ
- ↑ Tanenbaum, Andrew S. आधुनिक ऑपरेटिंग सिस्टम (3rd ed.). p. 279.
- ↑ JVSANTEN. "एमटाइम, सीटाइम और एटाइम के बीच अंतर - लिनक्स हाउटोस और एफएक्यू". Linux Howtos and FAQs. Archived from the original on 2016-11-20.
{{cite web}}
: CS1 maint: unfit URL (link) - ↑ "लिनक्स वर्चुअल फाइल सिस्टम स्विच का एनाटॉमी". ibm.com.
- ↑ Landley, Rob (July 20, 2002). "Fwd: Re: What does the "i" in inode stand for? Dennis Ritchie doesn't know either". linux-kernel (Mailing list). Retrieved 2011-01-12.
- ↑ Ritchie, Dennis M.; Thompson, Ken (1978). "UNIX टाइम-शेयरिंग सिस्टम". The Bell System Technical Journal. 57 (6): 1913–1914. Retrieved 19 December 2015.
- ↑ Maurice J. Bach (1986). यूनिक्स ऑपरेटिंग सिस्टम का डिजाइन. Prentice Hall. ISBN 978-0132017992.
- ↑ Bach, Maurice J. (1986). The Design of the UNIX Operating System. Prentice Hall. p. 94. Bibcode:1986duos.book.....B.
- ↑ "linfo". The Linux Information Project. Retrieved 11 March 2020.
- ↑ "Definitions - 3.176 File Serial Number". The Open Group. Retrieved 10 January 2018.
- ↑ 10.0 10.1 "<sys/stat.h>". The Open Group. Retrieved 15 January 2018.
- ↑ "What is the Unix command to create a hardlink to a directory in OS X?". Stack Overflow. 16 Jan 2011. Archived from the original on 5 January 2020. Retrieved 5 Jan 2020.
- ↑ "The Linux kernel: Filesystems". tue.nl.
- ↑ "Ext4 Disk Layout". kernel.org. Retrieved August 18, 2013.
- ↑ "Does Windows have Inode Numbers like Linux?". Stack Overflow.
- ↑ 15.0 15.1 15.2 "GetFileInformationByHandle function (fileapi.h) - Win32 apps". docs.microsoft.com (in English).
- ↑ "[MS-FSCC]: NTFS Attribute Types". docs.microsoft.com (in English).
- ↑ "Windows - Maximum size of file that can be stored entirely in NTFS Master File Table (MFT)".