Skip to content

Instantly share code, notes, and snippets.

@WoodProgrammer
Last active June 16, 2017 01:30
Show Gist options
  • Save WoodProgrammer/9267250fe2425e0e1005d39d69d5c584 to your computer and use it in GitHub Desktop.
Save WoodProgrammer/9267250fe2425e0e1005d39d69d5c584 to your computer and use it in GitHub Desktop.

INODE

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ı

Dosya Sistemi Yapısı

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.

INODE ILE FILE SISTEMDE MANUPLE ETMEK

Ş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ı.

BLOCKS

  • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment