现在的位置: 首页 > 综合 > 正文

VFS的索引节点 链接

2018年01月29日 ⁄ 综合 ⁄ 共 1418字 ⁄ 字号 评论关闭

文件系统处理文件所需要的所有信息都放在称为索引节点的数据结构中。文件名可以随时更改,但是索引节点对文件是唯一的,并且随文件的存在而存在。VFS索引节点的数据结构inode/includ/fs/fs.h中定义如下(2.4.x版本)

 当一个文件系统被格式化成ext2或者ext3的时候,就会产生Inode number。 

 

1、用ls -i命令来查看文件系统对象的索引节点号
  $ ls -i /usr
 558145 bin    607393 games    2429605 kerberos   705889 local        131329 share    32833 X11R6     574561 dict      
623809 include   640225 lib    1346113 src       590977 etc        673573 java      689473 libexec 213409 sbin         
12 tmp            11 lost+found
 
2、文件系统的每个对象都分配到一个独一无二的索引节点号。
 
3、用ls -dl命令看到索引节点被引用的次数
  $ ls -dl /usr/local
drwxr-xr-x   12 root     root         4096 Dec  2005 /usr/local
  其中12表示被引用了12次。
 
4、创建所有缺少的父目录
  $ mkdir -p $ORALCE_BASE/admin/$ORACLE_ADMIN/bdump
 
5、创建空文件
  $ touch junli.log
 
6、硬链接和符号链接(软链接)
  $ ln firstlink secondlink
  $ ln -s firstlink secondlink
 
  一个给定的索引节点可以有任意数目的硬链接,该索引节点一直存在于文件系统,直到所有的链接消失。硬链接不能跨越文件系统。
  符号链接是一种专门的文件系统,链接通过名称引用另一个文件,而不是直接引用索引节点。符号链接不阻止文件被删除,如果目标文件消失,那么符号链接仅仅不可用。
  符号链接比硬链接更灵活,可以给任何类型的文件对象(包括目录)符号链接。又因为符号链接的实现是基于路径的(而不是索引节点),所以创建指向另一个文件系统上的对象的符号链接是完全可行的
 
 
 
 

读取和修改一个文件:
1、我们首先根据文件名,找到这个文件的Inode-no(节点数)。
2、当我们找到个文件的Inode-no时,就会根据这个number数在inodetable中找到对应的条目。


3、现在要我们看一看inodetable中的信息(ls -li):从左到右依次是:节点数、文件类型、文件的权限、硬链接数、用户ID、组ID、文件的大小、时间戳记,最后为指向硬盘上存放数据的数据块的指针

 

简单说一下其中的某些项(文件类型大有7种):

-          普通的文件
d          目录
l          链接文件
b          块设备文件
c          字符设备文件
p          命名管道
s          socket文件

       从这里我们也可以看出,在linux文件系统中,目录也是当作文件来看的!对于时间戳记有三种:存取时间,修改时间,变更时间 存取时间,为最后一次打开,或者是访问这个文件的时间; 而修改时间,为最后一次修改文件的时间; 当inodetable中的某项改变时,会更新变更时间。

【上篇】
【下篇】

抱歉!评论已关闭.