第九十七章:日志文件系统(进阶)
复习
- 崩溃可能把一次多步更新截断在中间。
TL;DR
- 日志先记录修改意图,再更新真正的数据结构。
- 恢复时可重放完整记录,或忽略未完成记录。
正文
日志文件系统把一组相关修改写入专用日志区域,并标明这组修改是否已提交。只有提交记录可靠落盘后,系统才把修改应用到真正的目录、inode 和数据块。若中途断电,恢复程序能据此判断哪些操作应重做,哪些根本不该算发生过。
日志不是消灭写入成本,而是把难以判断的半完成状态变成可以辨认的记录。它也需要在写入次数、恢复速度和数据保证强度之间取舍。
至此,操作系统已能隔离程序,也能尽力保护数据。最后还要回答:这些资源究竟属于谁?
思考题
已有日志时,为什么仍可能需要把真实数据结构写回?
小结
- 日志让一组更新具备可辨认的提交边界。
- 恢复可依据日志重放或撤销不完整工作。
思考题答案(仅供参考)
日志通常只是恢复依据;真实文件内容和元数据仍需最终保存到其正常位置。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。