डिस्क उपयोग को मापने के लिए कई अलग-अलग तरीके क्यों हैं?


113

जब मैं अपनी फ़ाइलों के आकार का योग करता हूं, तो मुझे एक आंकड़ा मिलता है। अगर मैं दौड़ता हूं du, तो मुझे एक और आंकड़ा मिलता है। अगर मैं duअपने विभाजन की सभी फाइलों पर चलता हूं, तो यह मेल नहीं खाता कि dfदावों का क्या उपयोग किया जाता है। मेरी फ़ाइलों के कुल आकार के लिए इतने सारे अलग-अलग आंकड़े क्यों हैं? कंप्यूटर जोड़ नहीं सकते?

जोड़ने की बात: जब मैं "प्रयुक्त" और "उपलब्ध" कॉलम जोड़ता dfहूं, तो मुझे कुल आंकड़ा नहीं मिलता है। और वह कुल आंकड़ा मेरे विभाजन के आकार से छोटा है। और अगर मैं अपना विभाजन आकार जोड़ूँ तो मुझे मेरी डिस्क का आकार नहीं मिलता है! क्या देता है?

जवाबों:


143

नंबर जोड़ना आसान है। समस्या यह है कि, जोड़ने के लिए कई अलग-अलग संख्याएँ हैं।

एक फ़ाइल का उपयोग डिस्क स्थान कितना करता है?

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

सूक्ष्म जटिलताओं

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

थोड़ा और अधिक तकनीकी, एक सामान्य सरल फाइल सिस्टम में जाकर, अंतरिक्ष को ब्लॉकों में विभाजित किया जाता है । एक विशिष्ट ब्लॉक का आकार 4KiB है। प्रत्येक फ़ाइल ब्लॉकों की एक पूर्णांक संख्या तक ले जाती है। जब तक फ़ाइल आकार ब्लॉक आकार के एक से अधिक नहीं होता है, तब तक अंतिम ब्लॉक केवल आंशिक रूप से उपयोग किया जाता है। तो एक 1-बाइट फ़ाइल और 4096-बाइट फ़ाइल दोनों 1 ब्लॉक लेती है, जबकि एक 4097-बाइट फ़ाइल दो ब्लॉक लेती है। आप इसे duकमांड के साथ देख सकते हैं : यदि आपके फाइलसिस्टम में 4KiB ब्लॉक आकार है, तो du1-बाइट फ़ाइल के लिए 4KiB की रिपोर्ट करेगा।

यदि कोई फ़ाइल बड़ी है, तो फ़ाइल बनाने वाली ब्लॉक की सूची को संग्रहीत करने के लिए अतिरिक्त ब्लॉक की आवश्यकता होती है (ये अप्रत्यक्ष ब्लॉक हैं ; अधिक परिष्कृत फ़ाइल सिस्टम एक्स्टेंट के रूप में इसे अनुकूलित कर सकते हैं )। वे फ़ाइल आकार में नहीं दिखाते हैं, जो ls -lGNU द्वारा रिपोर्ट किए गए हैं du --apparent-size; du, जो आकार के विपरीत डिस्क उपयोग की रिपोर्ट करता है, उनके लिए खाता है।

