Linux文件系統分析之三(i節點區)

  i節點即index node索引節點。接下來的是第五個磁盤塊了,480個i節點,每個i節點佔用32個字節,總共佔用480*32/1024=15個磁盤塊,現在再重新理清一下磁盤塊的關係了:
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塊,用以說明目錄項的數據結構。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章