通用日志文件系统简介

通用日志文件系统 (CLFS) 是一种常规用途的日志记录服务,可在用户模式或内核模式下运行的软件 客户端 使用。 本文档讨论内核模式客户端的 CLFS 接口。 有关用户模式接口的信息,请参阅 Microsoft Windows SDK 中的通用日志文件系统。

CLFS 封装了用于恢复和隔离利用语义 (ARIES) 算法的所有功能。 但是,CLFS 设备驱动程序接口 (DDI) 并不仅限于支持 ARIES;它非常适合各种日志记录方案。

任何高性能事务日志的主要工作都是允许日志客户端准确重复历史记录。 CLFS 通过将客户端日志记录封送到内存缓冲区中,强制它们进入稳定存储,并按请求读取记录来执行此操作。 请务必注意,在记录将其转换为稳定存储并且存储介质完好无损后,CLFS 将能够跨系统故障读取记录。

CLFS 支持专用日志和多路复用日志。 专用日志具有所有日志客户端使用的单个日志记录 。 多路复用日志 (也称为通用日志) 具有多个流。 每个流都有自己的客户端和自己的内存缓冲区,用于封送日志记录,但来自所有这些缓冲区的记录将多路复用到单个队列中,并刷新到稳定存储上的单个日志。 多路复用允许合并多个流的 I/O 操作。

当客户端将记录写入流时,它会 (LSN) 获取日志序列号,该序列号标识日志记录以供将来引用。 分配给写入特定流的记录的 LSN 构成递增序列。 也就是说,分配给写入流的记录的 LSN 始终大于分配给写入同一流的前一条记录的 LSN。

CLFS 除了封送、刷新和检索日志记录外,还提供多项服务。 以下列表介绍了其中一些附加服务。

  • 可以提前保留一组相关日志记录的空间。 这意味着客户端可以继续处理事务,因为知道 CLFS 能够将描述该事务的所有记录追加到日志中。

  • CLFS 为每个日志记录维护一个标头。 客户端可以在标头中设置某些字段,以创建链接记录链,稍后可以反向遍历这些记录。

  • CLFS 根据其策略将日志记录刷新到稳定存储,但也允许客户端将一组日志记录强制到稳定存储。

  • CLFS 维护日志和多路复用日志的每个流的元数据。 客户端可以查看元数据并设置元数据的某些部分。

  • 对于每个流,CLFS 维护一个基本 LSN 和最后一个 LSN,客户端可以使用该 LSN 来描述流的活动部分。

  • 对于专用日志,CLFS 在客户端的请求) 存档尾部维护 (,客户端可以使用该结尾跟踪已存档的日志部分。

CLFS 的某些功能 (例如,最好通过研究 ARIES 来理解记录标头) 的上一个 LSN 和撤消下一个 LSN 字段。 有关 ARIES 的详细信息,请参阅以下文章。

  • C. Mohan、Don Haderle、Bruce Lindsay、Hamid Pirahesh、Peter Schwarz、 ARIES:一种事务恢复方法,支持使用Write-Ahead日志记录Fine-Granularity锁定和部分回滚

  • C. 莫汉, 在 ARIES 之外重复历史