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