关于LINUX通过INODE寻址以及BLOCK GROUP寻址的疑问

为当前最终发行版之前的所有版本提供支持
回复
zipkong
帖子: 76
注册时间: 2010-11-27 22:20
送出感谢: 0
接收感谢: 0

关于LINUX通过INODE寻址以及BLOCK GROUP寻址的疑问

#1

帖子 zipkong » 2010-12-14 19:21

其实对于这两个问题,我也不知道如何选择一个标题,也许这么提问的标题有些词不达意了。

大家都知道,LINUX对于目录与文档的寻址,是必须通过INODE来确定帐号是否有操作的权限之后再通过INODE里面的BLOCK号来定位文档或目录的,而要是下一级是目录,则再继续查找该目录对应BLOCK里面的文档档名对应的INODE继续进行以上所说的相同机制继续寻址。同时我们也知道,LINUX的顶层目录的INODE号通常为2,所以问题来了,如果我划分了两个分区,我把A分区挂载到/下面,B分区挂载到/ETC下面,那么/与/ETC的IONDE号都是2,倘若我需要查找/ETC/PASSWD,请问系统是如何得知我是需要去找/这个2,而不是/ETC这个2呢?

第二,每个FILESYSTEM下面都有一堆INODE号和BLOCK号,这些号都分了好多的GROUPS,称为BLOCK GROUPS,里面包含了SUPER、FILESYSTEM DESCRITION、BLOCK MAP、INODE MAP、INDOE TABLE以及DATA BLOCK,我想请问,在系统寻址的时候,例如已经找到了INODE号为1000,那么希望是如何知道这个1000的INODE号是在哪个GROUP里面呢?不找到这个GROUP又怎么去确认权限、属性以及档案或目录所在的BLOCK位置呢?
上次由 zipkong 在 2010-12-15 10:20,总共编辑 1 次。
头像
astolia
论坛版主
帖子: 3091
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 511 次

Re: 关于LINUX通过INODE寻址以及BLOCK GROUP寻址的疑问

#2

帖子 astolia » 2010-12-15 1:19

1、你要查找的是路径为/etc/passwd的文件,又不是inode为2的文件,所以会按照目录结构从/找etc再找passwd,根本和/home的inode号没关系

2、block_group = (inode号 - 1) / 每个group内inode总数
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

Re: 关于LINUX通过INODE寻址以及BLOCK GROUP寻址的疑问

#3

帖子 fanhe » 2010-12-15 1:21

请查阅《深入理解linux内核》
zipkong
帖子: 76
注册时间: 2010-11-27 22:20
送出感谢: 0
接收感谢: 0

Re: 关于LINUX通过INODE寻址以及BLOCK GROUP寻址的疑问

#4

帖子 zipkong » 2010-12-15 10:21

astolia 写了:1、你要查找的是路径为/etc/passwd的文件,又不是inode为2的文件,所以会按照目录结构从/找etc再找passwd,根本和/home的inode号没关系

2、block_group = (inode号 - 1) / 每个group内inode总数
第二条我明白了,谢谢,但是第一条还是不太明白。
因为我的了解是,LINUX对于文档或者目录的寻址是先找INODE号确认权限后读取BLOCK号,根据这个号码指向BLOCK所在位置,如果是有多目录,就依据以上步骤继续往下寻找。也就是说,这个查找的第一步就是要知道这个文档或目录的顶级目录的INODE方能继续往下查找。
抱歉,之前举的例子打错了名字了,应该是分了两个区,分别挂载在/以及/ETC,如果我要找/ETC/PASSWD,而这连哥哥顶级目录/以及/ETC的INODE都是2,请问系统是如何知道我要去/ETC而不是/的?谢谢
rediscover
帖子: 3173
注册时间: 2010-01-13 23:26
送出感谢: 0
接收感谢: 12 次

Re: 关于LINUX通过INODE寻址以及BLOCK GROUP寻址的疑问

#5

帖子 rediscover » 2010-12-15 10:50

zipkong 写了:
astolia 写了:1、你要查找的是路径为/etc/passwd的文件,又不是inode为2的文件,所以会按照目录结构从/找etc再找passwd,根本和/home的inode号没关系

2、block_group = (inode号 - 1) / 每个group内inode总数
第二条我明白了,谢谢,但是第一条还是不太明白。
因为我的了解是,LINUX对于文档或者目录的寻址是先找INODE号确认权限后读取BLOCK号,根据这个号码指向BLOCK所在位置,如果是有多目录,就依据以上步骤继续往下寻找。也就是说,这个查找的第一步就是要知道这个文档或目录的顶级目录的INODE方能继续往下查找。
抱歉,之前举的例子打错了名字了,应该是分了两个区,分别挂载在/以及/ETC,如果我要找/ETC/PASSWD,而这连哥哥顶级目录/以及/ETC的INODE都是2,请问系统是如何知道我要去/ETC而不是/的?谢谢
其实你说的前提就武断了,找个方法应该是以 EXT 文件系统为基础说的,那别的不搞 inode 的文件系统咋找呢?
Here I am.
Ubuntu 桌面培训 - 全中文官方文档,含汉化截图,提供PDF
头像
astolia
论坛版主
帖子: 3091
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 511 次

Re: 关于LINUX通过INODE寻址以及BLOCK GROUP寻址的疑问

#6

帖子 astolia » 2010-12-15 13:51

zipkong 写了:
astolia 写了:1、你要查找的是路径为/etc/passwd的文件,又不是inode为2的文件,所以会按照目录结构从/找etc再找passwd,根本和/home的inode号没关系

2、block_group = (inode号 - 1) / 每个group内inode总数
第二条我明白了,谢谢,但是第一条还是不太明白。
因为我的了解是,LINUX对于文档或者目录的寻址是先找INODE号确认权限后读取BLOCK号,根据这个号码指向BLOCK所在位置,如果是有多目录,就依据以上步骤继续往下寻找。也就是说,这个查找的第一步就是要知道这个文档或目录的顶级目录的INODE方能继续往下查找。
抱歉,之前举的例子打错了名字了,应该是分了两个区,分别挂载在/以及/ETC,如果我要找/ETC/PASSWD,而这连哥哥顶级目录/以及/ETC的INODE都是2,请问系统是如何知道我要去/ETC而不是/的?谢谢
这个就和每个ext2分区的结构关系不大了。你要使用分区总要先挂载吧,挂载时总要指明挂载点吧。你将分区1挂在/,以后查找路径时都从分区1开始找。再将分区2挂在/etc,挂载分区2时已经将分区1下的/etc给“覆盖”掉了,以后从/开始查找到etc时,就会自动转向分区2的最上层目录。这个自动转向机制已经和ext2系统的结构无关了,实际上是由vfs的mount机制来实现。具体发生的事自己去看这篇吧:http://www.ibm.com/developerworks/cn/linux/l-vfs/
回复

回到 “老旧版本支持”