Diskte GB olarak alan görünmesine rağmen yeni dosya oluşturulamıyorsa inode tükenmiş olabilir. Bu rehber disk kapasitesi, inode, kota, /tmp, log, yedek, mail spool, MySQL binary log ve silinmiş açık dosyaları veri kaybına yol açmadan analiz eder.
No space left on device
Disk quota exceeded
Can't create/write to file '/tmp/#sql...' (Errcode: 28)
Filesystem Inodes IUsed IFree IUse%
/dev/sda1 10.0M 10.0M 0 100%
Linux dosya sistemi hem veri bloklarını hem de inode kayıtlarını kullanır. Veri blokları dolduğunda büyük dosya yazılamaz; inode tükendiğinde disk alanı boş görünse bile yeni dosya veya dizin oluşturulamaz.
df -h mount noktasının kapasitesini gösterir. /home, /var, /tmp veya yedek diski ayrı mount edilmişse yalnız kök bölüme bakmak yanlış sonuca yol açar.
df -i inode kullanımını gösterir. Milyonlarca küçük session, cache, mail, tmp veya zararlı yazılım dosyası inode’u tüketebilir ve siteler 500/503, MySQL ve mail hataları vermeye başlayabilir.
Bir dosya silinmiş olsa bile çalışan süreç dosya tanımlayıcısını açık tutuyorsa alan df çıktısında dolu kalır. lsof +L1 bu görünmez alan kullanımını bulur; süreç kontrollü yeniden başlatılınca alan serbest kalır.
cPanel hesap kotası, dosya sistemi doluluğundan farklıdır. Yalnız bir kullanıcı Disk quota exceeded alıyorsa hesap kotası ve quota veritabanı kontrol edilir; tüm sunucu etkileniyorsa mount doluluğu önceliklidir.
En büyük dosyayı bulup silmek yerine önce dosyanın ne işe yaradığını belirleyin. Aktif MySQL, mail spool, cPanel yedeği veya sistem logunu kontrolsüz silmek veri kaybı ve servis bozulmasına yol açabilir.
E-postada, tarayıcıda veya SSH günlüğünde gördüğünüz ifadeyi aratın. Her kartta anlam, muhtemel neden ve güvenli ilk işlem bulunur.
Anlamı: İlgili dosya sistemi yeni veri veya inode ayıramamıştır.
Muhtemel neden: Disk blokları dolu, inode yüzde 100 veya ayrılmış alan sınırı.
Anlamı: Uygulama veya MariaDB işletim sisteminden alan kalmadı cevabı almıştır.
Muhtemel neden: Disk/inode doluluğu, /tmp doluluğu veya kota.
Anlamı: Kullanıcı veya grup kendisine tanımlanan kota sınırını aşmıştır.
Muhtemel neden: cPanel hesap kotası dolu, kota veritabanı hatalı veya kullanıcı dosyaları büyümüş.
Anlamı: Dosya sistemi yeni dosya için inode kaydı ayıramamaktadır.
Muhtemel neden: Milyonlarca küçük cache, session, mail, tmp veya zararlı dosya.
Anlamı: Uygulama geçici dizinde dosya oluşturamıyor.
Muhtemel neden: /tmp alanı/inode dolu, izin 1777 bozuk veya tmpfs sınırı.
Anlamı: Silinen dosya çalışan süreç tarafından açık tutulmaktadır.
Muhtemel neden: Log rotasyonu sonrası Apache, PHP, MySQL veya başka daemon eski dosyayı açık tutuyor.
Anlamı: Paket yöneticisi, MySQL veya uygulama geçici dosya oluşturamamıştır.
Muhtemel neden: /tmp, /var/tmp veya kök dosya sistemi dolu; izin veya mount noexec sorunu.
Anlamı: Mail kuyruğu veya spam mesajları /var/spool/exim altında büyümüştür.
Muhtemel neden: Spam gönderen hesap, teslim edilemeyen posta veya uzak sunucu problemi.
Anlamı: Yedek hedefinde yeni yedek için yeterli alan yoktur.
Muhtemel neden: Retention yüksek, başarısız eski yedekler, uzak hedef mount edilmemiş veya local fallback.
Anlamı: Binary log retention uygulanmadığı için loglar birikmiştir.
Muhtemel neden: expire_logs_days/binlog_expire_logs_seconds yok veya replikasyon gereği temizlenmemiş.
Anlamı: ext dosya sisteminde ayrılmış bloklar yalnız root için kalmış olabilir.
Muhtemel neden: Disk kritik eşiğe ulaşmıştır; normal kullanıcılar ayrılmış alanı kullanamaz.
Anlamı: Dosya sistemi hata sonrası koruma amacıyla salt okunur bağlanmış olabilir.
Muhtemel neden: Disk/I/O hatası, filesystem corruption veya kernel remount.
Bu ifadeyle eşleşen kayıt bulunamadı.
Komutlar root erişimi içindir. Önce yalnızca durum ve log toplayın; nedeni görmeden kalıcı ayar değiştirmeyin.
df -hT
lsblk -f
Tüm mount noktalarının kapasitesini, türünü ve bağlı olduğu diski gösterir.
df -ih
Hangi dosya sisteminde inode kalmadığını gösterir.
du -xhd1 / 2>/dev/null | sort -h | tail -n 25
du -xhd1 /var 2>/dev/null | sort -h | tail -n 25
du -xhd1 /home 2>/dev/null | sort -h | tail -n 25
Aynı dosya sistemi içinde alanı büyüten üst dizinleri bulur.
find /var /home -xdev -type f -size +500M -printf '%s %p\n' 2>/dev/null | sort -n | tail -n 50 | numfmt --field=1 --to=iec
500 MB üzerindeki büyük dosyaları boyuta göre listeler.
for d in /var/* /home/*; do [ -d "$d" ] && printf '%10s %s\n' "$(find "$d" -xdev -type f 2>/dev/null | wc -l)" "$d"; done | sort -n | tail -n 30
Inode tüketen üst dizinleri dosya sayısına göre sıralar.
lsof +L1 2>/dev/null | sort -k7 -n | tail -n 50
Silinmiş olmasına rağmen süreç tarafından açık tutulan dosyaları gösterir.
du -xsh /var/spool/exim /backup /home/*/backup* 2>/dev/null
exim -bpc 2>/dev/null
Exim kuyruğu ve yaygın yedek konumlarının boyutunu kontrol eder.
du -xsh /var/lib/mysql 2>/dev/null
find /var/lib/mysql -maxdepth 1 -type f -printf '%s %p\n' 2>/dev/null | sort -n | tail -n 30 | numfmt --field=1 --to=iec
MariaDB veri dizinindeki büyük log ve veri dosyalarını listeler.
Önce doğru mount noktasını ve doluluk türünü belirleyin; ardından büyümeyi oluşturan servis veya hesabı bulun, güvenli temizlik yapın ve tekrar oluşmasını engelleyin.
df -h kapasiteyi, df -i inode’u gösterir. Hatanın yazdığı yolun hangi mount noktasına ait olduğunu belirleyin.
df -hT
df -ih
df -hT /tmp /var /home /backup 2>/dev/nulldu ve find komutlarında -xdev kullanarak farklı mount’lara taşmadan gerçek kaynağı bulun.
du -xhd1 /var 2>/dev/null | sort -h | tail -n 25Silmeden önce dosyanın hangi servis veya cPanel hesabına ait olduğunu, aktif kullanılıp kullanılmadığını ve yedeğinin bulunup bulunmadığını belirleyin.
stat /YOL/DOSYA
lsof /YOL/DOSYA 2>/dev/nullLoglar logrotate ile, MySQL binary logları SQL PURGE komutuyla, cPanel yedekleri retention ayarıyla ve mail kuyruğu neden analiziyle temizlenmelidir.
logrotate -d /etc/logrotate.conf 2>&1 | tail -n 80lsof +L1 çıktısındaki büyük dosyanın sahibi olan servisi cPanel betiği veya systemctl ile kontrollü yeniden başlatın.
lsof +L1 2>/dev/null | sort -k7 -n | tail -n 30WHM disk kullanım eşiklerini, yedek retention’ı, logrotate ve MySQL binary log süresini düzenleyerek tekrarını önleyin.
df -hT
df -ihEn olası neden inode yüzde 100 veya hesap kotasıdır. df -i ve repquota çıktısı karşılaştırılır.
df -ih
repquota -a 2>/dev/null | head -n 80Süreç silinmiş dosyayı açık tutuyor olabilir. lsof +L1 ile PID bulunur ve yalnız ilgili servis kontrollü yeniden başlatılır.
lsof +L1 2>/dev/null | sort -k7 -n | tail -n 50Kuyruğu topluca silmeden önce spam gönderen hesap, donmuş mesajlar ve teslim hataları belirlenir. Asıl neden çözülmezse kuyruk yeniden dolar.
exim -bpc
exim -bp | exiqsumm | head -n 60Replikasyon kullanılıyorsa slave pozisyonu doğrulanır. Güvenli temizlik MariaDB içinden PURGE BINARY LOGS ile yapılır.
mysql -e "SHOW BINARY LOGS; SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';"Uzak hedef mount edilmediğinde yerel dizine yazılmış olabilir. Retention, tamamlanmamış yedek ve remote transport logları kontrol edilir.
mount | grep -E '/backup|backup'
du -h --max-depth=2 /backup 2>/dev/null | sort -h | tail -n 30İlgili dosya sisteminde veri bloğu veya inode kalmadığını gösterir. Hatanın oluştuğu yolun mount noktası df -h ve df -i ile kontrol edilmelidir.
Inode yüzde 100 olabilir veya kullanıcı kotası dolmuş olabilir. Disk kapasitesi ve inode ayrı kaynaklardır.
Dosya sistemindeki her dosya ve dizin için metadata kaydıdır. Çok sayıda küçük dosya disk alanı bitmeden inode’ları tüketebilir.
find ile üst dizinler altındaki dosya sayıları karşılaştırılır. Cache, session, mail ve tmp klasörleri özellikle incelenir.
Çalışan bir süreç silinen dosyayı açık tutuyor olabilir. lsof +L1 ile tespit edilir ve ilgili servis kontrollü restart edildiğinde alan serbest kalır.
Hayır. MariaDB’nin log indeksini bozabilir ve replikasyonu etkileyebilir. SHOW BINARY LOGS ve PURGE BINARY LOGS komutları kullanılmalıdır.
Hayır. Hesap kotası tek kullanıcının izin verilen kullanımını, df ise bütün dosya sisteminin fiziksel kapasitesini gösterir.
İş yüküne göre değişir; ancak veritabanı, log ve yedek büyümesi için kritik eşiğe gelmeden alarm üretecek güvenli pay bırakılmalıdır. Yüzde 90 üzeri kullanım yakından izlenmelidir.
cPanel, WHM, CloudLinux, LiteSpeed, MariaDB, Exim ve güvenlik katmanlarını birlikte analiz ederek yalnızca servisi kaldırmak yerine arızanın temel nedenini gideriyoruz.