Bir VDS sunucuda en can sıkıcı hatalardan biri, disk alanınızın bomboş görünmesine rağmen dosya yazmaya çalıştığınızda 'diskte yer yok' uyarısıyla karşılaşmaktır. Çoğu kullanıcı panikleyip gereksiz yere disk temizler, hatta tüm sistemi yeniden kurmayı düşünür. Oysa sorun çoğu zaman disk alanıyla değil, inode adı verilen dosya sistemi yapı taşlarının tükenmesiyle ilgilidir. Gelin bu kavramı açıklığa kavuşturalım.
Inode Nedir ve Ne İşe Yarar?
Inode (index node), bir dosya veya dizinin meta verilerini tutan bir veri yapısıdır. Dosyanın adı dışındaki her şey (izinler, sahip, boyut, zaman damgaları, diskteki blok adresleri) inode içinde saklanır. Her dosya ve dizin için bir inode kullanılır. İşletim sistemi, diskte belirli sayıda inode barındırır; bu sayı dosya sistemi oluşturulurken sabitlenir. Yani diskte fiziksel olarak boş alan olsa bile inode sayısı tükenmişse yeni dosya oluşturamazsınız.
Inode Dolmasına Ne Sebep Olur?
Genelde çok sayıda küçük boyutlu dosya inode tüketimini hızlandırır. Örneğin:
- Web sunucusu geçici dosyaları (cache, session)
- Sistem logları (özellikle log rotation yanlış yapılandırılmışsa)
- E-posta kuyruk veya posta kutusu dosyaları
- Yedekleme parçaları veya küçük yapılandırma dosyaları
- Yazılım güncelleme kalıntıları
Bir örnek: 1 MB'lık tek bir dosya ile 1000 tane 1 KB'lık dosyanın kapladığı alan aynı olsa da, küçük dosyalar 1000 inode tüketirken büyük dosya sadece 1 inode tüketir.
Nasıl Kontrol Edilir?
Disk alanını sorgulamak için df -h kullanılır. Inode kullanımını sorgulamak için ise df -i komutunu çalıştırın. Bu komut size toplam inode sayısını, kullanılan ve boşta olan inode miktarını gösterir. Kullanım oranı %100 veya %90 üzerindeyse sorun inode kaynaklıdır.
En çok inode tüketen dizinleri bulmak için şu komutları kullanabilirsiniz:
find / -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head -20
Bu komut, tüm dosya sistemindeki dizinleri dosya sayısına göre sıralayarak en kalabalık 20 dizini listeler.
Çözüm Yöntemleri
1. Gereksiz Dosyaları Temizleyin
Log dosyalarını döndürmek (logrotate), eski önbellek ve geçici dosyaları silmek en hızlı çözümdür. Örneğin /tmp, /var/tmp, /var/cache altındaki dosyaları düzenli olarak temizleyin. E-posta sunucusu kullanıyorsanız posta kuyruğunu boşaltın.
2. Küçük Dosyaları Birleştirin
Uygulamanız çok sayıda küçük dosya oluşturuyorsa (örneğin oturum dosyaları), bunları bir veritabanına veya sıkıştırılmış arşive taşıyın. Bu sayede aynı miktarda veri için çok daha az inode kullanırsınız.
3. Inode Sayısını Artırmak
VDS sunucularda inode sayısı genelde dosya sistemi oluşturulurken belirlenir ve değiştirilmesi zordur. Bazı sağlayıcılar (HızlıVDS gibi) destek talebiyle inode limitini artırabilir. Alternatif olarak, dosya sistemini yeniden biçimlendirmeden inode sayısını artırmak mümkün değildir; bu da veri kaybı riski taşır.
4. Sunucu Sağlayıcınıza Başvurun
Eğer kendi başınıza çözemiyorsanız, sunucu sağlayıcınızdan yardım isteyin. HızlıVDS olarak bu tür durumlarda kullanıcılarımıza destek sunuyor, gerekirse daha geniş inode kapasiteli bir plana geçmelerini öneriyoruz.
Önleyici Tedbirler
Inode sorunu yaşamamak için düzenli olarak df -i ile inode kullanımınızı takip edin. Başta log yönetimi olmak üzere, küçük dosya oluşturan uygulamaların ayarlarını optimize edin. Önbellek dosyalarını periyodik olarak temizleyen bir cron job oluşturmak da iyi bir pratiktir.
Unutmayın, disk alanınız ne kadar boş olursa olsun inode’lar tükenirse yeni dosya yazamazsınız. Bu nedenle hem disk hem inode kullanımını birlikte izlemek, sorunsuz bir sunucu işletmenin anahtarıdır. Sorun yaşarsanız, yukarıdaki adımları uygulayarak kolayca çözüme ulaşabilirsiniz.