df का कहना है कि डिस्क भरी हुई है, लेकिन यह नहीं है


58

Ubuntu 10.04 पर चलने वाले एक वर्चुअलाइज्ड सर्वर पर, df निम्नलिखित की रिपोर्ट करता है:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.4G  7.0G     0 100% /
none                  498M  160K  498M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   92K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
/dev/sda3             917G  305G  566G  36% /home

यह मुझे दो कारणों से हैरान कर रहा है: 1.) df का कहना है कि / dev / sda1, / पर घुड़सवार, जिसमें 7.4 गीगाबाइट क्षमता है, जिसमें से केवल 7.0 गीगाबाइट उपयोग में हैं, फिर भी यह रिपोर्ट करता है / 100 प्रतिशत पूर्ण है; और 2.) मैं फ़ाइलों को / पर बना सकता हूँ ताकि उसमें स्पष्ट रूप से जगह बची रहे।

संभवतः प्रासंगिक है कि निर्देशिका / www एक प्रतीकात्मक लिंक / घर / www है, जो एक अलग विभाजन (/ dev / sda3, / घर पर घुड़सवार) पर है।

क्या कोई इस पर सुझाव दे सकता है कि यहां क्या हो रहा है? सर्वर समस्या के बिना काम करता प्रतीत होता है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि विभाजन तालिका, फ़ाइल सिस्टम या कुछ और के साथ कोई समस्या नहीं है, जिसके परिणामस्वरूप बाद में आघात (या विस्फोट) हो सकता है।


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

3
प्रथम स्थान मैं देखूँगा / tmp है। एक और संभावना यह है कि आपके पास एक हटाई गई फ़ाइल है जो एक चल रहे कार्यक्रम को पकड़े हुए है। मुझे लगता है आप चला सकते हैं 'lsof | उन को खोजने के लिए मूल के रूप में नष्ट कर दिया '।
स्कॉट

जवाबों:


103

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

आप इससे जांच कर सकते हैं sudo lsof +L1


8
यह मेरे लिए रहस्य का हल है। मैंने सेवा को पुनः आरंभ किए बिना एक बड़ी लॉग फ़ाइल uwsgi से हटा दी। जब df -ahमैंने पूछा , तो मुझे डिस्क फुल मिल गई, लेकिन du -sh /बताती है कि मुझे खाली जगह चाहिए। Uartgi को पुनः प्राप्त करने के बाद मुझे बहुत सारी खाली जगह मिल गई!
फैबियो मोंटेफुस्कोलो

मेरे पास 40G का मूल्य था, जो लिम्बो और lsof + L1 में अटका हुआ था, मुझे एक्स-रे दृष्टि दी कि क्या हुआ; ;-) मुझे सेवा को पुनः आरंभ करना था।
पीजे ब्रुनेट

46

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

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


1
आपका डिस्क पूर्ण क्यों है , के प्रश्न के लिए , 7G वास्तव में इतना स्थान नहीं है। आप एक विभाजन / फाइलसिस्टम ( ) के तहत सब कुछ डंप करने के लिए भी दिखाई देते हैं /। इसे आम तौर पर बैड थिंग माना जाता है (क्योंकि अगर कुछ चला जाता है तो हाइवर /भर जाता है , और दुनिया खत्म हो जाती है) लेकिन लिनक्स वितरण अभी भी इसे करने में बना हुआ है क्योंकि यह "सरल" है। मैं /var(log। /var/log) को भारी लॉगफ़ाइल्स के लिए देख कर शुरू करूँगा । du -hs /(रूट के रूप में) आपको सबसे बड़ी निर्देशिकाओं को खोजने में मदद करेगा और संभवत: आपको यह संकेत देगा कि सफाई की क्या जरूरत है।
voretaq7


17

अधिकांश लिनक्स फाइल सिस्टम केवल रूट उपयोगकर्ता के उपयोग के लिए 5% स्थान आरक्षित करते हैं।

आप इसे उदाहरण के साथ देख सकते हैं

dumpe2fs /dev/sda1 | grep -i reserved

आप आरक्षित राशि का उपयोग कर बदल सकते हैं:

tune2fs -m 0 /dev/sda1

ज्यादातर मामलों में सर्वर ठीक काम करना जारी रखेगा - यह मानते हुए कि सभी प्रक्रियाओं को 'रूट' के रूप में चलाया जा रहा है।


8

मुझे यह समस्या थी और इस तथ्य से चकित था कि विभिन्न बड़ी फ़ाइलों को हटाने से स्थिति में सुधार नहीं हुआ (5% बफर के बारे में पता नहीं था) वैसे भी यहाँ कुछ सुराग निम्नलिखित हैं।

