सुपरब्लॉक, इनोड, डेंट्री और एक फाइल क्या है?


125

एम। टिम जोन्स द्वारा लिनक्स फाइल सिस्टम के एनाटॉमी के लेख से , मैंने पढ़ा कि लिनक्स सभी फाइल सिस्टम को वस्तुओं के एक सामान्य सेट के परिप्रेक्ष्य से देखता है और ये ऑब्जेक्ट सुपरब्लॉक , इनोड , डेंट्री और फाइल हैं । हालांकि बाकी पैराग्राफ ऊपर बताते हैं, मैं उस स्पष्टीकरण के साथ सहज नहीं था।

क्या कोई मुझे ये शर्तें समझा सकता है?

जवाबों:


136

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

Superblock अनिवार्य रूप से फ़ाइल सिस्टम मेटाडाटा है और फाइल सिस्टम प्रकार, आकार, स्थिति, और जानकारी अन्य मेटाडाटा संरचनाओं (मेटाडाटा के मेटाडाटा) के बारे में परिभाषित करता है। सुपरब्लॉक फ़ाइल सिस्टम के लिए बहुत महत्वपूर्ण है और इसलिए प्रत्येक फ़ाइल सिस्टम के लिए कई अनावश्यक प्रतियों में संग्रहीत किया जाता है। सुपरब्लॉक फ़ाइल सिस्टम के लिए एक "उच्च स्तरीय" मेटाडेटा संरचना है। उदाहरण के लिए, यदि किसी पार्टीशन, / var का सुपरब्लॉक भ्रष्ट हो जाता है तो ऑपरेटिंग सिस्टम द्वारा प्रश्न (/ var) में फाइल सिस्टम को माउंट नहीं किया जा सकता है। आम तौर पर इस घटना में, आपको चलाने की आवश्यकता हैfsckजो स्वचालित रूप से सुपरब्लॉक की एक वैकल्पिक, बैकअप प्रतिलिपि का चयन करेगा और फ़ाइल सिस्टम को पुनर्प्राप्त करने का प्रयास करेगा। विभाजन की शुरुआत से 1 ब्लॉक ऑफसेट पर पहले संग्रहीत के साथ फाइल सिस्टम के माध्यम से फैली हुई ब्लॉक समूहों में बैकअप प्रतियां स्वयं संग्रहीत होती हैं। इस घटना में यह महत्वपूर्ण है कि एक मैनुअल रिकवरी आवश्यक है। आप कमांड के साथ सुपरब्लॉक बैकअप के बारे में जानकारी देख सकते हैं dumpe2fs /dev/foo | grep -i superblockजो मैनुअल रिकवरी प्रयास की स्थिति में उपयोगी है। हमें लगता है कि डंप 2 एफ़ टी कमांड लाइन को आउटपुट करता है Backup superblock at 163840, Group descriptors at 163841-163841। हम इस जानकारी का उपयोग कर सकते हैं, और फ़ाइल सिस्टम संरचना के बारे में अतिरिक्त ज्ञान, इस सुपरब्लॉक बैकअप का उपयोग करने का प्रयास कर सकते हैं /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo:। कृपया ध्यान दें कि मैंने इस उदाहरण के लिए 1024 बाइट्स का एक ब्लॉक आकार ग्रहण किया है।

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

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

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

मुझे पूरी तरह से पता है कि कुछ वाक्य इन अवधारणाओं में से किसी का भी पूर्ण विवरण प्रदान नहीं करते हैं, इसलिए कृपया आवश्यक होने पर अतिरिक्त विवरण मांगने के लिए स्वतंत्र महसूस करें।


@Tok: क्या इसे इस तरह डंप किया जाएगा (जैसा कि उत्तर में दिखाया गया है): 163840 पर बैकअप सुपरब्लॉक, 163841-163841 पर ग्रुप डिस्क्रिप्टर या इस तरह से: 163840 पर बैकअप सुपरब्लॉक, 163841-163842 पर ग्रुप डिस्क्रिप्टर? क्या वह टाइपो त्रुटि थी? :-)
सेन

@TOK: 163840 पर बैकअप सुपरब्लॉक, 163841-163842 पर ग्रुप डिस्क्रिप्टर, ग्रुप डिस्क्रिप्टिव क्या जानकारी देता है?
सेन

@ देखें - सैद्धांतिक रूप से समूह के वर्णनकर्ता कई ब्लॉक ले सकते हैं, लेकिन अधिकांश डेस्कटॉप सिस्टम के लिए आप उन्हें केवल एक ही ब्लॉक लेंगे और $ ((बैकअपब्लॉक + 1)) के रूप में संदर्भित किया जाएगा - $ ((बैकअपब्लॉक + 1))
टोक

