linux 文件inode,Linux文件系统的inode介绍

文件是文件系统对数据的分割单元。文件系统用目录来组织文件,赋予文件以上下分级的结构。在硬盘上实现这一分级结构的关键,Linux使用inode来虚拟普通文件和目录文件对象。

在Linux文件管理中,我们知道,一个文件除了自身的数据之外,还有一个附属信息,即文件的元数据(metadata)。这个元数据用于记录文件的许多信息,比如文件大小,拥有人,所属的组,修改日期等等。元数据并不包含在文件的数据中,而是由操作系统维护的。事实上,这个所谓的元数据就包含在inode中。我们可以用$ls -l filename来查看这些元数据(ls命令常用参数)。inode所占据的区域与数据块的区域不同。每个inode有一个唯一的整数编号(inode number)表示。

inode是“文件”从抽象到具体的关键。inode储存有一些指针,这些指针指向存储设备中的一些数据块,文件的内容就储存在这些数据块中。当Linux想要打开一个文件时,只需要找到文件对应的inode,然后沿着指针,将所有的数据块收集起来,就可以在内存中组成一个文件的数据了。

fbae8b7ce292bb45263e41b4401694b0.png

inode结构示意图

inode并不是组织文件的唯一方式。最简单的组织文件的方法,是把文件依次顺序的放入存储设备,DVD就采取了类似的方式。但如果有删除操作,删除造成的空余空间夹杂在正常文件之间,很难利用和管理。

复杂的方式可以使用链表,每个数据块都有一个指针,指向属于同一文件的下一个数据块。这样的好处是可以利用零散的空余空间,坏处是对文件的操作必须按照线性方式进行。如果想随机存取,那么必须遍历链表,直到目标位置。由于这一遍历不是在内存进行,所以速度很慢。

FAT系统是将上面链表的指针取出,放入到内存的一个数组中。这样,FAT可以根据内存的索引,迅速的找到一个文件。这样做的主要问题是,索引数组的大小与数据块的总数相同。因此,存储设备很大的话,这个索引数组会比较大。

inode既可以充分利用空间,在内存占据空间不与存储设备相关,解决了上面的问题。但inode也有自己的问题。每个inode能够存储的数据块指针总数是固定的。如果一个文件需要的数据块超过这一总数,inode需要额外的空间来存储多出来的指针。

在Linux中,文件和目录都有对应的inode,查找某个文件,就是从更节点开始查找文件inode的过程。Linux下stat命令,可以用来查看文件和目录的metadata,这些信息都存储在inode节点中。

xinlin@ubuntu:~$ stat Videos/

File: Videos/

Size: 4096 Blocks: 8 IO Block: 4096 directory

Device: 801h/2049d Inode: 2097637 Links: 2

Access: (0755/drwxr-xr-x) Uid: ( 1000/ xinlin) Gid: ( 1000/ xinlin)

Access: 2019-06-20 11:23:47.851110608 +0800

Modify: 2019-06-11 15:52:45.572340130 +0800

Change: 2019-06-11 15:52:45.572340130 +0800

Birth: -

xinlin@ubuntu:~$ stat .vimrc

File: .vimrc

Size: 379 Blocks: 8 IO Block: 4096 regular file

Device: 801h/2049d Inode: 2111083 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 1000/ xinlin) Gid: ( 1000/ xinlin)

Access: 2019-07-01 15:24:55.426598391 +0800

Modify: 2019-07-01 15:24:55.426598391 +0800

Change: 2019-07-01 15:27:50.721527016 +0800

Birth: -

以上就是关于Linux文件系统中的inode这个概念的简单介绍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值