Inode Number Nedir - İnode Numarası



Unix/Linux sistemlerde herşeyin bir dosya olduğunu bir çok yerde belirttik. Bunun anlamı bazı dosyaların özelliklerini kapsama ve saklanması için yine dosyalar kullanılmaktadır. Inode Number, inode numarası. Bir dosya sisteminde (ext4,ext3,ntfs vb..) dosyaların saklanma işlemi dosyanın adı ve o ada karşılık gelen eşsiz, benzersiz bir tamsayıdan oluşmaktadır. Inode number konusunu tam olarak anlayabilmek için Disk yapısı hakkında biraz bilgi sahibi olunmasında fayda vardır. Çoğu insanın başına virüs ve benzeri yıkıcı programlardan dolayı talihssizlikler gelmiştir, öyleki bazen USb bellek yada bilgisayarınızın Hard diskinde boş yer olmasına karşın bir dosya oluşturmak istediğiniz zaman hata ile karşılaşır ve dosyayı oluşturamazsınız. Bu gibi durumlarda tabi en kısa yöntem olarak "virüs var en iyi ben diski formatlayayım.." klişesi ortaya çıkıyor. Bu ve benzeri olayların çoğunda aslında disk içeirisinde gerçekten boş alan vardır, ama yine de diski kullanmaya kalktığınız zaman disk dolu gibi hata alırsınız. Dosyaların oluşturulması ve saklanması işlemini şu şekilde yorumlayalım, Inode -> Index node, kelimelerinin kısaltılmasıdır. İndex kelimesini, programlama ile uğraşanların dizi oluşturulmasında kullanlan index kelimesinden anlayabilirler. Bu anlattıklarımızı biraz daha kolay şekilde özetleyelim. İlkokulda sınıftasınız diyelim. Buna göre aşağıdaki benzetimler doğru olacaktır. İşte burada öğrencilerin sahip olduğu "öğrenci numarası" Inode Number olacaktır. Yani her öğrencinin sadece ve sadece kendisine ait olan bir index numarası olacaktır. inode number inode numarası

Inode Number Ne İşe Yarar ?

Okullarda her sınıfın bir sıra sayısı ve mevcudu vardır. Dolayısıyle bir sınıfın alabileceği öğrenci sayısı belirlidir. Örneğin sizin sınıfınızda 20 adet oturulacak sıra var ise sınıfa sadece 20 öğrenci yerleşebilir. Fazla öğrenciye yer olmaz. Bu durumda Inode number, sınıfa yerleşebilecek öğrenci sayısını belirlemeye yarar. Inode numarası bir hard disk formatlanırken sizin tarafınızdan manuel olarak verilebilir, yada hiç verilmez ve otomatik olarak Inode numarası atanabilir. Burada şunu bilmemiz gerekmektedir. Inode number dosya sistemi her oluşturulduğunda bir defa belirlenir. Yukarıdaki anlatılanları toparlayacak olursak, Bir hard disk üzerinde dosya sistemi oluşturup, 10 adet Inode Number tanımladığımız zaman, bu dosya sisteminde en fazla 10 adet dosya olabilir. Başka dosya oluşturamazsınız. Yani diskte olabilecek dosya mevcudu sayısı Inode Number ile belirlenir. İsterseniz sistemimizde bulunan disk bölümleri için Inode Number değerlerine bakalım.
df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/root 1310720 697724 612996 54% / devtmpfs 1002936 665 1002271 1% /dev tmpfs 1003492 501 1002991 1% /run tmpfs 1003492 118 1003374 1% /dev/shm cgroup_root 1003492 14 1003478 1% /sys/fs/cgroup /dev/sda4 47785600 42149 47743451 1% /home /dev/sda1 0 0 0 - /boot/efi
Yukarıdaki çıktıya bakacak olursak, örneğin /dev/root bölümünde 1310720 adet inode number bulunmaktadır. Yani bu bölümün dosya mevcudu bu kadar. Yan tarafında ise "IUsed" altında /dev/root için 697724 sayısı bulunmaktadır. Bu sayı kullanılan inode number adedidir. Yani 1310720 adet inode numarasından 697724 tanesi kullanımda, o zaman 1310720-697724 adet boş ve kullanılabilir durumda inode number bulunmaktadır, buda "IFree" sütununa karşılık gelmektedir. Bunun anlamı, /dev/root dosya sisteminde 632996 adet daha dosya oluşturulabilir. Inode numarası sayısı dolduğu ve bütün Inode numaraları kullanıldığı zaman, diskte boş yer olmasına karşın bir dosya oluşturamazsınız. Çünkü yeni oluşturulacak dosyaya verilecek Inode Number kalmamıştır. Buraya dikkat etmelisiniz, yeni bir dosya oluşturulamaz demek diskte boş yer kalmadığı anlamına gelmez. Diskte boş yer var ve Inode Numarası tükenmişse dosya oluşmaz ama var olan dosyalar büyüyebilir. Sonuçta Inode Number dosyaların büyüklüğüne bağlı değildir sadece dosyaların sayısına bağlıdır. Şimdi örneğimize geri dönelim, sizin sınıfınızda hiç yer kalmamış olsun ve yeni bir öğrenci sizin sınıfa gelmek istesin. Inode number tükendiği için yeni öğrenci sizin sınıfınıza yerleşemez, ama sınıfınızın en zayıf öğrencisi çıkar ve yerine ondan daha kilolu bir öğrenci gelebilir. Hatta bütün öğrenciler sınıftan çıkar ve Inode numarası kadar yetişkin insan gelip sınıfta sizin yerinize oturabilir.

