Bu sürekli boş alan kaybını nasıl durdurabilirim?


15

Aniden yalnızca 1,2 GB boş alanım olduğunu söyleyen bir iletişim kutusu aldığımda normal olarak Ubuntu'yu çalıştırıyordum. Bir saat önce 30 GB boş alanım vardı.

Bazı şeyleri sildim ve boş alanı 25 GB'a getirdim. Ancak azalmaya devam ediyor. Eski günlük dosyalarını kaldırmayı ve günlük dosyalarını kesmeyi denedim ve azalmaya devam ediyor!

Tüm bu boş alan kaybının nereden geldiğini bulmak için Disk Analyzer'ı kullanmayı denedim ve her şeyi olması gerektiği gibi gösterdi. Yeniden başlattım ve sonunda Ubuntu, bir şekilde boş alanı 40 GB'a geri getirdiğini kontrol ettiler, ancak yine de günde yaklaşık 10 GB azalmaya devam ediyor. Boş alan bulmanın yeni yollarını bulmaya devam ediyorum, ancak durduramadığım disk alanını azaltmanın otomatik bir süreci gibi.

Ne yapacağımı bilmiyorum. Nedeni nasıl bulabilirim ve boş alanımın azalmasını nasıl durdurabilirim?

İşte çıktı 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-errorsLütfen çıktıyı eklemek için yayını düzenleyebilir misiniz ? (aptalca bir şey varsa havaya uçmayı beklediğim bu iki yer). Aksi takdirde, Eliah ile birlikteyim - bu disk sorunlarının bir göstergesidir. Bunu ciddiye al.
Oli

Yanıtlar:


26

Bazı kontrol dışı günlükleriniz var. Her gün deli gibi silmek yerine, hızlı büyüyen dosyayı veya dosyaları bulun ve buna neyin sebep olabileceğini araştırmak için içeriye bakın . Belki bir program, bazı koşulları günlüğe kaydeden bir döngüde dönüyor. Bu programı devre dışı bırakın, günlüğe kaydetmeyi devre dışı bırakın veya şikayet ettiği durumu düzeltmeye çalışın.

Bir dosya gözünüzün önünde büyüyorsa ve hangi programın yazdığını bilmiyorsanız, bunu kolayca bulabilirsiniz. İşte bir örnek. Kim /var/log/syslogaçıldı? Şu fuserkomutu kullanıyoruz:

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

Sadece bir süreç /var/log/syslogaçık. Süreç 602'dir. Bu nedir? Bize ile rahatsız etmeyelim psve grepfakat bakmak /procdoğrudan dosya sistemi:

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

Aha, öyle rsyslogd. Biz sürpriz değil rsyslogdsahiptir /var/log/syslog/açık.

Bu yöntemin çalışması garanti edilmez. Bunun nedeni, programların dosyalara yazmak için dosyaları açık tutması gerekmemesidir. Bir dosyayı açan, ona ekleyen ve daha sonra kapatan bir işleminiz olduğunu varsayalım. Biraz daha zor bir soruşturmanız olacak. Eğer fuserşans eseri "kırmızı elle" yakalamak kadar birçok kez koşabilir . Bu sürecin kendisi hızla varoluş içine girip çıkabilir. Başka bir sorun, birden çok işlemin dosyayı açabilmesidir, ancak yalnızca bir tanesi dosyayı büyütür. Bu durumda, sistem çağrılarını izleyebilirsiniz.

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

Hata! İki süreç açık: 1234 ve 23459. Bakalım ne yapıyorlar:

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

Hiçbir şey yapmıyor, sadece bir selectçağrıyı engelliyor . İzi kırmak için Ctrl-C:

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

Bir sonrakini kontrol edin:

# 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

Hata! Bu sürekli yazıyor. Kötü olan olmalı. Hatta sürecin yazdığı dosya tanımlayıcı 5'in aslında büyük dosya olup olmadığını kontrol edebiliriz:

# 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

Bozuk bir dosya sisteminiz olduğundan şüphelenmiyorum, ancak tam denetimi zorlamak için DVD önyükleme yapmanız gerekmez.

İlk olarak, dosya sisteminizin maksimum bağlama sayısı ayarını gözden geçirin. Df komutunu kullanarak bölümünüzü tanımlayın. Burada bir Ubuntu sistemi örneği:

