atomic_t i_writecount;
#ifdef CONFIG_SECURITY
void *i_security;
#endif
#ifdef CONFIG_FS_POSIX_ACL
struct posix_acl *i_acl;
struct posix_acl *i_default_acl;
#endif
void *i_private; /* fs or device private pointer */
};
可以看到,inode 结构体中有许多文件属性相关的变量,关于 inode,有:
1)inode 是一种用于存放文件属性信息的特殊数据块;
2)每个文件仅占有一个 inode,因此,文件系统所能够创建的文件数量与 inode 的数量有关;
3)每个 inode 都有一个编号,实际上,操作系统就是使用这个 inode 编号来识别不同的文件的。对于操作系统来说,文件名只是 inode 编号的一个别称,便于用户识别;
4)inode 的数量与大小在格式化时就已经确定了,不能再做更改;
5)EXT2 中,inode 的大小默认为 128Byte;
6)系统在读取文件时,先找到 inode 编号,然后获取 inode 里面的文件属性和权限,匹配正确后才能够开始读取 block 的内容。
可以使用 ls -i 命令来查看文件名对应的 inode 编号:
如图,第一列即为文件名所对应的 inode 号。
2.3、super block(超级块)
Super block 用于记录文件系统的整体信息,其大小为 1024Byte,主要包括:
1)block/inode 的总量;
2)block/inode 的使用量;
3)block/inode 的剩余量;
4)block/inode 的大小;
5)文件系统的挂载时间、最后一次写入数据的时间等文件系统相关信息
2.4、File System Description(文件系统描述)
这个区段可以描述每个 block group 的开始与结束的 block 号码,并说明每个区段分别介于哪个 block 号码之间。
2.5、block bitmap(块对照表)
由于一个 block 只能被一个文件使用,因此新添加一个文件时,就会用到新的 block 来记录文件数据。可以使用 block bitmap 来确认哪些 block 是空的,哪些是被使用了的,这样系统就可以快速的找到可使用的 block 来处理文件。同样,当删除某个文件时,该文件原本占用的 block 号码就会被释放,并在 block bitmap 中把该 block 号码所对应的标志更新为未使用状态,然后释放 block、
2.6、inode bitmap (inode 对照表)
功能与 block bitmap 类似,用于记录 inode 号码的使用与未使用。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx