linux中inode的工作原理

当划分磁盘分区并格式化的时候,整个分区会被划分为两个部分,即inode区和data block(实际数据放置在数据区域中)这个inode即是(目录、档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个文件的 inode。 Inode 里面存储了文件的很多重要参数,其中唯一标识称作 Inumber, 其他信息还有创建时间(ctime)、修改时间(mtime) 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息


    所以文件就有两部份组成:

    1、元数据:inode table(索引节点表)

    2、数据内容:数据块(block)


inode包含文件的元信息,具体来说有以下内容:

  * 文件的字节数

  * 文件拥有者的User ID

  * 文件的Group ID

  * 文件的读、写、执行权限

  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  * 链接数,即有多少文件名指向这个inode

  * 文件数据block的位置



   文件系统一开始就将inode与block规划好了,除非重新格式化,否则inode和block固定后就不会在发生变化。每个inode与block都与自己的编号,inode就是记录档案的属性,一个档案占用一个inode,同时记录此档案数据所在的block码。block则是实际记录档案的内容,若档案过大则会占用多个block。


   

   由于每个inode与block都有自己的编号,而每个文件都会占用inode,inode内有数据 block的位置,因此可以制动啊,如果能够找到文件的inode,就可以找到文件所放置数据的block号码,也就能够找到文件的时间数据所在了。所以inode就有指针的作用,而在inode结构中,并不是只有一种指针,而是有多种。

   在inode表中将第1 - 12块指针当作直接块指针,由于一个指针只能指向一个block块,所以如一个block块有4K的存储空间,那么使用直接块指针的文件最大不能超过48K,这时就需要用到间接块指针,或双重间接块指针,或三重间接块指针。

直接块指针

直接块指针就是inode中直接记录了block块的号码,直接指向block块,

假如一个文件的属性与权限数据放置在inode4号,而这个inode记录了档案数据的实际位置放置点位2,7,13,15这四个block号码,此时操作系统可以据此来排列磁盘的阅读顺序,可以直接将四个block的内容读出来,数据的读取如下图所示

wKioL1edbISBeYJzAAEjwJTB_4o298.png


间接块指针

间接块指针,其实和直接块指针大同小异,他们都是指针,只是直接块指针式直接指向的block块存储的是文件的数据,而间接块指针是将指向的block块继续当作指针块使用,所以间接指针指向的block块存储的是指针信息,它将继续指向下一个block块中存储的文件数据。


双重间接块指针

理解了间接指针块,那么双重间接指针块就容易理解了,它是在间接指针块的基础上将第二次指向的block块也当作指针使用,这样就可以指向更的的block块。


三重间接块指针

三重间接块指针的道理就和双重的道理一样了,只是把第三次指向的block块也当作指针块当作指针使用,这样就可以执行跟过的block块。

前面已经提到使用直接块指针的文件最大不能超过48K,假定一个指针块需要4个字节,一个block块有4K的存储空间,那么一个block块就可以存储1024个指针块,所以间接块指针的文件最大就可以存储1024*4K=4M的文件,以此类推使用双重间接块指针的文件最大存储空间就有1024*1024*4K=4G,使用三重间接块指针的文件最大存储空间就可以达到1024*1024*1024*4K=4T。


inode表结构如图所示:

spacer.gifwKiom1edbJLCyQwqAAGqc8vu-5E929.png

目录文件:    

  普通文件是由indoe+block构成,在linux下目录也是一种文件,那么目录文件又是什么结构呢,目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。通过目录项找到目录下文件的inode信息,然后就可以找到文件的block块及数据信息

如图所示:

spacer.gifwKioL1edbLug0L8YAAEoLTfLA9c419.png

在文件系统中用户可以使用df命令查看每个磁盘分区的inode总数和已使用的数量,

命令:df -i

spacer.gifwKioL1edbXyRICbVAAAnq-6NYtA388.png

由于inode也占用一定的磁盘空间,所以当inode使用空间用完的时候,即使磁盘仍有存储空间也无法使用!所有当磁盘显示仍有可用空间,但使用时却提示空间不足,就有可能是inode使用完毕所造成的。


本文出自 “I'm Groot” 博客,请务必保留此出处http://groot.blog.51cto.com/11448219/1832283

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值