Inode Nedir? Linux Sunucularda Inode Kullanımı, Temizleme ve İzleme Rehberi
Inode Nedir? Linux Sunucularda Inode Kullanımı, Temizleme ve İzleme Rehberi
Son Güncelleme: Temmuz 2026
Inode, Linux dosya sistemlerinde her dosya ve dizin için kullanılan temel kimlik ve metadata kayıt yapısıdır. Bir sunucuda disk alanı boş görünse bile inode limiti dolduğunda yeni dosya oluşturulamaz, e-posta alınamaz, oturum dosyaları yazılamaz ve web uygulamaları beklenmedik hatalar verebilir.
Bu rehberde Linux sunucularda inode kullanımı nasıl kontrol edilir, inode tüketiminin en yaygın nedenleri nelerdir, güvenli temizlik nasıl yapılır ve hosting ortamlarında inode planlaması nasıl ele alınmalıdır sorularını pratik komutlarla açıklıyoruz.
İçindekiler
- Inode Nedir?
- Inode Neden Önemlidir?
- Inode Kullanımı Nasıl Kontrol Edilir?
- Inode Tüketiminin Yaygın Nedenleri
- Inode Temizleme Yöntemleri
- Hosting ve Sunucu Planlamasında Inode
- Otomatik İzleme ve Alarm Senaryoları
- En İyi Uygulamalar
- Sıkça Sorulan Sorular
- Sonuç
Inode Nedir?
Inode, Linux ve Unix benzeri işletim sistemlerinde dosya sisteminin her dosya, dizin, sembolik bağlantı ve bazı özel nesneler için tuttuğu kayıt birimidir. Inode, dosyanın adını doğrudan saklamaz; bunun yerine dosyanın sahipliği, izinleri, boyutu, zaman damgaları ve diskteki veri bloklarına işaret eden referansları içerir. Dosya adı ise dizin yapısı içinde inode numarasına bağlanır.
Basit bir örnekle düşünürsek, bir dosya adı kullanıcının gördüğü etiket, inode ise işletim sisteminin dosyayı tanımak için kullandığı kimlik kartıdır. Aynı inode numarasına işaret eden birden fazla dosya adı olabilir; buna hard link yani sabit bağlantı denir. Bu nedenle Linux dosya sistemlerinde dosya yönetimi yalnızca dosya adına değil, arka plandaki inode kayıtlarına da dayanır.
Inode yapısı özellikle ext4, XFS ve benzeri dosya sistemlerinde kritik öneme sahiptir. Bir disk bölümünde kullanılabilir veri alanı ve kullanılabilir inode sayısı ayrı ayrı değerlendirilir. Yani sunucunuzda gigabaytlarca boş alan olsa bile inode sayısı tükenirse yeni dosya oluşturulamaz. Bu durum özellikle çok sayıda küçük dosya üreten web sitelerinde, e-posta sistemlerinde, cache (önbellek) dizinlerinde ve log (kayıt) klasörlerinde sık görülür.
Inode Hangi Bilgileri Tutar?
- Dosya türü: Normal dosya, dizin, sembolik bağlantı veya özel aygıt dosyası bilgisi.
- Yetkiler: Okuma, yazma ve çalıştırma izinleri gibi erişim izinleri.
- Sahiplik: Kullanıcı kimliği ve grup kimliği bilgileri.
- Boyut: Dosyanın bayt cinsinden büyüklüğü.
- Zaman damgaları: Oluşturma, değiştirme ve erişim zamanlarıyla ilgili kayıtlar.
- Blok işaretçileri: Dosya içeriğinin diskte hangi veri bloklarında bulunduğunu gösteren referanslar.
Inode Neden Önemlidir?
Inode kullanımı, sunucu sağlığı açısından çoğu zaman disk kapasitesi kadar önemlidir. Birçok yönetici disk doluluk oranını yalnızca df -h komutuyla kontrol eder. Bu komut veri alanı kullanımını gösterir; ancak inode kullanımını göstermez. Inode doluluğunu görmek için ayrıca df -i komutu kullanılmalıdır.
Inode limiti dolduğunda karşılaşılabilecek tipik belirtiler şunlardır:
- Yeni dosya oluşturulamaması: Uygulamalar geçici dosya, cache dosyası veya oturum dosyası yazamaz.
- E-posta teslim sorunları: Maildir yapısında her e-posta ayrı dosya olarak tutulduğu için inode tükenmesi gelen e-postaların reddedilmesine neden olabilir.
- Web uygulaması hataları: WordPress, Laravel veya özel PHP uygulamaları cache ve session (oturum) yazamadığında beyaz sayfa, 500 hatası veya giriş sorunları oluşabilir.
- Log yazılamaması: Servisler hata kayıtlarını yazamadığı için sorun tespiti zorlaşır.
- Paket yönetimi problemleri: Güncelleme sırasında yeni paket dosyaları oluşturulamadığından
apt,dnfveyayumişlemleri başarısız olabilir.
Özellikle paylaşımlı Hosting, Linux Hosting, VPS ve VDS ortamlarında inode kullanımı düzenli takip edilmelidir. Trafiği yüksek olan bir web sitesinde her ziyaret sonucunda küçük önbellek dosyaları, küçük görseller, log parçaları veya geçici dosyalar üretilebilir. Bu dosyalar tek tek küçük olsa da sayı olarak büyüdüğünde inode sınırına hızlıca ulaşılabilir.
Inode Kullanımı Nasıl Kontrol Edilir?
Inode kullanımını analiz etmek için temel Linux komutları yeterlidir. Aşağıdaki komutlar root veya yetkili kullanıcı ile çalıştırıldığında hangi disk bölümünde ne kadar inode kullanıldığını hızlıca gösterir.
Genel Inode Kullanımını Görüntüleme
df -i
Bu komut, her bağlı dosya sistemi için toplam inode sayısını, kullanılan inode miktarını, boş inode sayısını ve kullanım yüzdesini listeler. IUse% sütunu yüzde olarak inode doluluğunu gösterir. Bu değer yüzde 80 seviyesini geçtiğinde inceleme yapılması, yüzde 90 seviyesinden sonra ise temizlik veya kapasite planlaması yapılması önerilir.
Disk Alanı ve Inode Kullanımını Birlikte Kontrol Etme
df -h
df -i
df -h disk alanı kullanımını insan tarafından okunabilir formatta gösterir. df -i ise inode durumunu gösterir. Bu iki komut birlikte değerlendirilmelidir. Eğer disk alanı boş fakat inode doluysa problem genellikle çok sayıda küçük dosyadan kaynaklanır.
Belirli Bir Dizindeki Dosya Sayısını Bulma
find /var/www -xdev -type f | wc -l
Bu komut /var/www altında kaç adet dosya olduğunu sayar. -xdev parametresi, başka dosya sistemlerine geçişi engeller. Büyük sunucularda bu komut yoğun I/O (girdi/çıktı) oluşturabileceği için düşük trafik saatlerinde çalıştırılmalıdır.
En Çok Dosya Bulunan Dizinleri Listeleme
for i in /*; do echo "$i"; find "$i" -xdev -type f 2>/dev/null | wc -l; done
Bu örnek, kök dizindeki ana klasörlerin altında kaç dosya olduğunu saymaya yardımcı olur. Daha ayrıntılı analiz için önce üst dizinler incelenmeli, ardından dosya sayısı yüksek çıkan dizinlerin alt klasörlerine inilmelidir.
Inode Numarasını Görüntüleme
ls -li /path/to/dosya
ls -li komutu dosyanın inode numarasını gösterir. Hard link analizlerinde veya aynı inode değerini paylaşan dosyaların tespitinde bu bilgi kullanılabilir.
Inode Tüketiminin Yaygın Nedenleri
Inode doluluğu genellikle tek bir büyük dosyadan değil, binlerce veya milyonlarca küçük dosyadan kaynaklanır. Bu nedenle klasik disk temizliği yaklaşımı her zaman yeterli olmaz. Aşağıdaki tablo, sunucularda sık görülen inode tüketim kaynaklarını ve pratik çözüm yaklaşımlarını özetler.
| Kaynak | Tipik Konum | Belirti | Çözüm Yaklaşımı |
|---|---|---|---|
| Web cache dosyaları | /var/www, cache, storage/framework/cache |
Çok sayıda küçük dosya | Cache temizleme, süre sınırı koyma, Redis gibi merkezi önbellek kullanma |
| PHP session dosyaları | /var/lib/php/sessions, /tmp |
Eski oturum dosyalarının birikmesi | Oturum yaşam süresini düzenleme, periyodik temizlik |
| E-posta kutuları | Maildir dizinleri |
Binlerce küçük mail dosyası | Arşivleme, kota uygulama, eski mailleri taşıma |
| Log dosyaları ve parçaları | /var/log |
Rotasyonu yapılmamış veya aşırı parçalanmış loglar | Log rotasyonu, gereksiz debug kayıtlarını kapatma |
| Yedekleme artıkları | /backup, kullanıcı dizinleri |
Eski ve parçalı yedek dosyaları | Saklama politikası, uzak yedekleme, otomatik temizlik |
Web Uygulamalarında Küçük Dosya Birikimi
WordPress, Laravel, özel PHP panelleri ve e-ticaret yazılımları performans için cache dosyaları üretebilir. Bu dosyalar doğru yönetildiğinde faydalıdır; ancak temizlik mekanizması çalışmıyorsa inode tüketimi hızla artar. Örneğin her ürün sayfası, her dil varyasyonu ve her mobil görünüm için ayrı cache dosyası üreten bir sistemde dosya sayısı kısa sürede yüz binleri bulabilir.
E-posta Sistemlerinde Maildir Etkisi
Maildir formatında her e-posta ayrı dosya olarak saklanır. Büyük ekli dosyalar disk alanını artırırken, çok sayıda küçük e-posta inode kullanımını artırır. Özellikle uzun süre temizlenmeyen spam klasörleri, çöp kutuları ve sistem bildirim kutuları inode tüketiminin görünmeyen nedenleri olabilir.
Geçici Dizinler ve Oturum Dosyaları
/tmp, /var/tmp ve PHP session dizinleri düzenli izlenmelidir. Oturum dosyalarının otomatik temizlenmemesi, bot trafiği alan sitelerde ciddi inode tüketimi yaratır. Kullanıcı oturumları kısa ömürlü olsa bile dosyalar temizlenmiyorsa inode kaybı kalıcı hale gelir.
Inode Temizleme Yöntemleri
Inode temizliği yapılırken rastgele dosya silmek ciddi veri kaybına neden olabilir. Önce hangi dizinlerin fazla dosya içerdiği bulunmalı, ardından uygulama mantığına uygun temizlik yapılmalıdır. Aşağıdaki yöntemler güvenli bir başlangıç sağlar; ancak üretim ortamında işlem yapmadan önce mutlaka yedek alınmalıdır. Düzenli ve güvenli yedekleme için Corelux Yedekleme Hizmeti gibi çözümler değerlendirilebilir.
Eski Geçici Dosyaları Temizleme
/tmp altında 7 günden eski normal dosyaları listelemek için:
find /tmp -type f -mtime +7 -print
Listeyi kontrol ettikten sonra silmek için:
find /tmp -type f -mtime +7 -delete
Önce -print ile sonuçları görmek, ardından -delete kullanmak güvenli bir yaklaşımdır. Kritik uygulamalar geçici dizinde aktif dosya tutuyor olabilir. Bu yüzden temizlik zamanlaması dikkatli seçilmelidir.
Laravel Cache ve Log Temizliği
Laravel projelerinde cache, view cache (görünüm önbelleği) ve log dosyaları inode tüketebilir. Uygulama dizininde aşağıdaki komutlar kullanılabilir:
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
Log dizinindeki eski dosyalar ayrıca incelenmelidir. storage/logs klasöründe günlük bazlı log rotasyonu yapılması önerilir. Tek bir çok büyük log dosyası disk alanı tüketirken, çok sayıda parçalı log dosyası inode tüketimini artırabilir.
WordPress Cache Temizliği
WordPress sitelerinde eklentiye göre cache dizini değişir. Genellikle wp-content/cache klasörü incelenir. Komut satırından silme yapılacaksa önce dosya sayısı ve klasör yapısı kontrol edilmelidir:
find /home/kullanici/public_html/wp-content/cache -type f | wc -l
Cache eklentisinin panelinden temizlik yapmak genellikle daha güvenlidir. Komut satırından silme gerekiyorsa yalnızca ilgili cache klasörü hedeflenmeli, wp-content/uploads gibi medya dosyalarının bulunduğu dizinlere yanlışlıkla müdahale edilmemelidir.
Boş Dizinleri Temizleme
find /path/to/dizin -type d -empty -delete
Boş dizinler de inode kullanır. Büyük projelerde silinmiş dosyalardan geriye kalan boş klasörler zamanla birikebilir. Ancak uygulama bazı boş dizinlerin var olmasını bekliyorsa bu işlem sorun yaratabilir. Bu yüzden önce aşağıdaki komutla listeleme yapılması önerilir:
find /path/to/dizin -type d -empty -print
Çok Sayıda Dosyada Güvenli Silme
Milyonlarca dosyanın bulunduğu bir dizinde klasik rm * komutu argüman limiti veya performans sorunları nedeniyle başarısız olabilir. Daha güvenli yöntem:
find /path/to/cache -type f -delete
Alternatif olarak dosyaları yaş kriterine göre silmek daha kontrollüdür:
find /path/to/cache -type f -mtime +3 -delete
Bu komut, 3 günden eski dosyaları siler. Uygulama cache mantığına göre süre 1 gün, 7 gün veya daha uzun seçilebilir.
Hosting ve Sunucu Planlamasında Inode
Inode planlaması yalnızca mevcut sorunu çözmek için değil, gelecekteki büyümeyi sağlıklı yönetmek için de gereklidir. Özellikle çok kullanıcılı hosting ortamlarında her hesabın dosya sayısı, e-posta kutusu, web cache yapısı ve yedekleme alışkanlıkları farklıdır. Bu nedenle inode kullanımını hesap bazında takip etmek önemlidir.
Küçük bir kurumsal web sitesi birkaç bin inode ile çalışabilirken, yüksek trafikli bir e-ticaret sitesi yüz binlerce inode kullanabilir. Görsel varyasyonları, ürün cache dosyaları, dil dosyaları, e-posta arşivleri ve geçici işlem dosyaları bu sayıyı artırır. Bu noktada yalnızca disk kapasitesi yüksek bir paket seçmek yeterli değildir; dosya sayısı ve kullanım modeli de dikkate alınmalıdır.
Kaynak ihtiyacı artan projelerde Sanal Sunucu, Türkiye VDS Sunucu veya Kiralık Sunucu seçenekleri daha esnek yönetim sağlar. Böylece dosya sistemi yapısı, disk bölümlendirme, yedekleme stratejisi ve inode izleme politikaları proje ihtiyaçlarına göre özelleştirilebilir.
Dosya Sistemi Seçimi ve Inode
Dosya sistemi seçimi inode davranışını etkiler. Örneğin ext4 dosya sisteminde inode sayısı genellikle dosya sistemi oluşturulurken belirlenir. Bu yüzden yanlış planlanmış bir bölümde inode limiti beklenenden önce dolabilir. XFS ise inode yönetiminde farklı bir yaklaşım sunar ve büyük ölçekli dosya sistemlerinde yaygın kullanılır. Ancak dosya sistemi seçimi tek başına çözüm değildir; uygulamanın dosya üretim davranışı da optimize edilmelidir.
Inode ve Yedekleme İlişkisi
Çok sayıda küçük dosyanın yedeklenmesi, az sayıda büyük dosyanın yedeklenmesine göre daha uzun sürebilir. Çünkü yedekleme yazılımı her dosya için metadata okumak, izinleri işlemek ve hedefe kayıt oluşturmak zorundadır. Bu nedenle inode sayısı yüksek olan sistemlerde yedekleme penceresi uzayabilir. Snapshot (anlık görüntü), incremental backup (artımlı yedekleme) ve arşivleme politikaları bu gerçeğe göre tasarlanmalıdır.
Otomatik İzleme ve Alarm Senaryoları
Inode sorunları genellikle kritik seviyeye gelene kadar fark edilmez. Bu nedenle manuel kontrol yerine otomatik izleme tercih edilmelidir. Basit bir cron job (zamanlanmış görev) ile inode oranı belirli eşiği geçtiğinde uyarı üretilebilir.
Basit Inode Kontrol Scripti
#!/bin/bash
LIMIT=85
USAGE=$(df -i / | awk 'NR==2 {gsub("%","",$5); print $5}')
if [ "$USAGE" -ge "$LIMIT" ]; then
echo "Uyarı: Kök dosya sistemi inode kullanımı %$USAGE seviyesinde."
fi
Bu script kök dosya sistemi için inode kullanımını kontrol eder. Gerçek üretim ortamlarında çıktı e-posta, webhook veya izleme sistemine gönderilebilir. Birden fazla disk bölümü varsa script genişletilerek /home, /var ve /tmp gibi kritik bağlama noktaları ayrı ayrı izlenmelidir.
Cron ile Periyodik Çalıştırma
crontab -e
Aşağıdaki örnek, scripti her saat çalıştırır:
0 * * * * /usr/local/bin/inode-kontrol.sh
Alarm eşikleri belirlenirken yüzde 80 bilgilendirme, yüzde 90 uyarı, yüzde 95 kritik seviye olarak değerlendirilebilir. Ancak yoğun dosya üretimi olan sistemlerde eşiklerin daha düşük tutulması gerekebilir.
Uygulama Bazlı İzleme
Sunucu genel inode izleme önemlidir; fakat bazen sorun tek bir kullanıcı hesabından veya tek bir uygulamadan kaynaklanır. Bu nedenle /home altındaki kullanıcı dizinleri, web kök dizinleri ve cache klasörleri belirli aralıklarla raporlanmalıdır. Özellikle bayi hosting, ajans yönetimi ve çok siteli yapılarda hesap bazlı inode raporları kapasite planlamasını kolaylaştırır.
En İyi Uygulamalar
Inode yönetimi, tek seferlik temizlikten ibaret değildir. Sağlıklı bir sistem için uygulama, işletim sistemi ve operasyon süreçleri birlikte ele alınmalıdır. Aşağıdaki öneriler, inode kaynaklı kesintileri azaltmak için uygulanabilir.
- Düzenli ölçüm yapın:
df -içıktısını izleme sisteminize dahil edin ve geçmiş trendleri takip edin. - Cache yaşam süresi belirleyin: Web cache dosyalarının sonsuza kadar saklanmasına izin vermeyin.
- Oturum temizliğini kontrol edin: PHP session dosyalarının belirli aralıklarla temizlendiğinden emin olun.
- E-posta kotaları kullanın: Kullanıcıların spam, çöp ve arşiv klasörlerinde sınırsız dosya biriktirmesini önleyin.
- Log rotasyonu uygulayın: Logların hem boyut hem de dosya sayısı açısından kontrol altında kalmasını sağlayın.
- Yedekleri ayrı tutun: Yerel yedeklerin web dizinleri içinde gereksiz inode tüketmesine izin vermeyin.
- Dosya sistemi planlaması yapın: Çok küçük dosya üreten uygulamalar için disk bölümlendirme ve dosya sistemi seçimini baştan değerlendirin.
- Silmeden önce listeleyin: Toplu silme komutlarında önce
-printile hedef dosyaları doğrulayın. - Uygulama mimarisini gözden geçirin: Milyonlarca küçük dosya yerine nesne depolama, veritabanı veya merkezi cache çözümleri gerekebilir.
Pratik Senaryo: Inode Dolu Ama Disk Boş
Bir sunucuda df -h çıktısı yüzde 40 disk kullanımı gösterirken df -i çıktısı yüzde 100 inode kullanımı gösterebilir. Bu durumda yapılacak işlem, büyük dosya aramak değil, çok sayıda küçük dosya üreten dizinleri bulmaktır. Önce /tmp, /var/lib/php/sessions, /var/log, /home ve web cache dizinleri kontrol edilmelidir. Sorunlu dizin bulunduktan sonra uygulama sahibine danışılarak eski cache, geçici dosya veya spam e-posta temizliği yapılmalıdır.
Pratik Senaryo: E-Ticaret Sitesinde Görsel Varyasyonları
E-ticaret siteleri her ürün görseli için farklı boyutlarda thumbnail (küçük önizleme görseli) üretebilir. 10.000 ürün ve her ürün için 8 görsel varyasyonu olan bir yapıda yalnızca görseller on binlerce inode tüketebilir. Buna cache, dil dosyaları, sitemap parçaları ve loglar da eklendiğinde inode tüketimi hızla artar. Bu tür projelerde Bulut Sunucu veya ölçeklenebilir VDS altyapısı tercih edilerek depolama mimarisi daha kontrollü tasarlanabilir.
Sıkça Sorulan Sorular
Inode dolarsa ne olur?
Inode dolduğunda sunucuda disk alanı boş olsa bile yeni dosya oluşturulamaz. Bu durum web uygulamalarında cache yazma hatalarına, e-posta teslim sorunlarına, oturum problemlerine ve log kayıtlarının durmasına neden olabilir.
Inode kullanımı hangi komutla kontrol edilir?
Linux sunucularda inode kullanımını kontrol etmek için df -i komutu kullanılır. Disk alanı kullanımını görmek için ise df -h komutu çalıştırılır. Sağlıklı analiz için iki çıktı birlikte değerlendirilmelidir.
Inode artırılabilir mi?
Bu durum kullanılan dosya sistemine bağlıdır. Bazı dosya sistemlerinde inode sayısı dosya sistemi oluşturulurken belirlenir ve sonradan kolayca artırılamaz. Böyle bir durumda veriyi yedekleyip dosya sistemini uygun parametrelerle yeniden oluşturmak veya daha uygun bir depolama yapısına geçmek gerekebilir.
Inode doluluğu disk doluluğu ile aynı şey midir?
Hayır. Disk doluluğu veri bloklarının ne kadarının kullanıldığını, inode doluluğu ise dosya sistemi üzerinde kaç dosya veya dizin kaydı oluşturulduğunu gösterir. Çok sayıda küçük dosya inode doluluğunu artırırken disk alanı düşük seviyede kalabilir.
En çok inode tüketen dizin nasıl bulunur?
Önce df -i ile hangi dosya sisteminin dolu olduğu belirlenir. Ardından ilgili bağlama noktası altında find ve wc -l komutlarıyla dizin bazlı dosya sayımı yapılır. Büyük sistemlerde bu işlem dikkatli ve düşük trafik saatlerinde uygulanmalıdır.
Cache dosyalarını silmek güvenli midir?
Genellikle cache dosyaları yeniden üretilebilir; ancak her uygulamanın cache yapısı farklıdır. Silmeden önce ilgili klasörün gerçekten cache klasörü olduğundan emin olunmalı ve mümkünse uygulamanın kendi cache temizleme aracı kullanılmalıdır.
Hosting paketlerinde inode limiti neden bulunur?
Paylaşımlı hosting ortamlarında inode limiti, tek bir hesabın sunucu üzerindeki dosya sistemi kaynaklarını aşırı tüketmesini önlemek için kullanılır. Bu limit, hizmet kararlılığı ve diğer kullanıcıların performansı açısından önemlidir.
Sonuç
Inode yönetimi, Linux sunucularda performans, kararlılık ve veri sürekliliği için kritik bir konudur. Disk alanı boş görünse bile inode limiti dolduğunda uygulamalar dosya yazamaz, e-posta sistemleri aksayabilir ve servisler beklenmedik hatalar üretebilir. Bu nedenle df -i ile düzenli kontrol yapmak, küçük dosya üreten dizinleri izlemek, cache ve geçici dosya politikalarını doğru yapılandırmak gerekir.
Projeler büyüdükçe yalnızca daha fazla disk alanı değil, daha doğru dosya sistemi tasarımı, düzenli yedekleme, izleme ve kapasite planlaması da gerekir. Corelux; Linux Hosting, Türkiye VPS Sunucu, Türkiye VDS Sunucu ve Kiralık Sunucu çözümleriyle farklı ölçeklerdeki projeler için esnek altyapı seçenekleri sunar. Inode kullanımınız sık sık kritik seviyeye ulaşıyorsa, temizlik işlemlerinin yanında altyapı mimarinizi de gözden geçirmeniz en doğru yaklaşım olacaktır.
Yazar
Boran BAR