Linux Sunucuda Disk Dolu Hatası Nasıl Çözülür?
Büyük dosyaları bulma, logları güvenli temizleme ve sunucuda tekrar yer açma rehberi.
Linux sunucularda en sık karşılaşılan problemlerden biri diskin tamamen dolmasıdır. Disk dolduğunda web siteleri dosya yazamaz, veritabanı servisleri çalışmayı durdurabilir, oyun sunucuları log kaydedemez ve bazı servisler hiç başlamayabilir.
Bu hata genellikle şu belirtilerle anlaşılır:
- Sunucuya dosya yüklenememesi
- Veritabanı servisinin kapanması veya hata vermesi
- Panelde “No space left on device” hatası görülmesi
- Oyun sunucusunun log yazamadığı için kapanması
- Web sitelerinde 500 hatası veya boş sayfa oluşması
1. Disk Kullanımını Kontrol Etme
İlk olarak sunucuda hangi disk bölümünün dolduğunu kontrol edin.
df -h
Burada özellikle Use% alanına bakılır. Eğer bir bölüm %90 veya üzerindeyse artık risk başlamış demektir. %100 doluysa servisler dosya yazamaz hale gelir.
2. En Çok Yer Kaplayan Klasörleri Bulma
Disk dolu olduğunda genellikle sorun tek bir klasörde biriken loglar, yedekler veya cache dosyalarıdır. Kök dizinden başlayarak büyük klasörleri kontrol edin.
du -h --max-depth=1 / 2>/dev/null | sort -h
Bu komut, ana dizinlerin ne kadar yer kapladığını gösterir. Genellikle şu dizinler kontrol edilir:
- /var/log - Sistem ve servis logları
- /home - Kullanıcı ve web site dosyaları
- /backup - Eski yedek dosyaları
- /tmp - Geçici dosyalar
- /var/lib/mysql - MySQL/MariaDB veritabanı dosyaları
3. Büyük Dosyaları Listeleme
Bazen tek bir log dosyası 10 GB veya daha fazla büyüyebilir. Büyük dosyaları bulmak için şu komutu kullanabilirsiniz:
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/nullBu komut 500 MB üzerindeki dosyaları listeler. Çıkan dosyaları dikkatle inceleyin. Özellikle .log, .old, .gz, .bak ve eski yedek dosyaları kontrol edilmelidir.
4. Log Dosyalarını Güvenli Temizleme
Çalışan bir servisin log dosyasını doğrudan silmek bazen beklenen sonucu vermez. Çünkü servis dosyayı açık tutmaya devam edebilir. Bu yüzden büyük log dosyalarını temizlerken en güvenli yöntem dosyanın içini boşaltmaktır.
truncate -s 0 /var/log/dosya_adi.log
Örnek:
truncate -s 0 /var/log/syslog truncate -s 0 /var/log/messages truncate -s 0 /var/log/nginx/error.log
5. Paket Cache Temizliği
Ubuntu ve Debian tabanlı sistemlerde paket cache dosyaları zamanla disk alanı kaplayabilir.
apt clean apt autoremove -y
CentOS, AlmaLinux veya Rocky Linux sistemlerde:
yum clean all dnf clean all
6. Eski Yedekleri Kontrol Etme
Hosting ve oyun sunucularında en çok yer kaplayan dosyalar genellikle eski yedeklerdir. Özellikle otomatik backup sistemi varsa her gün yeni yedek alınıp eski yedekler silinmiyor olabilir.
find /backup -type f -mtime +7 -name "*.tar.gz" -ls
Bu komut 7 günden eski yedekleri listeler. Emin olduktan sonra silmek için:
find /backup -type f -mtime +7 -name "*.tar.gz" -delete
7. Logrotate Ayarı ile Tekrar Dolmayı Önleme
Disk temizlense bile sebep düzeltilmezse birkaç gün sonra aynı problem tekrar yaşanır. Bunun için logrotate yapılandırması kontrol edilmelidir.
nano /etc/logrotate.conf
Örnek basit logrotate mantığı:
/var/log/*.log {
daily
rotate 7
compress
missingok
notifempty
}Bu ayar log dosyalarını günlük döndürür, 7 gün saklar ve eski logları sıkıştırır.
Sık Yapılan Hatalar
- Hangi dosya olduğunu bilmeden sistem dosyalarını silmek
- Çalışan log dosyasını silip servisi yeniden başlatmamak
- Eski yedekleri sınırsız süre saklamak
- Logrotate ayarlarını hiç kontrol etmemek
- Disk %100 dolana kadar müdahale etmemek
FAQ
Disk dolu olunca sunucu neden hata verir?
Çünkü servisler log, cache, geçici dosya veya veritabanı yazma işlemi yapamaz. Yazma işlemi başarısız olunca servisler kapanabilir.
Log dosyasını silmek mi yoksa boşaltmak mı daha doğru?
Çalışan servislerde log dosyasını tamamen silmek yerine truncate ile içini boşaltmak daha güvenlidir.
Disk temizledim ama alan boşalmadı, neden?
Silinen dosya hâlâ çalışan bir servis tarafından açık tutuluyor olabilir. İlgili servisi yeniden başlatmak gerekebilir.
Performans ve Güvenlik Önerileri
- Disk kullanımını düzenli takip edin.
- Yedekleri ayrı bir diskte veya uzak backup alanında saklayın.
- Logrotate kullanmadan uzun süre çalışan servis bırakmayın.
- Disk %85 seviyesine geldiğinde önlem alın.
- Oyun sunucularında debug loglarını sürekli açık bırakmayın.
Bu makale PvPSunucusu için özel olarak hazırlanmıştır.