通用日志文件系统(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 的某些功能(例如,记录标头的上一个 LSN 和撤消下一个 LSN 字段)可以通过研究 ARIES 来最好地理解。 有关 ARIES 的详细信息,请参阅以下论文。
C. Mohan、Don Haderle、Bruce Lindsay、Hamid Pirahesh、Peter Schwarz、ARIES:一种事务恢复方法,支持使用预写日志记录(Write-Ahead Logging)进行细粒度锁定和部分回滚。
C. 莫汉,超越ARIES的重复历史。