लिनक्स फाइल सिस्टम; df & du का उपयोग करके आकार की गणना में अंतर


8

जब मैं चलाता हूं तो dfयह दिखाता है कि रूट डिवाइस भरा हुआ है।

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  9.4G     0 100% /

मैंने inodeउपयोग को देखा और रूट डिवाइस के लिए बहुत अधिक स्थान उपलब्ध है

Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1               640K    103K    538K   16% /

लेकिन, जब मैं duकमांड चलाता हूं , तो पता चलता है कि मैंने केवल इसका उपयोग किया 2Gहै 9.9G

ip-XXX-XXX-XXX-XXX:/$ du -xh --max-depth=1
14M ./etc
4.0K ./mnt
96K ./tmp
3.5M ./bin
0   ./sys
964K ./boot
4.0K ./srv
0   ./dev
55M ./lib
25M ./root
1.1G ./usr
4.0K ./opt
846M ./var
4.3M ./sbin
23M ./home
16K ./lost+found
0   ./proc
2.0G .

यह सिर्फ मुझे पागल कर रहा है और दिलचस्प भी। रूट डिस्क /फुल होने के बाद से यह हमारे लिए बड़ी समस्या है और हमारी साइट के कुछ फंक्शन फेल हो रहे हैं।

कृपया इस समस्या को हल करने में (समझने में) मेरी मदद करें।

धन्यवाद।



@ जैसे आपने कहा, मैं भागा du -x /और मैं देखता हूं कि केवल 2 जी का उपयोग किया जाता है और मैंने इनोड आकार की गणना की है 160M। इसने मुझे सामान को समझने में मदद की लेकिन मैं इस समस्या को हल करना चाहता हूं।
राकेश शंकर

क्या आप duजड़ के रूप में चले ? अन्यथा यह केवल उन फ़ाइलों पर रिपोर्ट कर सकता है जिन पर आप पहुंच सकते हैं।
गिल्स एसओ- बुराई को रोकें '

@Gilles मैं के रूप में चल रहाroot
राकेश शंकर

मेरे पास यहां महान ncduकार्यक्रम के अलावा अन्य जोड़ने के लिए बहुत कुछ नहीं है , जो डिस्क उपयोग की कल्पना करने में मदद करता है।
रोब

जवाबों:


4

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

dfइन फ़ाइलों द्वारा उपयोग किए गए स्थान को देखता है क्योंकि यह सिर्फ यह देखता है कि डिवाइस पर कितना स्थान आवंटित किया गया है, लेकिन duउन्हें नहीं देखता क्योंकि कोई भी समान निर्देशिका प्रविष्टियां नहीं हैं।

इस तरह से "हिडन" इस्तेमाल की गई जगह को तभी मुक्त किया जा सकता है जब डिलीट की गई फाइलों को बंद करने वाली प्रक्रियाएं उन्हें बंद कर दें। आप इन प्रक्रियाओं को fuserकमांड के साथ पा सकते हैं और उन्हें समाप्त कर सकते हैं (या, कई डेमॉन के लिए, उन्हें किसी भी खुली फाइल को बंद करने और फिर से खोलने के लिए कहकर एक संकेत भेजें)।


धन्यवाद, अच्छी जानकारी, कुछ (अधिक) मुझे आज समझ में आया। लेकिन एक hiddenइस्तेमाल की हुई जगह को खोजने के लिए , मैं fuserउन सभी फाइलों को देखने के लिए कमांड को चलाने की कोशिश करता हूं जो एक प्रक्रिया द्वारा उपयोग की जा रही हैं, लेकिन बिना लिंक किए - मुझे कोई भी नहीं मिला। क्या आपके पास कोई आदेश या दिशा है जो मुझे इसे खोजने के लिए प्रेरित करती है? यह वह आज्ञा है जिसका मैं उपयोग करता हूंfuser -v -a /
राकेश शंकर

