Linux Dosya Indeksleri (inode) ve Sistem Mimarisi
Birkaç gündür http://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 |
http://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.
http://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!…