# 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

/Dosya sisteminin kurulu olduğunu görebilirsiniz /dev/sda1. Yani /dev/sda1kök bölümü (ve bu özel sistemindeki tek bölüm) depolama cihazıdır.

Bu dosya sisteminin bazı özelliklerine bakalım. Monte edilmiş olsa bile bunu yapmak güvenlidir. Komut çok fazla çıktı verir. İşte bir alıntı:

$ 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 ... ]

Hey bak, montaj sayısı maksimum montaj sayısına eşittir. Bir dahaki sefere yeniden başlattığımda dosya sistemi kontrolü yapılacak. Önemli olan, montaj sayısının pozitif bir değer olmasıdır. Sizinki sıfırsa, bunu kullanarak 22 gibi bir pozitif değere değiştirin tune2fs -c 22 /dev/whatever. Sıfır, bölümün kaç kez monte edildiğine bakılmaksızın hiçbir zaman bir denetimin zorlanmadığı anlamına gelir. Nadiren yeniden başlatılan sistemlerin değerleri düşük olmalıdır. Yılda bir kez çalışan bir sunucu muhtemelen her yeniden başlattığında bir fsck kullanabilir. Tarih tabanlı kontrol aralıklarını da ayarlayabilirsiniz.

Şimdi bir kontrolü zorlamak için, gerçek sayıyı maksimuma eşit veya daha büyük olacak şekilde geçersiz kılabilir ve ardından yeniden başlatabilirsiniz . Yani sermaye ile bitti C: tune2fs -C 1234 /dev/whatever. Şimdi bölüm, bir veya iki basamaklı maksimumdan daha büyük olan çek olmadan 1234 kez monte edilmiş gibi görünüyor.


çok bilgilendirici ama sorun çözüldü, büyük günlük dosyaları yazma güvenlik duvarı oldu
askcompu

2
Gördüğüm gibi. Gizemli disk bozulması alanı yukarı ve aşağı kırbaç yok. Yani bu izole bir olayı açıklayabilir, ancak onarıldıktan sonra onarılmalıdır. Ve sürücü başarısız, çekirdek günlüğü ve panik bazı hatalar beklenir.
Kaz

evet ben sürücünün olmadığını düşündüm, SMART testleri onun eski bir sürücü ama yine de çalışabilir ve çalışıyor
askcompu

Tüm dosya sistemlerinizi fsck etmenin daha kolay bir yolu 'sudo touch / forcefsck; sudo / sbin / shutdown -r now '.
Blair Zajac

3

Bir disk denetimi, alanın bir kısmını serbest bıraktı ve bu sorunun (veya bir kısmının) dosya sistemi bozulmasından kaynaklanabileceğini düşündürdü. Bu durumda, dosya sistemini tarayarak ve onararak daha fazla alan açabilmeniz gerekir. Ancak, yolsuzluk sürekli oluyorsa (durum böyle olabilir veya olmayabilir), bu genellikle sabit sürücünün ölmekte olduğu anlamına gelir. Yedekleriniz (belgeleriniz ve değiştirilmesi zor olabilecek diğer önemli dosyalar) tamamen güncel değilse, lütfen şimdi önemli olan her şeyi yedekleyin!

Diski kontrol etmek ve onarmak için monte edilemez (en azından okuma-yazma değil). Bu yüzden onarım yardımcı programını canlı bir ortamdan (canlı CD / DVD veya USB) çalıştırmalısınız. İlk olarak, dosyalarınızı içeren bölümün aygıt adını bulmanız gerekir.

Bu nedenle, kurulu sistemde şunu çalıştırın:

mount | grep ' on / '