मुझे छिपी हुई जगह से छुटकारा पाने के लिए इसे रिबूट करना पड़ा, लेकिन मैं उन छिपी हुई फाइलों को हटाने के लिए एक उचित समाधान नहीं ढूंढ सका।
राकेश शंकर

1

कई बार ऐसा हुआ है जब डिस्क पूरी भर जाती है, तो इसे रिबूट / रिमाउंट तक भ्रमित किया जा सकता है कि डिस्क अभी भी भरी हुई है, तब भी जब आपने फ़ाइलों का लोड हटा दिया हो।


मैं इसे रीबूट नहीं कर सकता क्योंकि यह एक प्रोडक्शन साइट है। लेकिन मैं एक समाधान की तलाश में हूं जो मुझे इन छिपे हुए स्थान को खोजने और इसे वापस लाने में मदद कर सके।
राकेश शंकर

शायद यह उत्पादन हो लेकिन कभी-कभी एक रिबूट ही एकमात्र उत्तर होता है। यह आपकी रूट डिस्क होने की दुर्भाग्यपूर्ण समस्या है और आपका सारा ओएस इस पर है। यही कारण है कि कई लोग tmp, var, home इत्यादि का उपयोग अन्य डिस्क पर होने की वकालत करते हैं, क्योंकि वे इसके बाद रिमूव किए जा सकते हैं। यह अधिक सामान्य प्रतीत होता है कि OS को पता ही नहीं चलता कि रिक्ति डिस्क पर उपलब्ध है।
बगफाइंडर

1

मेरी तरफ, मैंने डिस्क स्थान को वापस पाने के लिए बस syslogd को पुनः आरंभ किया। मैं 3GB गायब था! मेरा सर्वर 250 दिन पुराना था और चल रहा था।


0

अनुप्रयोग को पुनरारंभ किए बिना रिक्त स्थान को साफ़ करने का एक तरीका है। यहाँ विवरण हैं:

  1. मान लीजिए कि आपके पास fooabc.log नामक 2 GB फ़ाइल बनाने और चलाने की प्रक्रिया है । अब कहते हैं कि इस ablog को किसी और ने हटा दिया है।

  2. fooपीआईडी प्राप्त करें (चलो 123 कहते हैं)। तो /proc/123/fdद्वारा खोले गए फ़ाइल विवरणों की सूची दिखाएंगे foo। Abc.log वाला एक हटाए गए के रूप में दिखाएगा। मान लीजिए कि fdabs.log 111 है। यदि आप चलाते हैं less /proc/123/fd/111, तो यह आपको 2 GB डेटा दिखाएगा।

  3. भागो echo " " > /proc/123/fd/111। यह रिक्त स्ट्रिंग के साथ सामग्री को अधिलेखित कर देगा। इस कमांड के बाद यदि आप कोशिश करते हैं तो dfयह अतिरिक्त 2 जीबी दिखाएगा जिसे एबॉगल साफ करके बरामद किया जाएगा।

बस। मैंने CentOS पर यह कोशिश की और यह काम करता है।


यह जानने के लिए एक उपयोगी चीज है। लेकिन यह सवाल का जवाब नहीं है।
इसहाक राबिनोविच

क्षमा करें, मेरी एन्स डिस्क स्पेस को साफ करने के लिए अधिक लक्षित थी यदि आप उस प्रक्रिया आईडी को जानते हैं जिसने फ़ाइल को हटा दिया है। इस विशिष्ट मामले के लिए, आपको / proc / [0-9] * / fd में सभी फाइलों से गुजरना होगा, हटाए गए लोगों को grep करना होगा, और ऊपर उल्लिखित तर्क का पालन करना होगा।
कौस्तुभ साठे

यदि आप वास्तव में उत्सुक हैं कि कौन सी फ़ाइल डिस्क स्थान रिसाव का कारण बन रही थी, तो एक बार में हटाए गए फ़ाइल पर साफ करें, हर बार डीएफ आउटपुट की जांच करें और इस जानकारी को लॉग करें।
कौस्तुभ साठे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.