分类: LINUX
2008-07-23 17:48:11
下面这张图是在一个视频教程里看到的,我觉得能说明问题。
当一个文件系统被格式化成ext2或者ext3的时候,就会产生Inode number。
大家注意到,在文件系统中每一个inode-no对应一个文件:例如图中对应的
1-F1(文件名)
2-D1
等等
而每一个Inode-no对应一个inode-table,即图中下面部分的一张表
首先我们看看,我们是怎么样读取和修改一个文件的
1、我们首先根据文件名,找到这个文件的Inode-no(节点数)。
2、当我们找到个文件的Inode-no时,就会根据这个number数在inodetable中找到对应的条目
3、现在要我们看一看inodetable中的信息:
从左到右依次是:节点数、文件类型、文件的权限、硬链接数、用户ID、组ID、文件的大小、时间戳记,
最后为指向硬盘上存放数据的数据块的指针。
简单说一下其中的某些项:
文件类型大有7种:
- 普通的文件
d 目录
l 链接文件
b 块设备文件
c 字符设备文件
p 命名管道
s socket文件
从这里我们也可以看出,在linux文件系统中,目录也是当作文件来看的!
对于时间戳记有三种:存取时间,修改时间,变更时间
存取时间,为最后一次打开,或者是访问这个文件的时间;
而修改时间,为最后一次修改文件的时间;
当inodetable中的某项改变时,会更新变更时间。
4、系统首先检查权限等信息,确定该用户可以访问该文件的时候,就会通过最后的指针找到实际的数据块,
对文件进行存取;