(Arasında boşluk emin olun /ve '.)

Gibi bir şey alırsınız:

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

onMakinemdeki örnekteki - öncesindeki metin /dev/sda8, kök bölümünüzün ( /) tam adıdır . Bunu not edin - ihtiyacınız olacak.

Ardından, bilgisayarınızı Ubuntu'yu orijinal olarak yüklerken kullandığınız gibi bir Ubuntu masaüstü CD / DVD'sinden veya USB flash sürücüden önyükleyin. (Bu, Windows yükleyicisiyle yüklü bir Wubi sistemiyse, lütfen bize bildirin. Bildirdiğiniz şey göz önüne alındığında bunu beklemiyorum, ancak durum buysa, prosedür farklı olacaktır.)

Kurmadan Ubuntu'yu Dene'yi seçin ( Ubuntu'yu Kurmayın ). Çalışan bir masaüstü aldığınızda,Ctrl bir Terminal penceresi açmak için + Alt+T . Ardından şu komutu çalıştırın:

sudo e2fsck -fkccp /dev/sda8

Ancak , yukarıda ayrıntılı olarak açıklanan yöntemle elde ettiğiniz gibi /dev/sda8, /bölümünüz için doğru tam cihaz adıyla değiştirdiğinizden emin olun .

Bu biraz zaman alabilir. c komutta yer alan seçenekler, diskin yüzeyini dosya sisteminde olduğu kadar hatalar için taramasına (ve kötü alanları kullanılmaması için kötü olarak işaretlemesine) neden olur. İsterseniz ccdışarıda bırakabilirsiniz (eğer yaparsanız, dışarıda da bırakabilirsiniz k), ancak onları saklamanızı tavsiye ederim.

Aşağıdaki durumlarda belirli sorunları çözmeniz istenebilir e2fsckOnları düzeltmeye çalışmanın veri kaybına neden . (Bunu p, komplikasyonlara neden olmadan çözebileceğinden emin olduğu herhangi bir sorunu çözmesini sağlar.)

İstediğiniz her şeyi düzeltmesine izin vermek için güçlü bir şekilde eğilmenizi öneririz, çünkü bunu yalnızca yedeklemelerinizin güncel olduğundan emin olduktan sonra yapmanız gerekir . Eğer size sormadan bile tehlikeli düzeltmeleri çekilmesini istiyorsanız, yerini pile y.

Bundan sonra, Ubuntu sisteminize yeniden önyükleme yapın ve alanın boş olup olmadığını görün. Değilse veya sorun devam ederse, lütfen ayrıntıları belirtmek için sorunuzu yorumlayın ve düzenleyin.


yedeklenecek hiçbir şeyim yoksa ne olur?
askcompu

1
@ user2045360 Çalın, yağmalayın, ödünç alın veya satın alın. Veya çevrimiçi olarak itin (Ubuntu One, Dropbox, Google Dokümanlar, S3 vb.).
Oli

@ user2045360 Kaç tane dosyaya ve ne tür önemli dosyalara sahip olduğunuza bağlıdır. 20 ofis belgesinden (hatta sabırlıysanız 100 bile) oluşursa, bunları kendinize e-postayla gönderebilirsiniz. Ubuntu One veya DropBox gibi bulut depolama hizmetlerini de kullanabilirsiniz (sadece dikkatli olun - senkronize edilecek bir şey ayarlarsanız ve bir dosya bilgisayarınızda silinir veya değiştirilirse, bulutta aynı değişiklik olur). Öte yandan, bir film yapımcısıysanız ve 300 gigabayt çekime sahipseniz, tek seçeneğiniz muhtemelen harici bir sabit sürücü gibi bazı depolama ortamlarını satın almaktır (veya Oli'nin önerdiği gibi ödünç almak).
Eliah Kagan

Ben para ve ödünç kimse yok, bu komut ile veri kaybı ne kadar bir olasılıktır?
askcompu

@ user2045360 Bu komuttan veri kaybı olasılığı e2fsck, özellikle yveri kaybedebileceğiniz konusunda sizi uyaran hiçbir şey için basmazsanız oldukça düşüktür . Ancak bu komutu çalıştırmak neden verilerinizi yedeklemeniz gerektiği değildir. Verilerinizi yedeklemeniz gerekir, çünkü boş alandaki düşüşünüzün hızlı ve sürekli yapısı, sabit sürücünüzün fiziksel olarak tamamen başarısız olmak üzere olabileceğini güçlü bir şekilde düşündürür . Böyle bir durumda, üzerinde herhangi bir veri kaybedersiniz ve neredeyse hiçbirini kurtaramazsınız. Ağ üzerinden başka bir makineye veya CD / DVD'ye yedeklemenin diğer yolları.
Eliah Kagan

0

Bu sorun çözüldü, güvenlik duvarı tonlarca günlük ve tvmobili kodlama dosyaları yazıyordu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.