到底什么是inode?
2013-11-27 17:37
369 查看
到底什么是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结构中得到的信息
首先,必须共识的两点: 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结构中得到的信息
相关文章推荐
- java中的Serializable接口到底是做什么用的?
- return x与exit(x)到底有什么区别
- 天天在讲的 NoSQL 数据库到底是个什么鬼?
- Linux中inode值是什么?
- 百度到底能用来做什么?
- 到底vuex是什么?
- java中 static变量和方法到底是存在内存什么区域?
- 绝对路径在不同环境下 到底是相对于什么的绝对
- Pythonic到底是什么玩意儿?
- 页面状态还是组件?到底什么才是交互的中心?
- 人的一生,到底在追求什么?
- View视图的根视图到底是什么
- javaEE规范和SSH三大框架到底有什么关系
- [知乎有感]读书到底为了什么,读研到底值不值?
- 基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。
- http协议无状态中的 "状态" 到底指的是什么?!
- [置顶] Hive到底是什么
- 到底snappy ubuntu core是什么?
- 我们工作到底为了什么?
- 到底什么是用户体验?