当前位置: 技术问答>linux和unix
大侠们,谁来解释一下关于文件系统里面的i-node问题,sysbolic link ,hard link 有什么区别?
来源: 互联网 发布时间:2015-07-04
本文导语: 文件系统里面有一张表(以下称A),表里面有许多i-node,每个都是一个指针,指向磁盘上的若干个(directory)data block,每个directory data block里面又包含另外一张表(以下称B),B表里面每一个条目都含有一个i-node number,...
文件系统里面有一张表(以下称A),表里面有许多i-node,每个都是一个指针,指向磁盘上的若干个(directory)data block,每个directory data block里面又包含另外一张表(以下称B),B表里面每一个条目都含有一个i-node number,它是一个index指向表A里的i-node.
以上是我的理解,很可能有错误。
我的问题是:
1. i-node 为什么可以指向多个不同的data block?我理解一个指针只指向一个地方。当然,它许不是一个指针,那它是个什么东东呢?
2. 因为有symbolic link 和 hard link存在,所以B中的 i-node number 不一定指向A中得i-node,也就是不会形成一个环形,这种机制是如何实现的?
以上是我的理解,很可能有错误。
我的问题是:
1. i-node 为什么可以指向多个不同的data block?我理解一个指针只指向一个地方。当然,它许不是一个指针,那它是个什么东东呢?
2. 因为有symbolic link 和 hard link存在,所以B中的 i-node number 不一定指向A中得i-node,也就是不会形成一个环形,这种机制是如何实现的?
|
每个inode也就是索引节点,唯一对应一个文件,但是它可以对应多个dentry结构,每个dentry结构只能对应一个inode,不知你是否是这个意思?
2. 因为有symbolic link 和 hard link存在,所以B中的 i-node number 不一定指向A中得i-node,也就是不会形成一个环形,这种机制是如何实现的?
这个问题,我没能理解你的意思,你所说的B应该是个dentry结构吧,但是,只要存在dentry对象,则其d_inode指针一定指向一个inode。
2. 因为有symbolic link 和 hard link存在,所以B中的 i-node number 不一定指向A中得i-node,也就是不会形成一个环形,这种机制是如何实现的?
这个问题,我没能理解你的意思,你所说的B应该是个dentry结构吧,但是,只要存在dentry对象,则其d_inode指针一定指向一个inode。
|
文件控制块inode是在专门的inode区中,每个文件都有一个对应的inode。
每个inode里与文件物理位置有关的索引信息只有int i-addr[8];根据是小型,大型,巨型文件,分别是直接索引,一次索引,二次索引。
所以一个inode是指向多个block的。
楼主可以看以下inode的结构。
第二个问题没看明白。
每个inode里与文件物理位置有关的索引信息只有int i-addr[8];根据是小型,大型,巨型文件,分别是直接索引,一次索引,二次索引。
所以一个inode是指向多个block的。
楼主可以看以下inode的结构。
第二个问题没看明白。
|
呵呵,inode里应该是有一个表,记录这个文件的数据块,但是这个表有直接寻址和一次寻址,二次寻址。。。文件块多就需要多次寻址,所以小文件访问快。好像是这样的结构。