对于inode的基本理解

inode的基本理解

首先,让我们对于文件存储有一个基本概念,这对下面的理解有帮助。

一、文件存储

文件存在硬盘上,硬盘的最小存储区叫做“扇区”,每个扇区存储512个字节(0.5KB),在操作系统读取硬盘时,不会一个扇区一个扇区得去读取,效率太低,系统会一次性连续读取多个扇区,即一次性读取一个块(block),这种由多个扇区组成的“块”,是文件读取的最小单位,而“块”的大小,最常见的是4KB,即8个连续的扇区组成的“块”。
文件数据存储在“块”中,而很显然,我们需要找到一个地方来存储文件“元信息”
例:文件创建者,文件创建日期,文件大小等,这种存储文件元信息的区域就叫做inode,他的中文名字叫做:索引节点,每个文件都有他自己对应的inode,里面包含了该文件的一些信息

二、inode 内容

inode包含文件的“元信息”

Size  文件字节数
Links  链接数,即有多少个文件指向该文件
Uid  文件拥有者的User ID
Inode  文件数据block的位置
Gid  文件的Group ID
Blocks  块数
IO Blocks  块的大小
Device  设备号码
Access  文件的读,写,执行权限
			文件的三个时间戳:
change  文件上一次的变动时间
Modify  文件内容上一次变动时间
Access  文件上一次打开时间

要查看某个文件的inode信息,可以使用stat命令,
格式:stat 文件名
除了文件名以外的所有关于文件的信息,都存在inode中

三、inode的大小

inode也会消耗磁盘空间,所以当磁盘进行格式化时,操作系统将自动把硬盘分为两个区域,一个数据区,存放文件数据,另一个是inode区,存放inode所包含的信息。
每个inode节点大小,一般是128/256字节。inode节点的总数,在格式化的时候就已经给定了。
一般1KB/2KB设置成一个inode。
假定在一块1GB的硬盘上,每个inod节点的大小是128字节,每1KB设置一个inode,那么inode table的大小达到了128MB,这占据了整个硬盘的12.8%
要查看每个硬盘分区的inode总数与已经使用的数量,可以用df命令
要查看每个inode的大小,可以使用如下命令;

sudo dumpe2fs -h 文件名

由于每个文件必须有1个inode,因此有可能发生inode 已用完,但是硬盘还没有存满的情况,此时,无法在硬盘上创建新文件

四、inode号码

每个inode都有一个号码,操作系统用inode号码来识别不同的文件
注意:Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件,对于系统来说,文件名只是inode号码便于识别的别称。
表面上,用户通过文件名打开文件
实际上,在Linux系统中分为三步:
首先,系统找到这个文件名对应的inode号码
之后,通过inode号码,获取inode信息
最后,根据inode信息,找到文件数据所在的block,读出数据。
使用如下命令可以看到文件名对应的inode号码

五、目录文件

Linux/Unix系统中,目录也是一种文件,打开目录,实际上是打开目录文件,目录文件的结构非常简单,是一系列目录项(direct)的列表。每个目录项有两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。
ls 命令只列出目录文件的所有文件名,而ls -i命令可以列出整个目录文件,即文件名以及inode号码。

要想查看文件的详细信息,必须根据inode号码来访问inode节点信息。
目录文件的读权限(r)和写权限(w)都是针对目录本身。
由于目录文件内只有文件名和inode号码,如果只有读权限,那么只能看到文件名,无法获取其他信息。
因为其他信息都存在inode节点上,而读取inode节点内部信息需要目录文件的执行权限(x)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值