Disk dolu: alanı neyin doldurduğunu bulun ve güvenle boşaltın
Linux'ta No space left on device ve Windows Server'da dolu sürücü sorununu çözün: büyük klasörleri bulun, kayıtları, önbellekleri ve eski paketleri temizleyin.
- Başlangıç
- 12 dk okuma
- Güncellendi
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13, Windows Server 2022, Windows Server 2025
Bu sayfada
- Başlamadan önce
- 1. adım: Diskin dolu olduğunu doğrulayın
- 2. adım: Büyük klasörleri bulun
- 3. adım: Alanı güvenle boşaltın
- systemd günlüğü
- Eski kayıtlar
- Paket önbellekleri ve eski çekirdekler
- Docker
- Sunucudaki yedekler ve dökümler
- Çok fazla küçük dosya (inode)
- 4. adım: Silindi ama alan geri gelmedi
- Windows Server
- Bir dahaki sefere önleyin
- Ne zaman destek bildirimi açmalı?
- Sonraki adımlar
Bir disk dolduğunda veritabanları yazmayı bırakır, web siteleri hata verir, posta kuyrukları durur ve bazen giriş bile yapamazsınız. Bu rehber, alanı neyin kullandığını bulur ve Linux ile Windows Server'da güvenle boşaltır.
Başlamadan önce
- SSH ile ya da hizmet sayfanızda görünüyorsa web konsoluyla giriş yapın; tamamen dolu bir disk SSH girişlerini bozabilir.
- Tanımadığınız dosyaları silmeyin. Önce bakın, sonra emin olduklarınızı kaldırın.
1. adım: Diskin dolu olduğunu doğrulayın
df -h
df -idf -h her dosya sisteminin alanını gösterir; / veya bir veri bağlama noktasında 100'e yakın Use% değerine bakın. df -i inode'ları gösterir: alan boşken IUse% 100 ise çok fazla küçük dosyanız vardır.
2. adım: Büyük klasörleri bulun
Kökten başlayın ve her seferinde en büyük klasöre inin. -x tek bir dosya sisteminde kalır:
sudo du -xh --max-depth=1 / 2>/dev/null | sort -h | tail -n 15
sudo du -xh --max-depth=1 /var 2>/dev/null | sort -h | tail -n 15ncdu aynısını etkileşimli yapar (sudo apt install ncdu, ardından sudo ncdu -x /). Tek tek büyük dosyaları listelemek için:
sudo find / -xdev -type f -size +500M -exec ls -lh {} + 2>/dev/nullDoğrulama: alanı hangi klasörün tuttuğunu artık biliyorsunuz. Olağan şüpheliler aşağıdadır.
3. adım: Alanı güvenle boşaltın
systemd günlüğü
journalctl --disk-usage
sudo journalctl --vacuum-size=200MKalıcı olarak küçük tutmak için /etc/systemd/journald.conf içinde SystemMaxUse=200M ayarlayın ve sudo systemctl restart systemd-journald çalıştırın.
Eski kayıtlar
/var/log içindeki döndürülmüş kayıtlar (sonu .1, .gz ile bitenler) silinebilir. Bir servisin yazdığı etkin bir kaydı silmeyin; bunun yerine içini boşaltın:
sudo truncate -s 0 /var/log/nginx/access.logArdından logrotate'in bu kaydı döndürdüğünü kontrol edin ki yeniden büyümesin.
Paket önbellekleri ve eski çekirdekler
sudo apt clean
sudo apt autoremove --purgeapt autoremove, eski çekirdekler dahil artık gerekmeyen paketleri kaldırır. Onaylamadan önce gösterdiği listeyi okuyun.
Docker
İmajlar, durdurulmuş container'lar ve derleme önbellekleri gigabaytlarca yer kaplayabilir:
docker system df
docker system prunedocker system prune durdurulmuş container'ları, kullanılmayan ağları, sarkan imajları ve derleme önbelleğini kaldırır. Silmeden önce sorar; hiçbir birimin ihtiyacınız olan veriyi tutmadığından emin değilseniz --volumes eklemeyin.
Sunucudaki yedekler ve dökümler
Eski yedek arşivleri ve veritabanı dökümleri sık bir nedendir. Onları sunucunun dışına taşıyın, sonra yerelde silin. Aynı diskte tutulan yedekler zaten sizi korumaz; bkz. yedekleme stratejisi.
Çok fazla küçük dosya (inode)
En çok dosya içeren klasörü bulun:
sudo find / -xdev -type f 2>/dev/null | cut -d/ -f2-3 | sort | uniq -c | sort -n | tail -n 10PHP oturumları, önbellek klasörleri ve posta kuyrukları tipik örneklerdir. Varsa uygulamanın kendi aracıyla temizleyin.
4. adım: Silindi ama alan geri gelmedi
Bir süreç silinen dosyayı hâlâ açık tutuyor:
sudo lsof +L1Çıktı süreci gösterir. Alanı serbest bırakmak için o servisi yeniden başlatın (örneğin sudo systemctl restart nginx).
Windows Server
- Boş alanı PowerShell'de
Get-Volumeile ya da Dosya Gezgini'nde kontrol edin. - Büyük klasörleri Dosya Gezgini aramasıyla (
size:>1GB) veya bir disk kullanım aracıyla bulun. - Kullanılabildiği yerlerde Disk Cleanup'ı (
cleanmgr) çalıştırın ve Clean up system files'ı seçin. - Güncellemelerden sonra bileşen deposunu (WinSxS) temizleyin:
Dism.exe /Online /Cleanup-Image /StartComponentCleanupC:\inetpub\logs\LogFilesaltındaki IIS kayıtlarını ve eski SQL Server yedeklerini kontrol edin.
Bir dahaki sefere önleyin
- Kayıt döndürmeyi ve günlük sınırlarını açık tutun.
- Yedekleri başka bir sistemde saklayın.
- Disk kullanımı yüzde 80 civarına geldiğinde sizi uyaran bir izleme kurun.
- Sunucunun gerçekten daha fazla yere ihtiyacı varsa daha büyük bir plana geçin ve dosya sistemini genişletin: bkz. hizmeti yükseltin veya düşürün.
Ne zaman destek bildirimi açmalı?
Sunucu disk dolu olduğu için açılamıyorsa veya df hata veriyorsa, alabiliyorsanız df -h ve df -i çıktılarıyla birlikte sunucuyu seçerek bir destek bildirimi açın.
Sonraki adımlar
- Diğer kaynak sorunları: yüksek CPU veya bellek kullanımı.
- Diski büyütün: hizmeti yükseltin veya düşürün.
Sık sorulan sorular
df boş alan gösteriyor ama yine de No space left on device alıyorum. Neden?
Dosya sisteminin inode'ları, yani dosyaları izleyen kayıtları tükenmiştir; genellikle oturum veya önbellek dosyaları gibi milyonlarca küçük dosya yüzünden. df -i ile kontrol edin ve biriken küçük dosyaları silin.
Büyük bir dosyayı sildim ama alan geri gelmedi. Neden?
Çalışan bir süreç dosyayı hâlâ açık tutuyor; alan ancak süreç onu kapattığında serbest kalır. Bu tür dosyaları lsof +L1 ile bulun ve onları tutan süreci yeniden başlatın.
/var/log içindeki dosyaları silmek güvenli mi?
Sonu .gz veya .1 ile biten eski döndürülmüş kayıtları silmek güvenlidir. Etkin kayıt dosyalarını silmeyin; bunun yerine içlerini boşaltın veya systemd günlüğünü journalctl --vacuum-size ile sınırlayın.
Diskimi büyütebilir miyim?
Evet; daha büyük diskli bir plana geçerek veya planınız sunuyorsa disk alanı ekleyerek. Yükseltmeden sonra sunucunun yeni alanı kullanabilmesi için bölümü ve dosya sistemini genişletin.
Bir dahaki sefere bunu nasıl önlerim?
Kayıt döndürmeyi ve günlük sınırlarını açık tutun, yedekleri sunucunun dışına taşıyın, eski sürümleri ve önbellekleri düzenli temizleyin ve disk kullanımını bir izleme uyarısıyla takip edin.
Kaynaklar
- man7.org/linux/man-pages/man1/df.1.html
- man7.org/linux/man-pages/man1/du.1.html
- freedesktop.org/software/systemd/man/latest/journalctl.html
- manpages.debian.org/bookworm/apt/apt-get.8.en.html
- man7.org/linux/man-pages/man8/lsof.8.html
- docs.docker.com/reference/cli/docker/system/prune
- learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/clea…