🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 虚拟文件系统(Virtual FIle Sytem) ![](https://img.kancloud.cn/d7/a9/d7a9a19127881bc11a071ec5e0f418d8_400x282.png) ### 高速缓存区 类似CPU的缓存、内存管理的快表——频繁使用的文件内容被缓存 思考:高速缓冲区为什么要统一由虚拟文件系统(VFS)提供? 思考:如果突然断电? - 删除文件A 1. 更新A所在的目录 2. 释放A的node 3. 释放A占用的物理块(将物理块加入空闲列表/位图) ### 基于日志的文件管理 类似mysql的日志,或者分布式系统大多也使用日志形式 用户删除文件A,系统记录日志,把一个删除操作,分割成颗粒度更细的操作,方便故障恢复 比如删除到110号就突然关机了 ![](https://img.kancloud.cn/6e/26/6e2647840fd11791cb1ad8f0fb32f865_400x197.png) 进行故障恢复 ![](https://img.kancloud.cn/9f/9a/9f9a48e07df02074aed01d5a4b66cbf1_273x400.png) 问题:如果执行完了110号日志,但是因为关机太突然,系统没有来得及记录下来109号日志已经被执行该怎么办? - 保险起见,开机后,从108号日志开始执行 - 要求:所有日志操作可以被重入(就是重复执行,也叫作幂等性) - 例如删除一个指定的 inodel就是幂等性操作 - 清理几个磁盘块也是幂等性操作