今天我们来聊一聊linux文件系统的具体细节
那什么是文件系统呢?
一.首先 我们要先来介绍一下文件系统
1.笼统的文件系统概念:一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问。
2.直观的文件系统概念: (一幅图就行了)
1)目录项区 - 存放目录下文件的列表信息
2)数据区 - 存放文件数据
3)inode区(inode table) - 存放inode所包含的信息
其实 文件系统前面的文章中我们都是陆陆续续的接触的,只是今天我们总体的来介绍一下
我们来举个例子: 比如说 我现在 通过 find 命令找一个文件 那 它的过程就是 先是遍历目录项 (树型结构的),然后根据目录项中提供的inode号 ,根据inode号 去查找本文件系统的 inode结点信息(不同的文件系统的inode号是会重复的),最后通过 inode结点提供的信息 去 寻找存放数据的数据块 。
二.我们来介绍一下文件系统的接口(下一篇在详细讲一讲文件的IO细节)
这些函数都是比较常用的, 我就不一一介绍了,大家只需要查一些函数手册之类的 就可以 详细的了解 ,这里就是 给大家混个眼熟。
三.我们来介绍一下文件系统的缓存
怎么说呢 缓存机制 其实非常的常见, 无论是文件系统中的缓存 网卡中的缓存 还是 nginx中的缓存 还是 app应用程序提供的缓存 还是什么的,其实 都 一些相同的特点
比如 大家看这个黄色的箭头 如果 用户需要的 数据 在这个 文件系统缓冲区中(并没有 因为缓冲区 大小之类的 缘故 被 踢出去),后面就直接 把缓存中的数据 通过 这条线路 反馈给用户,不用在启动一次或者是 n次磁盘大大提高了效率
(有时候我们看小电影看第二次的时候 就加载的比较快,就是因为有缓存的缘故, 反之如果没有在缓存区中就要到磁盘去拿数据,就比较慢,我们看电影就容易产生哪种迫不及待,又无可奈何的心情,就很不爽 对不对)。
好把 这篇文章就 介绍到这里 后面还会陆续更新 很多有价值的东西