1. 程式人生 > >linux檔案系統之i節點詳解

linux檔案系統之i節點詳解


0塊:引導塊,每塊1024B
1塊:超級塊
2塊:i節點點陣圖
3塊:邏輯塊點陣圖
4...18:i節點區塊
19塊:資料塊,剛好和Linux檔案系統分析之二中提到的資料塊開始於第19塊吻合。
下面分析第一個i節點,它位於塊號為4的塊中,即是第五塊了。
00001000h: ED 41 00 00 80 00 00 00 9E AA 2E 84 00 08 13 00 ; 鞟..?..灙.?...
00001010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
為分析這二進位制中的資料涵義,下面列出i節點結構,這個i節點其實就是表示根目錄了。
struct d_inode{
unsigned short i_mode;
unsigned short i_uid;
unsigned long i_size;
unsigned long i_time;
unsigned char i_gid;
unsigned char i_nlinks;
unsigned short i_zone[9];
}
剛好是32個位元組,
i_mode表示檔案型別和屬性,這裡是41ED即0100.0001.1110.1101
見stat.h檔案中的定義:
第一個四位0100表示這是一個目錄檔案,確實如此,這就是根目錄。
接下來的三位000表示檔案的屬性,執行或搜尋時是否設定uid
最後面的九位1.1110.1101表示rwxrwxrwx了,這個用過linux的都知道

i_uid為0000,表示這個檔案的所有者的uid是0,通常root使用者的uid就是0

i_size為00000080,表示這個檔案的長度為80H=128個位元組,後面可以驗證。

i_time為842EAA9E,表示這個檔案的建立時間

i_gid為00,表示該檔案所有者所在group的id為0

i_nlinks為08,表示有8個檔案目錄項指向該i節點

最後一個13H即19表示該檔案的資料塊號,後面都是0,表示該檔案在一個數據塊中存得下,不用更多的資料塊。

分析之四將追溯到這個i節點的資料塊即19塊,用以說明目錄項的資料結構。