df diskin dolu olduğunu söylüyor


58

Ubuntu 10.04 çalıştıran sanallaştırılmış bir sunucuda, df aşağıdakileri bildirir:

# 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

Bu beni iki nedenden dolayı şaşırtıyor: 1.) df / / / sda1'in, / 7.0'da kullanıldığını ve bunun yalnızca 7.0 gigabayt kullanımda olduğunu, ancak yüzde 100 dolu olduğunu bildirdiğini / bildirdiğini 7.4 gigabayt kapasiteye sahip olduğunu söylüyor; ve 2.) Açık / kapalı alan bırakacak şekilde dosyaları oluşturabilirim.

Muhtemelen alakalı olan, / www dizininin / home / www 'nin farklı bir bölümdeki (/ dev / sda3, / home üzerine yerleştirilmiş) sembolik bir bağlantısı olmasıdır.

Burada neler olabileceğine dair önerilerde bulunabilir miyim? Sunucu sorunsuz çalışıyor gibi görünüyor, ancak bölümleme tablosunda, dosya sistemlerinde veya daha sonra patlamaya (veya patlamaya) neden olabilecek başka bir konuda sorun olmadığından emin olmak istiyorum.


Yararlı cevaplar için herkese teşekkürler. Dosyaları normal bir kullanıcı olarak oluşturamıyorum bu yüzden felaketi önleyen yüzde 5'lik tampon olduğu anlaşılıyor. Şimdi sadece diskin neden dolu olduğunu bulmam gerek (günlük dosyalarının hiçbiri bu kadar yer kaplamıyor ve yüklü bir yazılım yok, sadece basit bir LAMP sunucusu var). ...
Chris

3
Bakacağım ilk yer / tmp. Başka bir olasılık, çalışan bir programın tuttuğu silinmiş bir dosyanızın olmasıdır. Sanırım koşabilirsin | Bunları bulmak için 'root' olarak silindi.
Scott,

Yanıtlar:


103

Bir işlem o zamandan beri silinmiş olan büyük bir dosyayı açmış olabilir. Alanı boşaltmak için bu işlemi öldürmeniz gerekecek. Lsof'u kullanarak işlemi tanımlayabilirsiniz. Silinen Linux'ta henüz açık dosyalar lsof olarak bilinir ve lsof çıktısında (silindi) olarak işaretlenir.

Bunu kontrol edebilirsiniz sudo lsof +L1


8
Bu benim için gizemi çözdü. Hizmeti yeniden başlatmadan uwsgi'den büyük bir günlük dosyasını çıkardım. Sorgulandığında df -ah, diski tam doldurdum , ancak du -sh /boş alana sahip olmam gerektiğini söylüyor. Uwsgi'yi yeniden başlattıktan sonra çok fazla boş alanım var!
Fabio Montefuscolo

Limbo içinde kalmış 40 G değerinde kütük vardı ve lsof + L1 bana ne olduğunu görmem için x-ışını görüntüsü verdi ;-) Tek yapmam gereken hizmeti yeniden başlatmaktı.
PJ Brunet,

46

Dosya sisteminin% 5'i (varsayılan olarak), ciddi sorunları önlemek için dosya sisteminin dolduğu durumlar için ayrılmıştır. Dosya sisteminiz dolu. % 5 arabellek - kökü nedeniyle hiçbir felaket yaşanmaz - bu güvenlik ara belleğini kullanmasına izin verilir ve kurulumunuzda kök olmayan kullanıcıların bu dosya sistemine yazma nedenleri yoktur.

Kök olmayan bir kullanıcı olarak çalışan, ancak bu dosya sistemindeki dosyaları yönetmesi gereken görevliler varsa, işler bozulur. Böyle yaygın bir daemon ise named. Başka bir ntpd.


1
NEDEN diskiniz dolu sorusu için, 7G gerçekten o kadar da değil. Ayrıca, her şeyin bir bölüm / dosya sistemi ( /) altına girdiğini de düşünüyorsunuz . Bu genellikle Kötü Bir Şey olarak kabul edilir (çünkü eğer bir şeyler giderse haywire /doldurulur ve dünya biter) ancak Linux dağıtımları hala "basit" olduğu için bunu yapmaya devam eder. Ben bakarak başlardım /var(özellikle. /var/log) Büyük günlük dosyalarından için. du -hs /(root olarak) en büyük dizinleri bulmanıza ve muhtemelen neyin temizlenmesi gerektiğini göstermenize yardımcı olacaktır.
voretaq7

35

Düğümlerin dışında olabilirsiniz. Bu komutla inode kullanımını kontrol et:

df -i

17

Çoğu Linux dosya sistemi yalnızca kök kullanıcıyı kullanmak için% 5 alan ayırır.

Bunu örneğin;

dumpe2fs /dev/sda1 | grep -i reserved

Ayrılmış tutarı aşağıdakileri kullanarak değiştirebilirsiniz:

tune2fs -m 0 /dev/sda1

Çoğu durumda, sunucu tüm işlemlerin 'kök' olarak çalıştırıldığını varsayarak iyi çalışmaya devam eder.


8

Bu problemi yaşadım ve çeşitli büyük dosyaları silmemin durumu şaşırtmadı, bazı ipuçlarını takip ederek durumu iyileştirmedi (% 5 tampon belleği bilmiyordu).

Kökten aşağı doğru yürüdükten sonra tekrarlanan en büyük dizinlerden aşağı yürüdü:

du -sh */ 

bazı büyük kütük kütükleri bulunan web sunucusu kütük dosyaları için bir dizin gelinceye kadar

hangi ile kısaltdım

:>lighttpd.error.log

aniden df -h% 48'in altına düştü!


14
Bu gerçekten bitmeli "... o zaman log rotasyonu ayarlarım."
hayalci

hayalci: oturum açma işleminin yanlış dizine işaret ettiğini buldu.
zzapper

8

Zaten önerilen nedenlere ek olarak, bazı durumlarda aşağıdakiler de olabilir:

  • farklı bir disk veri dolu varolan klasörün üzerine
  • du, monte edilmiş diskin harcanan boyutunu hesaplar ve df gerçekten harcandığını gösterir
  • özüm: (mümkünse) tüm kök olmayan diskleri çıkarın ve boyutu du -md 1tekrar kontrol edin . Gizli klasörü başka bir yere taşıyarak veya farklı bir yere monte ederek durumu düzeltin .

df dışındaki montaj noktalarını nasıl buluyorsunuz?
Hogan

@Hogan: belki "mount" ya da "cat / etc / fstab" olarak adlandırmak yardımcı olur mu?
Robert Lujo

5

df -hdeğerleri yuvarlıyor. Yüzdeler bile yuvarlanır. Atlayın -hve daha ince taneli farkları görün.

Ah. Ext3 ve türevleri dosya sistemi için tam olarak bu problemli takımyıldızı için bir yüzde (varsayılan% 5) ayırır. Kök dosya sisteminiz gerçekten dolu ise (kalan 0 bayt) sistemi açamazsınız. Böylece ayrılmış kısım bunu önler.


Serbest düğümleri bittiği de olabilir. İnodes kullanımı için 'df -i'yi çalıştırın.
Andrew Case

O diski bu bilgiyi sağlamadı olduğunu tam. Sadece diskin dolu olduğunu düşünüyor . % 100 hatasız kullanılan alan sadece "neredeyse dolu".
mailq

1

Birkaç kitaplıkta büyük bir güncelleme yaptım ve çok sayıda gereksiz kitaplık ve geçici dosya vardı, bu nedenle aşağıdakileri kullanarak "/" klasöründe boş alan açtım:

apt-get install -f
sudo apt-get clean

Ve çöpünü boşalt


Bu, disk kullanımını azaltma konusunda makul genel bir öneridir, ancak df'nin neden diskin dolu olmadığını belirttiği konusundaki soruya değinmez.
Andrew Schulman

0

kontrol et / kayıp + bulundu, bir sistemim vardı (centos 7) ve / kayıp + içindeki dosyanın bir kısmı tüm alanı yedi


0

Bölümünüzü btrfs ise, bir alt hacim alan olabilir. Bir btrfs dosya sistemi sadece bir tanesi monte edilmiş birçok alt hacme sahip olabilir. btrfs subvolume list <dir>Tüm alt hacimleri listelemek ve btrfs subvolume delete <dir>/<subvolume>birini silmek için kullanabilirsiniz . Varsayılan olarak monte edilmiş olanı silmediğinizden emin olun.

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.