到底什么是inode?

到底什么是inode呢 ? 这个和我们程序开发到底有多大的关系?


首先,必须共识的两点: 1,数据是存放在磁盘中; 2,对于存放位置与其它对应的描述信息亦放在磁盘中; (1,2会在不同的区域)

其次,既然是存在磁盘中,我们常说按块存取,这个块是怎么来的呢,大小又是多大? 其实按块存取目的就是尽量多读数据,比如你一个扇区一个扇区的读效率要低些(要多次进行磁盘i/o)所以一次要多读几个扇区具体读几个取决于块由几个扇区组成,一般一个块大小是4096,即4k, 而一个扇区是512个字节,所以一般一个块对应8个扇区


再次,数据存放到磁盘上后需要有个索引目录来知道数据都存在什么位置了,这个就是inode

例如 查看test2.log对应inode信息:

stat test2.log
  File: “test2.log”
  Size: 0             Blocks: 0          IO Block: 4096   一般空文件
Device: 6830h/26672d    Inode: 1352646089  Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 3345/muyanxue)   Gid: ( 3345/muyanxue)
Access: 2013-11-27 16:42:07.083289015 +0800
Modify: 2013-11-27 16:42:07.083289015 +0800
Change: 2013-11-27 16:42:07.083289015 +0800


这些信息就是inode中对应的描述信息

其中有一个inode: 号码 ,这个号码就是inode的号码,在磁盘中唯一标识

Links: 数字,即为有几个链接到这个文件


对于操作系统来说只关注inode即可,这样可以直接对数据进行存取,但是我们常用的是文件描述符fd 而不是inode

这样就可能多个fd对应一个inode, 我们操作fd时只是对inode作一个映射,这样可以保持各自对fd操作时互相没有干扰

当处理fd时最终也会从fd对就在结构中找到inode


所以,对于数据的存放与inode有关,而对于程序开发来讲关注的是fd

比如你程序中stat某个文件得到ctime/atime/mtime等,这个也是用fd找到inode后从inode结构中得到的信息




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值