मैं खाली स्थान के इस निरंतर नुकसान को कैसे रोकूं?


15

मैं उबंटू चला रहा था, सामान्य रूप से, जब अचानक मुझे एक डायलॉग बॉक्स मिला, जिसमें कहा गया था कि मेरे पास केवल 1.2 जीबी खाली जगह बची है। एक घंटे पहले, मेरे पास 30 जीबी मुक्त स्थान था।

मैंने कुछ सामान हटा दिया और 25 जीबी तक मुफ्त स्थान लाया। लेकिन इसमें कमी जारी है। मैंने पुरानी लॉग फ़ाइलों को हटाने की कोशिश की और लॉग फ़ाइलों और इस तरह से कम कर दिया, और यह लगातार घटता जा रहा है!

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

मुझे नहीं पता क्या करना है। मैं कारण कैसे खोज सकता हूं, और अपने खाली स्थान को कम होने से रोक सकता हूं?

यहाँ से उत्पादन है sudo du -sh /var/* ~/.xsession-errors:

13M /var/backups
204M    /var/cache
112M    /var/crash
4.0K    /var/games
503M    /var/lib
4.0K    /var/local
0       /var/lock
9.5G    /var/log
85M     /var/mail
4.0K    /var/metrics
24K     /var/opt
0       /var/run
1.7M    /var/spool
391M    /var/tmp
11G     /var/tvmobili
20K     /var/www
224K    /home/school/.xsession-errors

2
क्या आप sudo du -sh /var/* ~/.xsession-errorsकृपया पोस्ट को एडिट करके कृपया आउटपुट को बढ़ा सकते हैं ? (अगर मैं मूर्खतापूर्ण कुछ हो रहा हूं तो मैं उन दो स्थानों को उड़ाने की उम्मीद करूंगा)। अन्यथा, मैं एलियाह के साथ हूं - यह डिस्क मुद्दों का संकेत है। इसे गंभीरता से लें।
ओली

जवाबों:


26

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

यदि आपकी आंखों के सामने कोई फ़ाइल बढ़ रही है, और आपको पता नहीं है कि कौन सा प्रोग्राम इसे लिख रहा है, तो आप इसे आसानी से ढूंढ सकते हैं। यहाँ एक उदाहरण है। किसने /var/log/syslogखोला है? हम fuserकमांड का उपयोग करते हैं :

# fuser /var/log/syslog
/var/log/syslog:      602

केवल एक प्रक्रिया /var/log/syslogखुली है। यह 602 प्रक्रिया है। वह क्या है? हमें परेशान न करें psऔर grep, लेकिन /procसीधे फाइल सिस्टम को देखें:

# ls -l /proc/602/exe
lrwxrwxrwx 1 root root 0 Mar 29 17:45 /proc/602/exe -> /usr/sbin/rsyslogd

अहा, यह है rsyslogd। हम हैरान नहीं कर रहे हैं कि rsyslogdहै /var/log/syslog/खुला।

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

# fuser /var/log/huge-annoying-file
/var/log/huge-annoying-file:   1234 23459

ऊप्स! दो प्रक्रियाओं में यह खुला है: 1234 और 23459। आइए देखें कि वे क्या कर रहे हैं:

# strace -p 1234
Process 1234 attached - interrupt to quit
select(1, NULL, NULL, NULL, {9, 922666}

यह कुछ नहीं कर रहा है, बस एक selectकॉल में अवरुद्ध है । ट्रेस को तोड़ने के लिए Ctrl-C:

select(1, NULL, NULL, NULL, {9, 922666}^C <unfinished ...>

अगले एक की जाँच करें:

# strace -p 23459
write(5, "Useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
write(5, "More useless garbage ..."..., 512) = 512
^C

उफ़, जो लगातार लिख रहा है। यह बुरा होना चाहिए। हम यह भी जाँच सकते हैं कि फाइल डिस्क्रिप्टर 5 जिस प्रक्रिया को लिख रहा है वह वास्तव में बड़ी फाइल है:

# ls -l /proc/23459/fd/5
lr-x------ 1 root root 64 Apr  3 23:39 /proc/23459/fd/5 -> /var/log/huge-annoying-file

मुझे संदेह नहीं है कि आपके पास एक भ्रष्ट फाइल सिस्टम है, लेकिन एक पूर्ण जांच को मजबूर करने के लिए, आपको एक डीवीडी बूट करने की आवश्यकता नहीं है।

सबसे पहले, अपने फाइलसिस्टम की अधिकतम माउंट गिनती सेटिंग की समीक्षा करें। Df कमांड का उपयोग करके अपने विभाजन को पहचानें। एक उबंटू प्रणाली पर उदाहरण मैं यहाँ है:

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       18062108 5499320  11645284  33% /
udev              392152       4    392148   1% /dev
tmpfs             159768     768    159000   1% /run
none                5120       0      5120   0% /run/lock
none              399416     200    399216   1% /run/shm
/dev/sr0           43668   43668         0 100% /media/VBOXADDITIONS_4.1.4_74291

आप देख सकते हैं कि /फाइलसिस्टम आरोहित है /dev/sda1। तो /dev/sda1रूट विभाजन का भंडारण उपकरण है (और इस विशेष प्रणाली में एकमात्र विभाजन)।

आइए उस फाइलसिस्टम की कुछ विशेषताओं को देखें। यह माउंट होने के बावजूद सुरक्षित है। कमांड ने बहुत सारे आउटपुट को प्रायोजित किया। यहाँ एक अंश है:

$ dumpe2fs /dev/sda1
dumpe2fs 1.42 (29-Nov-2011)
Filesystem volume name:   <none>
Last mounted on:          /
[ ... SNIP ... ]
Last mount time:          Fri Mar 29 17:45:18 2013
Last write time:          Tue Mar  5 09:08:03 2013
Mount count:              22
Maximum mount count:      22
[ ... SNIP ... ]

अरे देखो, माउंट की गिनती अधिकतम माउंट गिनती के बराबर है। अगली बार जब मैं रिबूट करूंगा, तो एक फाइलसिस्टम जांच होगी। महत्वपूर्ण बात यह है कि माउंट की गिनती एक सकारात्मक मूल्य है। यदि आपका शून्य है, तो इसे कुछ सकारात्मक मान में बदलें जैसे 22 का उपयोग करना tune2fs -c 22 /dev/whatever। शून्य का मतलब है कि विभाजन को माउंट किए जाने के बिना चेक को कभी भी मजबूर नहीं किया जाता है। शायद ही कभी रिबूट सिस्टम को यहां कम मान होना चाहिए। एक सर्वर जो एक वर्ष में एक बार नीचे जाता है, वह शायद हर बार रिबूट करने के लिए एक fsck का उपयोग कर सकता है। आप दिनांक-आधारित चेक अंतराल भी सेट कर सकते हैं।

अब एक चेक को बाध्य करने के लिए, आप वास्तविक गिनती को अधिकतम से अधिक या उसके बराबर होने के लिए ओवरराइड कर सकते हैं , और फिर रिबूट कर सकते हैं। यही कारण है कि पूंजी के साथ किया जाता है C: tune2fs -C 1234 /dev/whatever। अब विभाजन ऐसा लग रहा है कि यह बिना किसी चेक के 1234 बार चढ़ा गया है, जो कि अधिकतम एक या दो अंकों से अधिक है।


बहुत जानकारीपूर्ण लेकिन समस्या हल हो गई है, यह फ़ायरवॉल विशाल लॉग फाइलें लिख रहा था
पूछें

2
देखिए, जैसा कि मुझे संदेह था। कोई रहस्यमय डिस्क भ्रष्टाचार अंतरिक्ष को ऊपर और नीचे फॉगिंग नहीं करता है। मेरा मतलब है कि एक अलग घटना की व्याख्या कर सकता है, लेकिन एक बार जब यह मरम्मत की जाती है, तो इसकी मरम्मत की जानी चाहिए। और ड्राइव विफल हो रहा है, आप कर्नेल लॉग और पैनिक में कुछ त्रुटियों की अपेक्षा करेंगे।
काज

हाँ, मुझे लगा कि यह ड्राइव नहीं थी, SMART परीक्षण कहते हैं कि यह एक पुरानी ड्राइव है, लेकिन फिर भी संचालन योग्य है और काम कर रही है
Askcompu

आपके सभी फ़ाइल सिस्टम को fsck करने का एक आसान तरीका है 'sudo touch / forcefsck; sudo / sbin / shutdown -r now '।
ब्लेयर ज़ाजैक

3

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

डिस्क की जांच और मरम्मत के लिए, इसे माउंट नहीं किया जा सकता (कम से कम रीड-राइट नहीं)। तो आपको एक लाइव वातावरण (लाइव सीडी / डीवीडी या यूएसबी) से मरम्मत उपयोगिता को चलाना चाहिए। सबसे पहले, आपको उस विभाजन के डिवाइस नाम का पता लगाना होगा जिसमें आपकी फाइलें हैं।

इसलिए, स्थापित सिस्टम में , चलाएँ:

mount | grep ' on / '

(बीच की जगह शामिल करना सुनिश्चित करें /और '।)

आपको कुछ मिलेगा:

/dev/sda8 on / type ext4 (rw,errors=remount-ro)

onमेरे मशीन के उदाहरण से पहले का पाठ , /dev/sda8- आपके रूट विभाजन के लिए पूर्ण डिवाइस नाम ( /)। इसे नीचे लिखें - आपको इसकी आवश्यकता होगी।

फिर अपने कंप्यूटर को उबंटू डेस्कटॉप सीडी / डीवीडी या यूएसबी फ्लैश ड्राइव से बूट करें, जैसे कि आप मूल रूप से उबंटू को स्थापित करने के लिए क्या करते थे। (यदि यह विंडोज इंस्टॉलर के साथ स्थापित एक वूबी सिस्टम है, तो कृपया हमें बताएं। मुझे उम्मीद नहीं है कि, आपने जो रिपोर्ट की है, उसे देखते हुए, लेकिन अगर ऐसा है, तो प्रक्रिया अलग होगी।)

चयन की स्थापना के बिना Ubuntu की कोशिश करो (नहीं उबंटू स्थापित करें )। जब आपको एक कामकाजी डेस्कटॉप मिलता है, तो टर्मिनल विंडो खोलने के लिए Ctrl+ Alt+ दबाएं T। फिर यह कमांड चलाएँ:

sudo e2fsck -fkccp /dev/sda8

लेकिन /dev/sda8अपने /विभाजन के लिए सही पूर्ण डिवाइस नाम के साथ प्रतिस्थापित करना सुनिश्चित करें , जैसा कि आपने ऊपर दी गई विधि के माध्यम से प्राप्त किया है।

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

आपको कुछ समस्याओं को ठीक करने के बारे में संकेत दिया जा सकता है, अगर आपको e2fsckलगता है कि एक महत्वपूर्ण संभावना है कि उन्हें ठीक करने की कोशिश करने से डेटा हानि हो सकती है। ( pइसे बनाता है ताकि यह किसी भी समस्या को ठीक कर दे जिसे यह विश्वास है कि यह जटिलताओं को पैदा किए बिना ठीक कर सकता है।)

मेरा सुझाव है कि आप इसे जोरदार तरीके से अनुमति देना चाहते हैं कि वह जो चाहे ठीक कर सके, क्योंकि आपको यह सुनिश्चित करने के बाद ही करना चाहिए कि आपके बैकअप चालू हैं , वैसे भी। यदि आप चाहते हैं कि यह आपको बिना संकेत दिए संभावित रूप से खतरनाक सुधारों का प्रयास करने के pसाथ बदल दे y

इसके बाद, अपने उबंटू सिस्टम में वापस बूट करें और देखें कि क्या स्थान खाली हो गया है। यदि यह नहीं है, या यदि समस्या जारी है, तो कृपया विवरण प्रदान करने के लिए अपने प्रश्न पर टिप्पणी करें और संपादित करें।


क्या होगा अगर मेरे पास बैकअप के लिए कुछ भी नहीं है?
Askcompu

1
@ user2045360 चोरी, गोली, उधार या कुछ खरीद। या इसे ऑनलाइन पुश करें (उबंटू वन, ड्रॉपबॉक्स, गूगल डॉक्स, एस 3, आदि)।
ओली

@ user2045360 यह निर्भर करता है कि आपके पास कितनी और किस तरह की महत्वपूर्ण फाइलें हैं। यदि वे 20 कार्यालय दस्तावेजों (या यहां तक ​​कि 100, यदि आप रोगी हैं) से मिलकर बनाते हैं, तो आप उन्हें खुद को ईमेल कर सकते हैं। आप क्लाउड स्टोरेज सेवाओं का भी उपयोग कर सकते हैं, जैसे उबंटू वन या ड्रॉपबॉक्स (बस सावधान रहें - यदि आप सिंक करने के लिए कुछ सेट करते हैं, और आपके कंप्यूटर पर एक फ़ाइल हटा दी जाती है या बदल जाती है, तो वही परिवर्तन क्लाउड में होगा)। दूसरी ओर, यदि आप एक फिल्म निर्माता हैं और आपके पास 300 गीगाबाइट फुटेज हैं, तो आपका एकमात्र विकल्प संभवतः खरीदना है (या, जैसा कि ओली सुझाव देते हैं, उधार लेते हैं) कुछ स्टोरेज मीडिया, एक बाहरी हार्ड ड्राइव की तरह।
एलिया कागन

मेरे पास कोई पैसा नहीं है और उधार लेने के लिए नहीं है, इस कमांड के साथ डेटा हानि की कितनी संभावना है?
Askcompu

@ user2045360 उस e2fsckकमांड से डेटा हानि की संभावना बहुत कम है, खासकर यदि आप yकिसी ऐसी चीज के लिए प्रेस नहीं करते हैं जो आपको चेतावनी देती है कि आप डेटा खो सकते हैं। लेकिन उस कमांड को चलाना आपके डेटा का बैकअप लेने की आवश्यकता नहीं है। आपको अपने डेटा का बैकअप लेने की आवश्यकता है क्योंकि मुक्त स्थान में आपके ड्रॉप की तीव्र और निरंतर प्रकृति दृढ़ता से बताती है कि आपकी हार्ड ड्राइव पूरी तरह से शारीरिक रूप से विफल हो सकती है । यदि ऐसा होता है, तो आप इस पर कोई डेटा खो देंगे, और लगभग निश्चित रूप से इसके किसी भी पुनर्प्राप्त करने में सक्षम नहीं होंगे। बैक-अप करने के अन्य तरीकों में एक नेटवर्क से दूसरी मशीन, या सीडी / डीवीडी तक शामिल है।
एलियाह कगन

0

इस समस्या को हल कर दिया गया है, यह फ़ायरवॉल लेखन लॉग और tvmobili एन्कोडिंग फ़ाइलों के टन था

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