关于一个文件占用几个inode的问题

100 views
Skip to first unread message

jerrymy

unread,
Aug 6, 2008, 8:43:46 PM8/6/08
to Linux-鸟巢
我先发个问:

分区格式化的时候已经把inode的数量确定了,且一个或者多个block对应一个inode,那么当一个文

件占用多个block的时候它岂不是要占用多个inode?而每个文件肯定只占用一个inode,不管文件有

多大,否则怎么定位这个文件呢?



谪凡

unread,
Aug 6, 2008, 10:30:00 PM8/6/08
to Linux-鸟巢
你这英文太专业不懂,,,
懂的回复下。。。

谪凡

unread,
Aug 6, 2008, 10:32:24 PM8/6/08
to Linux-鸟巢
你这英文太专业不懂,,,
懂的回复下。。。

On 8月7日, 上午8时43分, jerrymy <jerr...@126.com> wrote:

谪凡

unread,
Aug 6, 2008, 10:39:40 PM8/6/08
to Linux-鸟巢
你这英文太专业不懂,,,
懂的回复下。。。

On 8月7日, 上午8时43分, jerrymy <jerr...@126.com> wrote:

frozen

unread,
Aug 7, 2008, 2:21:34 AM8/7/08
to Linux-鸟巢
看到一些关于inode的解释:

inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是
Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。
inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。

个人认为应该是一个文件占用一个inode,但是可以占用n多个block。这两个是硬盘上不同的区域。inode更像是指针。

jerrymy

unread,
Aug 7, 2008, 4:48:18 AM8/7/08
to Linux-鸟巢
那就是说我的理解有误,block跟inode之间没有对应关系,只有文件跟inode有对应关系吗?
Message has been deleted
Message has been deleted

frozen

unread,
Aug 7, 2008, 7:54:25 AM8/7/08
to Linux-鸟巢
看来我理解的也有些不对,
根据鸟哥私房菜描述, inode和block也有默认的数量对应关系,也就是format文件系统时候多少个block对应一个inode就已经确

了。但是这个好像指的是inode和block的数目。

目前,我理解的就是:文件系统有两部分区域,存储数据用的block和存储文件(夹)信息的inode。inode记录文件的文件的属性(权限等)和指
向存储数据的block的指针(不恰当的用词)。block只是记录数据,包含文件内容和文件名等。

从鸟哥文章的描述中来看,一般文件会占用一个inode(至少,可能是多个,但是我不知道怎么查看文件占用了几个inode)和n个block。

一个文件至少占用一个inode,我也有点儿晕。~~~~

一般查看inode的命令就是用ls -i和stat了。其他的暂时不知~~~~


有达人知道更详细的话,清不吝赐教!!!

鸟哥链接:
http://linux.vbird.org/linux_basic/0230filesystem.php

jerrymy

unread,
Aug 7, 2008, 7:50:52 PM8/7/08
to Linux-鸟巢
我的理解跟你一样,不过跟inode有关的指令还有df和du。

但目前还是没搞清楚一个文件对应几个inode的问题,如果对应多个那打开文件的时候怎么去定位文件的位置呢?

再查查资料^_^。

jerrymy

unread,
Aug 7, 2008, 8:30:04 PM8/7/08
to Linux-鸟巢
“ node 数量与 Block 的大小在格式化的时候就已经被设定好了,通常一个 Block 的大小为 4 Kbytes,至于 inode 的
数量

则依据不同的设定而异,基本的设定为 ( 硬盘大小 / 一个 inode 所控制的容量 ) 。举例来说,我有一个 1 GBytes 的硬盘,

我希望该硬盘中 inode 的数量只要 block 的一半就好了,那么就可以设定一个 inode 控制的容量为 8 Kbytes ,则
inode 数

量共有: ( G * 1024M/G * 1024K/M )/( 8 K ) = 131072 个 inode 啰!而 inode
table 则占去了 131072 * 128 byte =

16777216 bytes = 16384 Kbytes。也就是说,这一个 1GB 的硬盘还有没任何数据时,就少了 16 MBytes 的容
量啦!(用

在 inode table 上面)。

因为一个 inode 只能记录一个档案的属性,所以 inode 数量比 block 多是没有意义的!举上面的例子来说,我的 Block 规

划为 4 Kbytes ,所以 1GB 大概就有 262144 个 4Kbytes 的 block ,如果一个 block 对应一个
inode 的话,那么当我的

inode 数量大于 262144 时,多的 inode 将没有任何用处,徒然浪费硬盘的空间而已!另外一层想法,如果我的档案容量都

很大,那么一个档案占用一个 inode 以及数个 block ,当然 inode 数量就可以规划的少很多啦!”

我重新你看了一下鸟哥的描述,他的意思好像是block跟inode应该是一对多或者多对一的关系,格式化的时候分配node

table 与 block area 两个区域,这个时候还两者应该没有对应关系,只有在建立文件的时候才建立关系:比如建立一个1M

大小的文件,其占用一个inode,这个inode就是用来记录该文件的位置和占用的多个block以及权限等的信息的。

不知理解对否。

frozen

unread,
Aug 8, 2008, 12:06:40 AM8/8/08
to Linux-鸟巢
和我上面理解的其实就是一样了。format文件系统时候只是有"数量"的对应关系。而创建文件后才真正有逻辑上的联系。

现在头疼的是,不知道如何查看一个文件占用几个inode,更确切的说,不知道是在什么情况下一个文件才会占用多个inode。。。。

jerrymy

unread,
Aug 8, 2008, 1:41:50 AM8/8/08
to Linux-鸟巢
照上面的描述来看,应该没有这种情况了,inode跟文件是一一对应关系,跟block是一对一或者一对多的关系,如果一个

文件对应多个inode会有检索方面的问题,我想应该是这样。

jerrymy

unread,
Aug 8, 2008, 2:09:21 AM8/8/08
to Linux-鸟巢
【 inode 相同的文件是硬链接文件;

在Linux 文件系统中,inode值相同的文件是硬链接文件,也就是说,不同的文件名,inode可能是相同的,一个inode值可以对应多个文
件。理解链接文件并不难,看看例子就会了。在Linux中,链接文件是通过ln工具来创建的。

不过照这篇文章的描述,一个inode是可以对应多个文件的,比如硬链接,难道只有这种情况吗?

对硬链接理解还不够透彻,先研究一下先。

^_^


On 8月8日, 下午12时06分, frozen <frozen....@gmail.com> wrote:
Message has been deleted

jerrymy

unread,
Aug 10, 2008, 8:39:05 PM8/10/08
to Linux-鸟巢
frozen回复飞帖子我邮箱收到了,只是没在这里显示^_^

硬链接指向同一个inode,重新看了一下已经理解了,一个inode可以对应多个文件(比如:硬链接文件)而反过来就不成

立,也就是说一个文件不可能对应多个inode的。文件与inode的关系:一对一或者一多对一,block跟inode之间没有直接对

应关系。

On 8月11日, 上午8时23分, jerrymy <jerr...@126.com> wrote:
> 终于可以显示了!

frozen

unread,
Aug 11, 2008, 6:54:31 AM8/11/08
to Linux-鸟巢
恩,我暂时也就理解成这样,但是就是不明白鸟哥说的,至少一个inode的意思。。。
也许有特殊情况把~~~
Reply all
Reply to author
Forward
0 new messages