डिस्क धीरे-धीरे भर रही है लेकिन कोई दृश्य फ़ाइल आकार नहीं बदलता है


16

df

 Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       30830588 22454332   6787120  77% /
none                   4        0         4   0% /sys/fs/cgroup
udev             1014124        4   1014120   1% /dev
tmpfs             204996      336    204660   1% /run
none                5120        0      5120   0% /run/lock
none             1024976        0   1024976   0% /run/shm
none              102400        0    102400   0% /run/user

वह 77% कल सिर्फ 60% था और यह कुछ दिनों में 100% तक भर जाएगा।

मैं कुछ समय से फ़िल्म्स की निगरानी कर रहा हूँ:

sudo du -sch /*


9.6M    /bin
65M     /boot
224K    /build
4.0K    /dev
6.5M    /etc
111M    /home
0       /initrd.img
0       /initrd.img.old
483M    /lib
4.0K    /lib64
16K     /lost+found
8.0K    /media
4.0K    /mnt
4.0K    /opt
du: cannot access ‘/proc/21705/task/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/task/21705/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/fdinfo/4’: No such file or directory
0       /proc
21M     /root
336K    /run
12M     /sbin
8.0K    /srv
4.1G    /swapfile
0       /sys
4.0K    /tmp
1.1G    /usr
7.4G    /var
0       /vmlinuz
0       /vmlinuz.old
14G     total

यह मुझे (कमोबेश) हर दिन एक ही नंबर दे रहा है। वह 14G कुल डिस्क आकार के आधे से भी कम है। बाकी कहाँ जा रहा है?

मेरा लिनक्स ज्ञान बहुत गहरा नहीं जाता है।

क्या फाइलों के लिए यह संभव है कि यहां कोई दिखाई न दे? क्या किसी अन्य तरीके से जगह आवंटित करना संभव है?


1
7.4 G आपके /varस्ट्राइक के लिए मुझे असामान्य रूप से बड़ा करता है। मुझे संदेह है कि एक लॉग फ़ाइल तेजी से भर रही है।
जोस

4
कोई हटाई गई फ़ाइल? क्या होता है lsof -b 2>/dev//null | grep deleted(आउटपुट अधिक बड़ा हो सकता है, पुनरावृत्तियाँ प्रविष्टियाँ छोड़ दें जो ठीक लगती हैं)
muru

@ एमआरयू हाँ फाइलों का एक गुच्छा इस तरह से दिखाई देता है। इसका क्या मतलब है? वे कहां हैं? मैं इसे कैसे साफ करूं?
nizzle

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

1
ध्यान दें कि आप एक दूसरा प्रश्न करना चाहते हैं, जिसमें आपके logrotate.conf के साथ क्या गलत है, क्योंकि अपाचे को बंद फाइलों में तब लॉग किया जाना चाहिए जब लॉगेशन होता है आदि। मैं यह कहता हूं क्योंकि रिबूट अब समस्या को ठीक कर देता है लेकिन जब तक मैं कुछ याद नहीं कर रहा हूं, आपका मुद्दा समय-समय पर पुनरावृत्ति करना चाहिए और कभी भी सप्ताह में रिबूट करना दुखद है। [मैं सुझाव देता हूं कि अगर यह पुनरावर्ती होता है, तो यह देखते हुए कि सेवा httpd पुनरारंभ (या पुनः लोड) फिर से अस्थायी रूप से समस्या को दूर करता है
फ़ून

जवाबों:


28

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

हटाई गई, अभी भी उपयोग की गई फ़ाइलों को देखने के लिए:

lsof -b 2>/dev/null | grep deleted

आपके पास बड़ी संख्या में हटाई गई फ़ाइलें हो सकती हैं - जो कि अपने आप में कोई समस्या नहीं है। बड़ी हो रही एक हटाई गई फ़ाइल एक समस्या है।

एक रिबूट को इसे ठीक करना चाहिए, लेकिन यदि आप रिबूट नहीं करना चाहते हैं, तो शामिल किए गए एप्लिकेशन ( lsofआउटपुट में पहला कॉलम ) की जांच करें और उचित रीज़न को बंद करें या बंद करें।

यदि आप कभी कुछ देखते हैं जैसे:

zsh   1724   muru   txt   REG   8,17   771448   1591515  /usr/bin/zsh (deleted)

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

फ़ाइलें /dev/shmसाझा की गई मेमोरी ऑब्जेक्ट्स हैं और डिस्क पर बहुत जगह नहीं घेरती हैं (इनकोड संख्या सबसे अधिक, मुझे लगता है)। उन्हें सुरक्षित रूप से अनदेखा भी किया जा सकता है। नामित फ़ाइलें vteXXXXXX(सूक्ति टर्मिनल, टर्मिनेटर, आदि) एक VTE आधारित टर्मिनल एमुलेटर से लॉग फाइल कर रहे हैं। ये हो सकता है बड़ा हो, अगर आप के साथ एक टर्मिनल विंडो खुली बहुत सारे (और मैं मतलब बहुत सारे सामान उत्पादन होने का)।


1
ओपी की प्रणाली पर, संपूर्ण / देव एक udv आरोह बिंदु है, इसलिए वहाँ के तहत कुछ भी मुख्य फाइल सिस्टम पर कोई स्थान नहीं लेता है। इसके अलावा, / dev / shm को आम तौर पर वैसे भी एक tmpfs के रूप में लागू किया जाता है, जो कि सिर्फ एक माउंट पॉइंट है, इसलिए इसके अंतर्गत आने वाली अलग-अलग फाइलें भी डायरेक्टरी एंट्री स्पेस नहीं लेती हैं।
केविन

3

Muru द्वारा उत्कृष्ट उत्तर में जोड़ने के लिए:

  • df डिस्क पर आकार दिखाता है,
  • और डु फाइलों की सामग्री के कुल आकार को दर्शाता है।

हो सकता है कि आप जो डु के साथ नहीं देखते हैं वह कई, कई छोटी फ़ाइलों की उपस्थिति है ... (के अंतिम कॉलम को df -iदेखें और देखें कि क्या इनोड की संख्या (यानी, फ़ाइलों की) बहुत अधिक ओवरटाइम भी बढ़ जाती है)

यदि आपके पास ऐसा हो, तो 1'000'000 (1 मिलियन) छोटी 1-बाइट फ़ाइलों के साथ, du1'000'000 बाइट्स के रूप में गिना जाएगा , मान लीजिए कि 1Mb (... शुद्धतावादी, कृपया क्रैंग न करें)

लेकिन डिस्क पर, प्रत्येक फ़ाइल 2 चीजों से बनी होती है:

  • 1 इनकोड (फ़ाइल के डेटा की ओर इशारा करते हुए), और वह इनकोड 16kb (!) हो सकता है।
  • और प्रत्येक फ़ाइल के डेटा (= फ़ाइल की सामग्री) को डिस्क ब्लॉक पर रखा जाता है, और उन ब्लॉकों में कई फ़ाइल डेटा (आमतौर पर ...) नहीं हो सकते हैं, इसलिए आपका 1 बाइट डेटा कम से कम 1 ब्लॉक पर कब्जा कर लेगा

इस प्रकार, एक मिलियन फाइलें 1-बाइट फाइलें 1'000'000'000 * size_of_a_blockडेटा के लिए कुल स्थान पर कब्जा कर 1'000'000'000 * size_of_an_inodeलेंगी , साथ ही इनोड का आकार ... 1 मिलियन "1-बाइट" फ़ाइलों के लिए डिस्क उपयोग की कई Gb की राशि हो सकती है।

यदि आपके पास 1024-बाइट ब्लॉक हैं, और एक और 256 बाइट्स इनोड का आकार है, तो आपकी 1'000'000 फाइलें लगभग 1Mb के रूप में बताई जाएंगी du, लेकिन डिस्क पर लगभग 1.25Gb (जैसा कि देखा गया है df) गिना जाएगा ! (या यहां तक ​​कि 2 जीबी अगर प्रत्येक इनोड को भी 1 समर्पित डिस्क ब्लॉक पर होना चाहिए ... मुझे नहीं पता कि यह मामला है)


1
जब तक आप स्पष्ट रूप से एक विकल्प ( -bया --apparent-size) का उपयोग नहीं करते हैं जो duकिसी फ़ाइल का स्पष्ट आकार दिखाने के लिए कहता है, duवास्तव में हमेशा फ़ाइल के डिस्क पर आकार दिखाएगा (कुल ब्लॉक समय का उपयोग ब्लॉक की संख्या)। यह वास्तव में, फ़ाइल के स्पष्ट आकार की तुलना में या तो बड़ा (सामान्य मामला) या छोटा (विरल फ़ाइलों के मामले में) हो सकता है।
जोनाथन कॉलन

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