100 GB devasa diske sahip (Sadece 5 GB'ı dolu olan) sunucunuz aniden "No space left on device" (Diskte yer kalmadı) hatası verip MySQL çöktü! Herkes "Aaa Disk Dolmuş" der ama siz bakarsınız disk bomboş. İşte Linux sunucuların gizli katili: İnode (Dosya Sayısı Limitleri) kavramını çözüyoruz.
Inode Nedir? Diski Olan Bir Şey Neden Dolar?
Windows bilgisayarlar dosya konumlarını harflerle bağlarken (C:\Rapor.pdf); Linux Ext4 mimarisinde Dosyaların İsimleri ve İçerikleri haricinde, diskte nerede bulunduğuna dair bir "Kimlik / Adres Defteri Tutulur". Buna İnode (Index Node) denir.
Eğer 1 Terabayt'lık dev bir diskiniz varsa bile, içine 1'er Byte'lık MİLYONLARCA dosya atarsanız (Mesela spam PHP Sessionları); Diskte daha GB'larca boş "depolama" yeri kalsa dahi, Linux'un adres defteri (Inode Limit) dolduğu için yeni hiçbir küçük txt dahi oluşturamazsınız.
Kısaca: Kapasite yeriniz olsa dahi, Fiş kestiğiniz koçan bitmiştir. (Maksimum dosya adeti eşiği).
Inode Belasının Analizi ve Tesiti
Web sitenizin ana sayfa PHP si çalışmıyor, veritabanı hata veriyor. Hemen komut satınından Inode doluluğunu test edelim:
df -i
Bu komut disk free alanını (Inodes -i) modunda sergiler. Ekranda İUse (Kullanım Yüzdesi) kısmı %100 veya %99 görünüyorsa hasta masada yatıyor demektir.
Suçlu Hangi Klasör?
Root dizininde onbinlerce milyonlarca dosyanın tek bir dizinde biriktiği (çöp takıntı olduğu) noktayı bulmanız lazım. Aşağıdaki mucizevi kodu tam olarak linux terminalinize root veya home klasöründeyken kopyalayıp yapıştırın:
# Bulunduğunuz dizindeki tüm alt dizinlerdeki DOSYA SAYISINI çıkartıp ekran yazar
echo "Inodes klasör analiz raporu başlıyor...";
for d in `find -maxdepth 1 -type d | grep -v '^\.$'`; do echo -e `find "$d" | wc -l` "\t$d"; done | sort -n
Terminale düşen raporda bakarsınız ki normal klasörlerin yanında "132", "45" rakamları çıkarken, /var/lib/php/sessions veya WordPress sitenizin /wp-content/cache/ klasörünün yanında tam 17.580.000 (17 milyon!) rakamı çıkmış.
Demek ki Opcache veya PHP çökmüş, silemediği Session çöp poşetleriyle sunucunun kimlik koçanlarını tüketmiştir.
🚀 Limitsiz Cpanel Inodes Gücü
Aylık cüretkar bir miktar dosya limiti dayatan ve WordPress'iniz resimlerini küçülttüğünde / cache attığında kitlenip para isteyen standart hostinglere veda edin. HazalHost Inodes kotalarında son derece cömert ve limitsiz SSD depolama sunmaktadır.
Temizlik Safhası: Linux Neden Silerken Kilitlenir?
Şimdi suçluyu (/var/lib/php/sessions) bulduk klasöre gittiniz ve normal klasik silme komutu verdiniz: rm -rf *
Konsol kitlenir: "Argument list too long!" (Argüman çok uzun). Çünkü linux 10 milyon tane dosyayı ram belleğine çekip "SİLEBİLİRMİYİM CİCİ KIZ" diye listesini oluşturamaz, hafıza taşar. O devasa yığın çöpten parça parça silinerek kurtulmak gerekir. Şu komut ile hafızayı bozmadan temizlersiniz:
# find(Bul) klasörüne git(.), f dosya tipinde olanları tespit et ve her birisine Xargs ile anında rm(Sİl) kılıcı vur!
find . -name "sess_*" -type f -print0 | xargs -0 rm -f
Sonuç
Ön bellekleme (Caching), E-Posta logları (Exim) ve PHP Session çerezleri bir sunucuda zamanla "Kar Topu Etkisi" yaratan patlamaya hazır sinsi veri yığınlarıdır. Sunucu kaynakları denilince aklınıza Disk veya Ram geliyorsa Inode tokadı yediğinizde artık bu konsepti çok iyi öğrenmiş olacaksınız.