कुछ फाइलसिस्टम एक ही ब्लॉक में कई फाइल टेल पैक करने के लिए आखिरी ब्लॉक में छोड़ी गई खाली जगह का फिर से उपयोग करने की कोशिश करते हैं । कुछ फाइल सिस्टम (जैसे कि एक्स्ट्रीम 4 चूंकि लिनक्स 3.8 छोटी फाइलों के लिए 0 ब्लॉक का उपयोग करता है (बस कुछ बाइट्स) जो पूरी तरह से इनोड में फिट होते हैं।

मैक्रोस्कोपिक जटिलताओं

आमतौर पर, जैसा कि ऊपर देखा गया है, duफ़ाइल द्वारा उपयोग किए गए ब्लॉक या एक्स्टेंट के आकार का योग कुल रिपोर्ट है ।

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

कुछ फाइल सिस्टम जैसे कि btrfs और zfs सामान्य-उद्देश्य संपीड़न का समर्थन करते हैं ।

उन्नत जटिलताओं

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

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

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

डेडुप्लीकेशन एक स्टोरेज ऑप्टिमाइज़ेशन तकनीक है जिसमें समान ब्लॉक्स को स्टोर करने से बचा जाता है। विशिष्ट डेटा के साथ, डुप्लिकेट की तलाश हमेशा प्रयास के लायक नहीं होती है। एक वैकल्पिक विशेषता के रूप में zfs और btrfs दोनों समर्पण कासमर्थन करते हैं।

duफ़ाइल आकार के योग से कुल क्यों अलग है?

जैसा कि हमने ऊपर देखा है, duप्रत्येक फ़ाइल के लिए रिपोर्ट किया गया आकार सामान्य रूप से फ़ाइल द्वारा उपयोग किए जाने वाले ब्लॉक या extents के आकार का योग होता है। ध्यान दें कि डिफ़ॉल्ट रूप से, ls -lबाइट्स में आकारों को सूचीबद्ध करता है, लेकिन duKiB में या कुछ और पारंपरिक प्रणालियों पर 512-बाइट इकाइयों (क्षेत्रों) में आकारों को सूचीबद्ध करता है ( du -kकिलोबाइट के उपयोग को बल देता है)। अधिकांश आधुनिक unices का समर्थन ls -lhऔर du -hउचित रूप में (किबा, MiB, GiB के लिए) "मानव पठनीय" कश्मीर, एम, जी, आदि suffices का उपयोग कर नंबरों का उपयोग करने के लिए।

जब आप duकिसी निर्देशिका पर चलते हैं , तो यह निर्देशिका ट्री में सभी फाइलों के डिस्क उपयोग को शामिल करता है , जिसमें निर्देशिकाएं भी शामिल हैं। एक निर्देशिका में डेटा (फ़ाइलों के नाम, और फ़ाइल के मेटाडेटा के लिए एक संकेतक) होता है, इसलिए इसे थोड़ी संग्रहण जगह की आवश्यकता होती है। एक छोटी निर्देशिका एक ब्लॉक लेगी, एक बड़ी निर्देशिका को अधिक ब्लॉक की आवश्यकता होगी। किसी निर्देशिका द्वारा उपयोग की जाने वाली संग्रहण की मात्रा कभी-कभी न केवल उन फ़ाइलों पर निर्भर करती है, जिनमें वह सम्‍मिलित होती है, बल्कि वह क्रम भी जिसमें वे सम्मिलित किए गए थे और जिसमें कुछ फाइलें निकाली गई थीं (कुछ फाइल सिस्टम के साथ, यह छेद छोड़ सकती हैं - डिस्क स्थान और प्रदर्शन के बीच एक समझौता ), लेकिन अंतर छोटा होगा (एक अतिरिक्त ब्लॉक यहां और वहां)। जब तुम दौड़ते होls -ld /some/directoryनिर्देशिका का आकार सूचीबद्ध है। (ध्यान दें कि आउटपुट के शीर्ष पर "एनएनएन" लाइन ls -lएक असंबंधित संख्या है, यह सूचीबद्ध वस्तुओं के ब्लॉक में आकार का योग है, जिसे KiB या सेक्टरों में व्यक्त किया गया है।)

ध्यान रखें कि डॉट फाइलेंdu शामिल हैं जो तब तक नहीं दिखाई देती हैं जब तक कि आप या विकल्प का उपयोग नहीं करते हैं ।ls-A-a

कभी-कभी duअपेक्षित योग से कम रिपोर्ट करता है। ऐसा तब होता है जब निर्देशिका ट्री के अंदर हार्ड लिंक होते हैं : duप्रत्येक फ़ाइल को केवल एक बार गिना जाता है।

कुछ फाइल सिस्टम जैसे ZFSकि लिनक्स पर, duकिसी फाइल की विस्तारित विशेषताओं के द्वारा पूर्ण डिस्क स्थान की सूचना नहीं देता है।

सावधान रहें कि यदि किसी निर्देशिका के तहत माउंट बिंदु हैं, तो duइन माउंट बिंदुओं पर सभी फाइलों को गिनेंगे, जब तक कि -xविकल्प नहीं दिया जाता है। इसलिए अगर उदाहरण के लिए आप अपने रूट फाइल सिस्टम में फ़ाइलों का कुल आकार चाहते हैं, तो चलाएं du -x /, नहीं du /

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

नष्ट कर दी गई फाइलें

जब कोई फ़ाइल हटा दी जाती है , तो यह केवल निर्देशिका प्रविष्टि को हटाता है, जरूरी नहीं कि यह फ़ाइल ही हो। वास्तव में किसी फ़ाइल को हटाने के लिए दो स्थितियाँ आवश्यक हैं और इस प्रकार इसकी डिस्क स्थान को पुनः प्राप्त करें:

  • फ़ाइल की लिंक गणना 0 पर ड्रॉप होनी चाहिए: यदि किसी फ़ाइल में कई हार्ड लिंक हैं, तो एक को हटाने से दूसरों पर कोई प्रभाव नहीं पड़ता है।
  • जब तक फ़ाइल किसी प्रक्रिया द्वारा खुली रहती है, तब तक डेटा बना रहता है। केवल तभी जब सभी प्रक्रियाओं ने फ़ाइल को बंद कर दिया है वह फ़ाइल हटा दी गई है। आउटपुट fuser -mया lsofआरोह बिंदु पर उन प्रक्रियाओं को शामिल किया जाता है जिनमें फ़ाइल फ़ाइल सिस्टम पर एक फ़ाइल खुली होती है, भले ही फ़ाइल हटा दी गई हो।
  • भले ही किसी प्रक्रिया में डिलीट की गई फ़ाइल न हो, यदि फ़ाइल किसी loopडिवाइस का बैकएंड है तो फ़ाइल का स्थान पुनः प्राप्त नहीं किया जा सकता है। losetup -a(as root) आपको बता सकता है कि loopवर्तमान में कौन से डिवाइस सेट किए गए हैं और किस फाइल पर हैं। losetup -dडिस्क स्थान को पुनर्प्राप्त करने से पहले लूप डिवाइस को नष्ट कर दिया जाना चाहिए (के साथ )।

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

ये संख्याएँ dfवास्तव में क्या हैं ?

एक सामान्य फाइलसिस्टम में शामिल है:

  • फ़ाइल (निर्देशिकाओं सहित) डेटा और कुछ मेटाडेटा (अप्रत्यक्ष ब्लॉक सहित, और कुछ फ़ाइल सिस्टम पर विस्तारित विशेषताएँ) ब्लॉक।
  • नि: शुल्क ब्लॉक।
  • रूट उपयोगकर्ता के लिए आरक्षित ब्लॉक।
  • सुपरब्लॉक और अन्य नियंत्रण जानकारी।
  • inodes
  • एक पत्रिका

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

फाइलसिस्टम एक्स 2 / एक्सट 3 / एक्सटी 4 में 5% स्थान को मूल उपयोगकर्ता के लिए आरक्षित करता है। यह रूट फाइलसिस्टम पर उपयोगी है, सिस्टम को चालू रखने के लिए यदि यह भरता है (विशेष रूप से लॉगिंग के लिए, और सिस्टम एडमिनिस्ट्रेटर को समस्या को ठीक करते समय डेटा को थोड़ा स्टोर करने देता है)। यहां तक ​​कि डेटा विभाजन के लिए भी /home, जैसे कि आरक्षित स्थान उपयोगी है, क्योंकि लगभग पूर्ण-फ़ाइल सिस्टम विखंडन से ग्रस्त है। लिनक्स विखंडन से बचने की कोशिश करता है (जो कि फाइल एक्सेस को धीमा कर देता है, विशेष रूप से मैकेनिकल डिवाइस जैसे कि हार्ड डिस्क को घुमाने पर) जब फाइल लिखी जा रही होती है, तो कई लगातार ब्लॉक को आवंटित करके, लेकिन अगर लगातार कई ब्लॉक नहीं होते हैं, तो वह काम नहीं कर सकता है ।

एक्सटर्नल फाइलसिस्टम, अप करने के लिए और एक्सटर् 4 सहित, लेकिन btrfs नहीं, फाइल सिस्टम बनाए जाने पर इनोड की निश्चित संख्या को आरक्षित करें । यह महत्वपूर्ण रूप से फाइलसिस्टम के डिजाइन को सरल करता है, लेकिन नकारात्मक पक्ष यह है कि इनोड की संख्या को ठीक से आकार देने की आवश्यकता है: बहुत सारे इनोड्स के साथ, अंतरिक्ष बर्बाद हो जाता है; बहुत कम इनकोड्स के साथ, फ़ाइल सिस्टम अंतरिक्ष से बाहर चलने से पहले इनोड्स से बाहर चला सकता है। कमांड df -iरिपोर्ट करता है कि कितने इनोड उपयोग में हैं और कितने उपलब्ध हैं (फाइलसिस्टम जहां अवधारणा लागू नहीं है, रिपोर्ट 0 हो सकती है)।

tune2fs -lएक ext2 / ext3 / ext4 फाइल सिस्टम वाले वॉल्यूम पर चलने से कुल संख्या और मुफ्त इनोड्स और ब्लॉक सहित कुछ आंकड़े रिपोर्ट होते हैं।

एक और विशेषता जो पदार्थ को भ्रमित कर सकती है वह है सबवोल्यूम्स ( btrfs में समर्थित है , और डेटासेट्स के नाम पर zfs में )। एक से अधिक सबवोल्यूम एक ही स्थान को साझा करते हैं, लेकिन अलग-अलग डायरेक्टरी के पेड़ की जड़ें होती हैं।

यदि एक फाइल सिस्टम नेटवर्क (एनएफएस, सांबा, आदि) पर चढ़ा हुआ है और सर्वर उस फाइलसिस्टम (जैसे सर्वर में /homeफाइलसिस्टम और एक्सपोर्ट/home/bob ) का एक हिस्सा निर्यात करता है , तो dfएक क्लाइंट पर पूरे फाइलसिस्टम के लिए डेटा को दर्शाता है, न कि सिर्फ उस हिस्से के लिए जो क्लाइंट पर एक्सपोर्ट और माउंटेड है।

मेरी डिस्क पर स्थान का उपयोग क्या है?

जैसा कि हमने ऊपर देखा है, रिपोर्ट किया गया कुल आकार dfहमेशा फाइल सिस्टम के सभी नियंत्रण डेटा को ध्यान में नहीं रखता है। यदि आवश्यक हो तो फाइलसिस्टम का सटीक आकार प्राप्त करने के लिए फाइलसिस्टम-विशिष्ट टूल का उपयोग करें। उदाहरण के लिए, ext2 / ext3 / ext4 के साथ, tune2fs -lब्लॉक गणना द्वारा ब्लॉक आकार को चलाएं और गुणा करें।

जब आप एक फाइल सिस्टम बनाते हैं, तो यह आम तौर पर संलग्न विभाजन या वॉल्यूम पर उपलब्ध स्थान को भरता है। कभी-कभी आप एक छोटे फाइल सिस्टम के साथ समाप्त हो सकते हैं जब आप फाइल सिस्टम को चारों ओर घूम रहे हैं या वॉल्यूम का आकार बदल रहे हैं।

लिनक्स पर, lsblkउपलब्ध स्टोरेज वॉल्यूम का अच्छा अवलोकन प्रस्तुत करता है। अतिरिक्त जानकारी के लिए या यदि आपके पास नहीं है lsblk, तो आपके पास क्या विभाजन हैं, यह जांचने के लिए विशेष वॉल्यूम प्रबंधन या विभाजन टूल का उपयोग करें। लिनक्स पर, वहाँ है lvs, vgs, pvsके लिए एलवीएम , fdiskपारंपरिक पीसी शैली ( "एमबीआर") विभाजन (और साथ GPT के रूप में पर हाल ही में सिस्टम) के लिए, gdiskके लिए GPT विभाजन, disklabelबीएसडी डिस्कलेबल, के लिए जुदा , आदि लिनक्स के तहत, cat /proc/partitionsएक त्वरित सारांश देता है। विशिष्ट स्थापनाओं में ऑपरेटिंग सिस्टम द्वारा उपयोग किए जाने वाले कम से कम दो विभाजन या वॉल्यूम होते हैं: एक फाइलसिस्टम (कभी-कभी अधिक), और एक स्वैप वॉल्यूम।

कुछ कंप्यूटरों में एक विभाजन होता है जिसमें BIOS या अन्य नैदानिक ​​सॉफ़्टवेयर होते हैं। यूईएफआई वाले कंप्यूटरों में एक समर्पित बूटलोडर विभाजन होता है।

अंत में, ध्यान दें कि अधिकांश कंप्यूटर प्रोग्राम 1024 = 2 10 की शक्तियों के आधार पर इकाइयों का उपयोग करते हैं (क्योंकि प्रोग्रामर द्विआधारी और 2 की शक्तियों से प्यार करते हैं)। तो 1 kB = 1024 B, 1 MB = 1048576 B, 1 GB = 1073741824, 1 TB = 1099511627776 B,… आधिकारिक तौर पर, इन इकाइयों को kibibyte KiB, mebibyte MiB, आदि के रूप में जाना जाता है , लेकिन अधिकांश सॉफ्टवेयर सिर्फ k या kB की रिपोर्ट करते हैं। एम या एमबी, आदि। दूसरी ओर, हार्ड डिस्क निर्माता व्यवस्थित रूप से मीट्रिक (1000-आधारित इकाइयों) का उपयोग करते हैं। ताकि 1 टीबी ड्राइव केवल 931 GiB या 0.904 TiB हो।


1
@ कीवी tune2fsको फाइल सिस्टम में ब्लॉक डिवाइस तक रीड एक्सेस की आवश्यकता होती है, जिसमें सामान्य रूप से रूट की आवश्यकता होती है क्योंकि इससे आप किसी भी फाइल की सामग्री को पढ़ सकते हैं।
गाइल्स

20
मुझे पता है कि एसई में 'थैंक यू' को हतोत्साहित किया जाता है, लेकिन गिल्स आप इस शानदार पोस्ट के लिए बहुत बड़े 'थैंक्यू' के लायक हैं।
१०:१५ पर डॉटान्चेन

1
मुझे याद है कि एक कार्ड कैटलॉग देखने पर जब मैं 6 साल का था। मुझे आश्चर्य है कि कितने लोगों को नहीं पता होगा कि वे क्या हैं?
इजाकाता

1
@ illumin don't यह मेरे लिए बहुत उन्नत सोलारिस है, मुझे नहीं पता कि यह किस स्तर पर फिट बैठता है।
गाइल्स

1
du करता अप्रत्यक्ष ब्लॉकों के लिए खाते। जैसा कि रिपोर्ट किया गया है, फ़ाइल आकार से मुख्य अंतर है ls -l
स्टीफन चेजलस

4

फ़ाइल आकार और डिस्क स्थान की गणना करने के लिए जटिलताओं का एक संक्षिप्त सारांश:

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

    लेकिन यह केवल 1 अतिरिक्त निर्देशिका प्रविष्टि ले सकता है यदि फ़ाइल किसी अन्य फ़ाइल की कड़ी है। यह ब्लॉक के एक ही सेट का एक और संदर्भ होगा।

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

यह केवल फ़ाइल सिस्टम की सतह को खरोंच कर रहा है और यह अत्यधिक सरलीकृत है। यह भी याद रखें कि अलग फाइल सिस्टम अलग तरीके से काम करते हैं।

statइस जानकारी के कुछ स्थान पर बहुत मददगार है। यहां बताया गया है कि स्टेट का उपयोग कैसे करें और इसके लिए क्या अच्छा है: http://landoflinux.com/linux_stat_command_exandples.html


1
1-बाइट फ़ाइल आमतौर पर एक ब्लॉक लेगी, न कि 8. एक हार्ड लिंक बनाने से एक इनोड नहीं बनता है: एक फाइल एक इनोड होती है, चाहे फ़ाइल के कितने भी लिंक हों। एक हार्ड लिंक बनाने के लिए केवल निर्देशिका प्रविष्टि के लिए स्थान की आवश्यकता होती है।
गाइल्स

सुधारों के लिए धन्यवाद, माना जाता है कि मेरी स्मृति पुनः: ext2 का गहराई से अध्ययन करना अब थोड़ा फ़र्ज़ी है। मैं स्टेट रे के आउटपुट का अनुसरण कर रहा था: ब्लॉक काउंट - यह अत्यधिक महसूस करता था लेकिन यही है। मैं जवाब सही करूंगा।
पेड्रो

1
ऐसा इसलिए है क्योंकि 1 ext2 ब्लॉक = 8 स्टेट ब्लॉक, अगर ext2 फाइलसिस्टम 4kB ब्लॉक का उपयोग करता है: ऐतिहासिक कारणों से 512-बाइट ब्लॉक में स्टेट काउंट। देखें unix.stackexchange.com/questions/14409/...
गाइल्स

2

मैं यहां विभिन्न मामलों का वर्णन करूंगा जो अलग duहोने का कारण बनता है df

dfफ़ाइल सिस्टम आवंटित ब्लॉकों की गणना करता है, duप्रत्येक फ़ाइलों के आकार की जानकारी का उपयोग करता है। एक अंतर के कई कारण हो सकते हैं:

1) अनलिंकड (हटाई गई) फाइलें जो अभी भी एप्लिकेशन द्वारा खुली हैं। फ़ाइल जानकारी गायब है, ब्लॉक अभी भी आवंटित किए गए हैं। lsof +aL1 <filesystem>आपको प्रक्रियाओं को पहचानने में मदद करेगा। अधिकांश समय आपको रिक्त स्थान खाली करने के लिए प्रक्रियाओं को मारना पड़ता है (यह प्रक्रिया पर निर्भर करता है, कभी-कभी एक कॉन्फ़िगरेशन लोड पर्याप्त होता है)।

2) माउंट के नीचे की फाइलें छुपी हुई हैं duलेकिन नहीं dfdebugfsआप फाइल सिस्टम पढ़ने में मदद कर सकते हैं।

$ sudo debugfs 
debugfs 1.42.12 (29-Aug-2014)
debugfs:  open /dev/xxx    (the desired file system  device)
debugfs:  cd /boot
debugfs:  ls -l 
 1966081   40755 (2)      0      0    4096 26-May-2016 16:28 .
      2   40555 (2)      0      0    4096 11-May-2016 10:43 ..
 1974291  100644 (1)      0      0       0 26-May-2016 16:28 bob   <---<<< /boot/bob is hidden by /boot fs

3) विरल फाइलें जो वास्तविकता से बड़ी लगती हैं। गैर आबंटित ब्लॉकों की गणना नहीं की जाती है, dfलेकिन स्पष्ट फ़ाइल आकार की गणना की जाती है du

ध्यान दें कि हार्ड लिंक मूर्ख नहीं हैं du


2

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

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

छोटे संख्यात्मक दूसरों के द्वारा समझाया मतभेद के अलावा, मुझे लगता है कि duऔर dfउपयोगिताओं बहुत अलग प्रयोजनों की सेवा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.