Linux Dosya Indeksleri (inode) ve Sistem Mimarisi

January 9, 2010

Birkaç gündür kissa.be servisinin bulunduğu sunucu, diskte yer yok hatası nedeniyle düzgün bir şekilde hizmet veremiyordu. Durumu farkeder farketmez, diskteki yerimi kontrol ettiğimde gördüm ki; diskin %80'lik bir bölümü halen boş. Sorunun sunucu hizmeti aldığım firmayla görüşünce, anlaşıldı ki, diske format atarken varsayılan değerlerini aynen kabul ettiğim dosya indekslerimin (inode size) tükendiği için bu hatayı aldığım anlaşıldı.

Diskte mevcut inode sayısını görmek için;

root@localhost:~# df -ih

Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda 680K 21K 660K 3% /
/dev/sdc 1.3M 25K 1.2M 2% /files

Diskteki mevcut boş alanı görmek için ise;

root@localhost:~# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/sda 11G 741M 9.5G 8% /
/dev/sdc 4.8G 960M 3.6G 21% /files

Kissa.be resim ve metin gibi dosyaları saklamanıza yarayan bir servis olduğu için çok küçük oranlarda çok fazla dosya bulundurabiliyor bünyesinde. Bu da dosya indeks limitimin hızlı bir şekilde tükenmesine neden olmuştu.

Kissa.be'nin bulunduğu bir önceki sunucu da (Debian 4.0) bir dosya için ayrılması düşünülen dosya indeks boyutu (bytes-per-inode) 4096 ve dosya indeks alanı ise 128 idi. Şuan mevcut sunucumda (Ubuntu 9.10) ise varsayılan kurulum ayarları (8096 / 128) olarak geliyor.

Diskinize ait inode ve block gibi değerleri görmek için;

root@localhost:~# tune2fs -l /dev/sdc

Inode count: 1280000
Free inodes: 1255224
Inodes per group: 32000
Inode blocks per group: 1000
Inode size: 128

Sorunu tespit ettikten sonra çözüm bulmak gerçekten çok kolay oluyor. Linux'ta kissa.be servisine özel bir disk alanı gerekiyordu. Sunucuda inode değerleri ihtiyacıma göre olan bir alan yaratınca sorun kökten çözüldü. Böylece sunucunun işletim sistemi bu durumdan hiç etkilenmedi.

Diski inode değerlerine göre yeniden biçimlendirirken;

root@localhost:~# mkfs.ext3 -i 4096 -I 128 /dev/sdc

Aslında bu konularda uzman biri olduğumu pek söyleyemem. Çok anlamam ama, linux sistemiyle uğraşmayı, sistem programlama konularını seviyorum.

Yazının ana fikrine gelecek olursak;

Eğer kissa.be heveskar bir gencin projesi değil de, bit.ly gibi planlı bir proje olsaydı, gereksinim analizini okuyan bir Sistem Mimari servise ait dosyaları barındıran diskin formatlanması konusunda inode detayını atlamazdı.

Yaşadığım bu olay, bugün öğrendiğim küçük bir ders oldu!...