UNIX tabanlı sistemlerde bulunan bir veri yapısıdır.Inode bir dosyanın,klasörün meta datasını tutmamızı sağlan bir sistemdir. Inode , index node diye de geçmetedir.UNIX tabanlı bir sistemde her nesne bir inode ile temsil edilir. Yani dosyaları ve klasörleri inode ile indexlemekteyiz.
Bu index inode number denen bir yapı ile oluşturulmaktadır.Inode number rastgele değil bir patterne göre işlemektedir. Inode numarası
- Dosya tipini
- Dosya İzinleri
- Kullanıcı ID
- Grup ID
- Dosya Büyüklüğü
- Soft Hard Link sayısı
- Datanın pointerını
Linux sistemde dosya sisteminde belirli bir hiyerarşi vardır. Dosya sistemi /home,/root gibi bir yapıda bulunmaktadır. Bu sistem Dosya isimlerine bağlıdır. Dosya sistemleri de Inode'a bağlıdır. Inode'da dosyalardaki dataya linklidir.
Aynı INODE'a sahip iki dosya aslında aynı iki dosyadır.
Şimdi sistemimizde dosyaların inode numaralarını görmek için bir komutları yazalım.
- ls -i
$ ls -i . $ 16520505 ETL.md
- find komutu ile arama yapabilmek için
$ find . -inum 16520505
$ ./ETL.md
- stat komutu ile inode komutu:
$ stat . -inum 16520505
$ stat dosya_1
File: 'dosya_1'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 30h/48d Inode: 79 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-06-15 22:12:29.577308469 +0000
Modify: 2017-06-15 22:12:29.577308469 +0000
Change: 2017-06-15 22:12:29.577308469 +0000
Birth: -
Yukarıda stat komutu ile uid'sini user'ın kim olduğunu kaç adet soft link oluşturuldur son değişim tarihine kadar birçok veriyi görebiliyoruz.Aynı zamanda Inode numarası.
- Inode ile beraber bağlantılı olan bir konu daha blocktur.Block dosyanın contentini tuttuğumuz kısımdır. Mesela ls yazdık neler oldu bakalım.
$ ls -a
$ .. . file.txt
* Bu nasıl oldu.Linux Dosya Sisteminde bir söz vardır 'EveryTHINK is a file.'Yani bizim klasörümüz de aslında bir dosyadır.
-
Burada dosyanın inode'una erişilir tutulduğu block bulunur ve oradaki tüm content çekilir.Bizim şuan çalıştığımız klasörün içeriği de file.txt ve parent directory'e ulaşan bir link.
-
Aynı durum cat komutu içinde geçerlidir.Aynı işlem iki defa yapılır block a gidilir dosya adları çekilir,mesela şunu yazdık diyelim
$ cat file.txt
$ TANRI ISTEMESSE YAPRAK DÜŞMEZMİŞ
dosya adlarında ls ' in arguman'ı olan file.txt'nin inode'u öğrenilir ve oradan tekrardan block numarasından content çekilerek ekrana basılır.Inode ve Block konusundan benim anladığım ve anlatabildiklerim şimdilik bu kadar.