设备映射器日志

设备映射器日志代码被一些设备映射器 RAID 目标用来跟踪磁盘上不一致的区域。磁盘的区域(或地址空间的一部分)可能不一致,因为当前正在操作 RAID 条带,或者机器在区域被更改时死机。对于镜像,当您写入一个区域时,该区域将被认为是脏/不一致的,因为写入需要复制到镜像的所有分支,并且可能无法同时到达这些分支。一旦所有写入完成,该区域将再次被认为是干净的。

有一个通用的日志记录接口,设备映射器 RAID 实现使用该接口来执行日志记录操作(请参见 include/linux/dm-dirty-log.h 中的 dm_dirty_log_type)。有各种不同的日志记录实现可用,并提供不同的功能。列表包括

类型

文件

磁盘

drivers/md/dm-log.c

核心

drivers/md/dm-log.c

用户空间

drivers/md/dm-log-userspace* include/linux/dm-log-userspace.h

“磁盘”日志类型

此日志实现将日志状态提交到磁盘。这样,日志状态可以在重启/崩溃后幸存。

“核心”日志类型

此日志实现将日志状态保存在内存中。日志状态在重启或崩溃后不会幸存,但可能会有小的性能提升。如果没有可用于存储日志状态的存储设备,也可以使用此方法。

“用户空间”日志类型

此日志类型只是提供了一种将日志 API 导出到用户空间的方式,以便可以在那里完成日志实现。这是通过将大多数日志记录请求转发到用户空间来完成的,用户空间中的守护程序接收并处理该请求。

用于内核和用户空间之间通信的结构位于 include/linux/dm-log-userspace.h 中。由于内核和用户空间之间的交换的频率、多样性和双向通信性质,“连接器”被用作通信接口。

目前有两种用户空间日志实现利用此框架 - “集群磁盘”和“集群核心”。这些实现为共享存储提供集群一致的日志。当采用集群日志实现时,设备映射器镜像可以在共享存储环境中使用。