Inodes
Dosya sistemimizin tüm gerçek dosyalardan ve bu dosyaları yöneten bir veritabanından oluştuğunu hatırlıyor musunuz? Bu veritabanı inode table olarak bilinir.
Bir inode nedir?
Bir inode (index node), bu tabloda bir girdidir ve her dosya için bir tane vardır. Dosya hakkında her şeyi tanımlar, örneğin:
File type - regular file, directory, character device, vb.
Owner
Group
Access permissions
Timestamps - mtime (dosyanın son değiştirilme zamanı), ctime (özniteliklerin son değiştirilme zamanı), atime (son erişim zamanı)
Number of hardlinks to the file
Size of the file
Number of blocks allocated to the file
Pointers to the data blocks of the file - en önemlisi!
Temel olarak inode’lar dosya hakkında her şeyi saklar, dosya adı ve dosyanın kendisi hariç!
Inode’lar ne zaman oluşturulur?
Bir filesystem oluşturulduğunda, inode’lar için de alan ayrılır. Diskin hacmine ve daha fazlasına bağlı olarak ne kadar inode alanına ihtiyaç duyduğunuzu belirleyen algoritmalar vardır. Muhtemelen hayatınızın bir noktasında disk alanı bitti hatalarını görmüşsünüzdür. Aynı şey inode’lar için de gerçekleşebilir (her ne kadar daha az yaygın olsa da), inode’larınız tükenebilir ve bu nedenle daha fazla dosya oluşturamazsınız. Unutmayın, veri depolama hem veriye hem de veritabanına (inode’lar) bağlıdır.
Sisteminizde kaç inode kaldığını görmek için df -i
komutunu kullanın.
Inode bilgisi
Inode’lar numaralarla tanımlanır, bir dosya oluşturulduğunda ona bir inode numarası atanır, bu numara sıralı olarak atanır. Ancak bazen yeni bir dosya oluşturduğunuzda, diğerlerinden daha düşük bir inode numarası aldığını fark edebilirsiniz, bunun nedeni inode’lar silindikten sonra diğer dosyalar tarafından yeniden kullanılabilmesidir. Inode numaralarını görmek için ls -li
çalıştırın:
pete@icebox:~$ ls -li
140 drwxr-xr-x 2 pete pete 6 Jan 20 20:13 Desktop
141 drwxr-xr-x 2 pete pete 6 Jan 20 20:01 Documents
Bu komuttaki ilk alan inode numarasını listeler.
Bir dosya hakkında ayrıntılı bilgi almak için stat
komutunu da kullanabilirsiniz, bu inode hakkında da bilgi verir.
pete@icebox:~$ stat ~/Desktop/
File: ‘/home/pete/Desktop/’
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: 806h/2054d Inode: 140 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ pete) Gid: ( 1000/ pete)
Access: 2016-01-20 20:13:50.647435982 -0800
Modify: 2016-01-20 20:13:06.191675843 -0800
Change: 2016-01-20 20:13:06.191675843 -0800
Birth: -
Inode’lar dosyaları nasıl bulur?
Verimizin diskte bir yerlerde olduğunu biliyoruz, ne yazık ki muhtemelen sıralı olarak depolanmadı, bu yüzden inode’ları kullanmak zorundayız. Inode’lar dosyalarınızın gerçek data block’larına işaret eder. Tipik bir filesystem’de (hepsi aynı şekilde çalışmaz), her inode 15 pointer içerir, ilk 12 pointer doğrudan data block’larına işaret eder. 13. pointer, daha fazla block’a işaret eden pointer’ları içeren bir block’a işaret eder, 14. pointer başka bir iç içe pointer block’una işaret eder ve 15. pointer yine başka bir pointer block’una işaret eder! Kafa karıştırıcı, biliyorum! Bunun bu şekilde yapılmasının nedeni, inode yapısını her inode için aynı tutmak, ancak farklı boyutlardaki dosyalara referans verebilmektir. Küçük bir dosyanız varsa, ilk 12 doğrudan pointer ile daha hızlı bulabilirsiniz, daha büyük dosyalar pointer yuvalarıyla bulunabilir. Her iki durumda da inode’un yapısı aynıdır.
Last updated