जड़ से नीचे सबसे बड़ी निर्देशिकाओं का दोहराव करके पता चला: -

du -sh */ 

जब तक मुझे वेबसर्वर लॉग फ़ाइलों के लिए एक निर्देशिका नहीं मिली, जिसमें कुछ बड़े पैमाने पर लॉग थे

जिसे मैंने काट दिया

:>lighttpd.error.log

अचानक df -h नीचे 48% इस्तेमाल किया गया था!


14
यह वास्तव में "के साथ समाप्त होना चाहिए ... फिर मैंने लॉग रोटेशन स्थापित किया।"
हयालसी

hayalci: पाया गया कि लॉगरोटेशन गलत निर्देशिका की ओर इशारा कर रहा था।
zzapper

8

पहले से सुझाए गए कारणों के अलावा, कुछ मामलों में यह निम्नलिखित भी हो सकता है:

  • मौजूदा फ़ोल्डर जो डेटा से भरा है, एक भिन्न डिस्क को "ओवर" किया गया है
  • du माउंटेड डिस्क के खर्च किए गए आकार की गणना करेगा और df वास्तव में खर्च किया हुआ दिखाएगा
  • समाधान: (जब संभव हो) सभी गैर-रूट डिस्क को अनमाउंट करें और du -md 1फिर से आकार की जांच करें। छिपे हुए फ़ोल्डर को किसी अन्य स्थान पर ले जाकर या अलग स्थान पर माउंट करके स्थिति को ठीक करें ।

आप df के अलावा अन्य आरोह बिंदु कैसे खोज सकते हैं?
होगन

@ होगन: शायद "माउंट" या "कैट / वगैरह / फ़ॉस्टब" कहने से मदद मिलेगी?
रॉबर्ट लूजो

5

df -hमूल्यों को गोल कर रहा है। यहां तक ​​कि प्रतिशत भी गोल हैं। Omit- -hand आप महीन दानेदार अंतर देखते हैं।

ओह। और ext3 और वास्तव में इस समस्याग्रस्त नक्षत्र के लिए फ़ाइल-सिस्टम के लिए एक प्रतिशत (डिफ़ॉल्ट 5%) आरक्षित करता है। यदि आपका रूट फाइल सिस्टम वास्तव में पूर्ण होगा (0 बाइट शेष) तो आप सिस्टम को बूट नहीं कर सकते। तो आरक्षित भाग इसे रोकता है।


यह भी हो सकता है कि वह मुफ़्त इनोड से बाहर भाग गया हो। इनसाइड उपयोग प्राप्त करने के लिए 'df -i' चलाएँ।
एंड्रयू केस

वह जानकारी उपलब्ध नहीं कराई है कि डिस्क है पूर्ण। वह केवल यह सोचता है कि डिस्क भरी हुई है। त्रुटि के बिना 100% उपयोग किया जाने वाला स्थान केवल "वस्तुतः पूर्ण" है।
मेल्क

1

मैंने कई पुस्तकालयों का एक बड़ा अद्यतन किया था और अनावश्यक पुस्तकालयों और अस्थायी फ़ाइलों का एक बहुत कुछ था, इसलिए मैं "/" फ़ोल्डर का उपयोग करके मुक्त स्थान देता हूं:

apt-get install -f
sudo apt-get clean

और अपना कचरा खाली करो


यह डिस्क उपयोग को कम करने के लिए उचित सामान्य सलाह है, लेकिन यह इस सवाल को संबोधित नहीं करता है कि डीएफ क्यों कहता है कि डिस्क पूर्ण है जब यह नहीं है।
एंड्रयू शुलमैन

0

/ खोया + मिला चेक करें, मेरे पास एक सिस्टम था (सेंटो 7) और / खोए हुए फ़ाइल में से कुछ ने सभी जगह को खा लिया।


0

यदि आपका विभाजन btrfs है, तो एक सबवोल्यूम जगह ले सकता है। एक btrfs फाइल सिस्टम में कई सबवोल्यूम हो सकते हैं, जिनमें से केवल एक माउंट किया जाता है। आप btrfs subvolume list <dir>सभी तोड़फोड़ों को सूचीबद्ध करने और btrfs subvolume delete <dir>/<subvolume>एक को हटाने के लिए उपयोग कर सकते हैं । सुनिश्चित करें कि आप डिफ़ॉल्ट रूप से माउंट किए गए एक को नहीं हटाते हैं।

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