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块,用以说明目录项的数据结构。

你可能感兴趣的:(linux杂记)