Inode Number Örnek

Son olarak konunun net olarak anlaşılabilmesi için bir örnek uygulama yapalım. Örnek olarak,
dd if=/dev/zero of=linux.iso count=1 bs=5M mkfs.ext4 -F linux.iso 1+0 records in 1+0 records out 5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.00960597 s, 546 MB/s bash-4.3# mkfs.ext4 -F linux.iso mke2fs 1.43.1 (08-Jun-2016) Discarding device blocks: done Creating filesystem with 5120 1k blocks and 1280 inodes Allocating group tables: done Writing inode tables: done Creating journal (1024 blocks): done Writing superblocks and filesystem accounting information: done mkdir linux mount -o loop linux.iso linux/
Yukarıda görüleceği üzere 1280 adet Inode Number bulunmakta.Bunlardan bazıları dosya sistemi tarafından kullanılmaktadır. Geriye kalanlarını kullanabiliriz. Bakalım kaç adet boş Inode Number bulunuyor.
df -i linux/ Filesystem Inodes IUsed IFree IUse% Mounted on /dev/loop0 1280 11 1269 1% /linux
Evet 1269 adet boşta Inode Number bulunmakta, dolayısıyla bu dizinde(aslında dizinin bağlı olduğu linux.iso dosya sisteminde) 1269 adet dosya oluşturabiliriz. Şimdi bu işlemi test edelim. Terminal ekranında aşağıdaki komutu yazınız ve Enter a basınız. Komutlar yeşil renkte olacaktır.
sayi=1 && while :; do mktemp -p linux/ && echo $sayi || break; sayi=$((sayi+1)); done; . .. ... linux/tmp.5gFaBP 1261 linux/tmp.G3WfmP 1262 linux/tmp.ZJpMpP 1263 linux/tmp.K9qo0N 1264 linux/tmp.f07A3N 1265 linux/tmp.SPFH8N 1266 linux/tmp.pBxjVN 1267 linux/tmp.Q9rrYN 1268 linux/tmp.ViEoLN 1269 mktemp: cannot create temp file linux/tmp.8uHgON: No space left on device
Gördüğünüz gibi 1269 adet dosya oluşturuldu, 1270. dosyaya sıra gelince hata verdi ve dosya oluşturulamadı. Çünkü Inode numaraları tükendi. Son olarak linux.iso dosyasında ne kadar boş alan var ona bakalım.
du -h linux.iso 1.3M linux.iso
1.3 megabyte kullanılan alan bulunmakta fakat linux.iso dosyası 5 Megabyte büyüklüğünde, ama dosya oluşturamıyoruz. İstediği kadar boş alan olsun eğer Inode number tükendiyse malesef yeni bir dosya oluşturulamaz. Son Söz: Dosya/klasörlere ait inode numarasını bulmak için ls komutunu -i parametresi ile kullanabilirsiniz. ls -i Herhangi bir dosyanın inode numarası ile o dosya üzerinde işlem yapabilirsiniz. Örneğin silemediğiniz bir dosya var ise, ismindeki özel karaterlerden dolayı yada benzer bir sorundan dolayı dosyayı silemiyorsunuz. Öncelikle ls -i ile dosyanın inode numarasını bulunuz ve find komutu ile dosyayı siliniz. Böylece dosya ismi işin içerisine katılmadan dosya direkt inode numarasından silinecektir. find . -inum ***** -exec rm {} \; Tabi burada silme işlemi haricinde ne işlem yapmak istiyorsanız onu yapabilirsiniz.



Diğer Paylaşımlar
Yorumlar