@TOK: ठीक है मेरे सिस्टम में मैं इसे $ ((BackupBlock + 1)) की तरह देखता हूं - $ ((BackupBlock + 2))
Sen

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

49

फ़ाइल

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

inode

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

Dentry

डेंट्री ("डायरेक्ट्री एंट्री" के लिए छोटा) वह है जो लिनक्स कर्नेल निर्देशिकाओं में फाइलों के पदानुक्रम का ट्रैक रखने के लिए उपयोग करता है। प्रत्येक डेंट्री फ़ाइल नाम और पैरेंट डायरेक्टरी में एक इनोड नंबर मैप करता है।

Superblock

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


11

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

VFS में प्रमुख वस्तुओं के संबंध

यहां छवि विवरण दर्ज करें


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

कार्यक्रम, सेवाओं, ग्रंथों, चित्र, और आगे, सभी फाइलें हैं । इनपुट और आउटपुट डिवाइस और आम तौर पर सभी डिवाइस, सिस्टम के अनुसार, फाइल मानी जाती हैं ।

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

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

स्रोत


5

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

struct file, लिनक्स कर्नेल में, दूसरों के बहुत से उदाहरण (जैसे struct address_space) का नाम है और वास्तविक "फ़ाइल" (जैसे / आदि / पासवार्ड) का अमूर्त नहीं है। यह एक खुली "फ़ाइल" या निर्देशिका के लिए खड़ा है। कर्नेल struct fileद्वारा बनाया गया sys_openहै, इसलिए एक struct fileही फ़ाइल के लिए बहुत सी प्रक्रिया हो सकती है ।

हमें दांतों की आवश्यकता क्यों है? इसका उपयोग पथ नाम (जैसे / आदि / पासवार्ड) से इनोड में अनुवाद को गति देने के लिए किया जाता है। लिनक्स कर्नेल इनकोड को "फ़ाइल" या निर्देशिका में हेरफेर करने के लिए उपयोग करता है, उनके नाम पर नहीं।


4

ध्यान दें कि ये शब्द लिनक्स विशिष्ट नहीं हैं, लेकिन फाइल सिस्टम विशिष्ट हैं। वर्तमान यूनिक्स और यूनिक्स जैसे सिस्टमों द्वारा उपयोग किए जाने वाले अधिकांश फाइल सिस्टम या तो व्युत्पन्न हैं या मूल यूनिक्स फाइलसिस्टम से प्रेरित हैं जिसने सुपरब्लॉक और इनकोड मुहावरों को परिभाषित किया है। लिनक्स कई फाइल सिस्टम को भी माउंट कर सकता है जिसके साथ सुपरब्लॉक और / या इनोड की कोई धारणा नहीं है, सबसे सामान्य एफएटी है। एक और, ZFS, सुपरब्लॉक का उपयोग नहीं करता है लेकिन überblocks का।


आशा है कि आप इस टिप्पणी को इतने लंबे समय बाद पढ़ें। मैंने पढ़ा कि वीएफएस में इनोड्स और सुपरब्लॉक हैं जो एक्सटी 2 के इनोड्स और सुपरब्लॉक में असंबंधित हैं। तो, बस गलत नहीं समझें कि आपने क्या कहा, हर लिनक्स के एक VFS होने के कारण, वे सभी इनोड और सुपरब्लॉक का उपयोग कर रहे होंगे, है ना?
जिज्ञासु किमची

1
@CuriousKimchi इस तथ्य के बावजूद कि उनका यहाँ एक ही नाम है, आपको डिस्क (सुपरब्लॉक / इनोड्स) पर संग्रहीत जानकारी को भ्रमित नहीं करना चाहिए और कर्नेल द्वारा उपयोग की जाने वाली संरचनाओं को फ़ाइल सिस्टम और उसकी फ़ाइलों तक पहुँचाना नहीं चाहिए। हर फ़ाइल सिस्टम में डिस्क पर कुछ मेटाडेटा होता है जो फ़ाइल सिस्टम विशेषताओं का वर्णन करता है, इस मेटाडेटा का उपयोग लिनक्स VFS सुपरब्लॉक संरचना को आबाद करने के लिए किया जाता है। इसी प्रकार, फ़ाइलों में VFS के अंतर्गत कर्नेल इनोड संरचना होती है। जब अंतर्निहित फ़ाइल सिस्टम में इनकोड की धारणा का अभाव होता है, तो इस संरचना में OS द्वारा फ्लाई पर बनाया गया एक नकली इनकोड नंबर होता है।
jlliagre
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.