什么是文件系统
文件系统是对常规文件和目录的组织集合
我的理解是,文件系统就相当于是一种和用户的约定,它规定了该文件系统下文件的存储方式和访问方式等,然后用户访问该文件系统下的文件,就得遵循这个约定
常规文件系统
一般文件系统的组成如上,引导块是操作系统使用的,超级块就记录了文件系统的一些信息,比如逻辑块的大小,i-node表的容量,空闲i-node的数量等等,i节点表就是记录了i-node的表,每一个文件都有与之对应的inode,数据块就是实际存储数据的地方了
然后我们是可以同时安装多个文件系统的,比如这里的每个分区都可以是不同的文件系统,但同样的,他们对文件的组织形式也不相同
日志文件系统
首先我们要清楚一个场景,就是如果我们在使用文件系统的时候出了些错,比如系统崩溃等等,而这时候你正在编写文件,没有保存,当系统恢复的时候会进行一致性检查,就是确保文件数据的一直性,比如i-node记录的信息和实际的数据不一致等等,常规文件系统的一致性检查会遍历整个文件系统,如果文件系统一大,耗费时间会很长
所以就有了日志文件系统,我的理解是,它就像日志一样把你的操作记录下来,一旦系统崩溃,系统恢复后的一致性检查会先查看这个日志,然后将没有完成的操作重做即可,不需要遍历整个文件系统
虚拟文件系统:VFS
正如我们之前所说,我们可以同时安装多个文件系统,但这也会有困扰的地方,那就是每个文件系统实现的细节不一样,使用起来自然也不一样,这时候就诞生了虚拟文件系统,这就像是一个抽象接口,它提供了统一的文件操作接口,然后对接各个文件系统,这样人们只需要使用虚拟文件系统提供的接口就行了,而不必去了解各个文件系统的差异
虚拟内存文件系统:tmpfs
前面所讲的文件系统都是在磁盘上,而虚拟内存文件系统是在内存中的,由于不涉及磁盘io,虚拟内存文件系统的访问速度是很快的,而且tmpfs除了使用内存外,他还会在内存耗尽的情况下,利用交换空间
不过,当系统崩溃时,虚拟内存文件系统的内容就会丢失,因为它是在内存中,而内存在电脑重启时,对应的硬件存储器会刷新,这也是他叫tmpfs的原因(temp file system)
网络文件系统
这个我就不了解了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库