Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第九十七章:日志文件系统(进阶)

复习

  • 崩溃可能把一次多步更新截断在中间。

TL;DR

  • 日志先记录修改意图,再更新真正的数据结构。
  • 恢复时可重放完整记录,或忽略未完成记录。

正文

  日志文件系统把一组相关修改写入专用日志区域,并标明这组修改是否已提交。只有提交记录可靠落盘后,系统才把修改应用到真正的目录、inode 和数据块。若中途断电,恢复程序能据此判断哪些操作应重做,哪些根本不该算发生过。

  日志不是消灭写入成本,而是把难以判断的半完成状态变成可以辨认的记录。它也需要在写入次数、恢复速度和数据保证强度之间取舍。

  至此,操作系统已能隔离程序,也能尽力保护数据。最后还要回答:这些资源究竟属于谁?

思考题

已有日志时,为什么仍可能需要把真实数据结构写回?

小结

  • 日志让一组更新具备可辨认的提交边界。
  • 恢复可依据日志重放或撤销不完整工作。

思考题答案(仅供参考)

  日志通常只是恢复依据;真实文件内容和元数据仍需最终保存到其正常位置。

协议

本文采用 CC BY-NC-SA 4.0 协议发布。