什么是 lvmetad,为什么我想要或需要使用它?

Ste*_*icz 31 lvm

我有一个带有 LVM 的 Gentoo 服务器,它运行在我已经使用了多年的 RAID 阵列之上。最近我把LVM升级到2.02.109(不记得之前是什么版本了),升级时收到一条消息:

* Make sure to enable lvmetad in /etc/lvm/lvm.conf if you want
* to enable lvm autoactivation and metadata caching.
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过use_lvmetad = 1在/etc/lvm/lvm.conf.

但是为什么我需要这样的功能?我的理解是它使用 udev 规则将 LVM 状态保持在缓存中,这样 LVM 工具就不需要扫描卷来获取该信息。难道只是我的小阵列无法从这种功能中受益?在什么情况下我可能想要/需要使用它?

Mat*_*arp 31

从这个链接:

通常,每个 LVM 命令都会发出磁盘扫描以查找所有相关的物理卷并读取卷组元数据。但是,如果元数据守护程序正在运行并启用,则可以跳过这种昂贵的扫描……这可以节省大量 I/O 并减少完成 LVM 操作所需的时间,尤其是在具有许多磁盘的系统上。

因此,您将运行它以提高 LVM 管理和状态操作的性能,但代价是启动性能和复杂性增加。系统中磁盘越多,性能提升幅度越大。


eyo*_*100 1

描述

从lvmetad 手册页:

lvmetad 是 LVM 的元数据缓存守护进程。该守护进程接收来自 udev 规则的通知(必须安装该规则才能使 LVM 在使用 lvmetad 时正常工作)。通过这些通知,lvmetad 可以获得系统中可用卷组的最新且一致的映像。默认情况下,即使 lvmetad 正在运行,LVM 也不会使用它。请参阅lvm.conf(5)。


仔细看看这个问题值得另一个定义。 维基百科指出:

日志文件系统是一种文件系统,它在将日志(通常是文件系统专用区域中的循环日志)中所做的更改提交到主文件系统之前对其进行跟踪。如果发生系统崩溃或电源故障,此类文件系统可以更快地恢复在线状态,并且不太可能被损坏。


推理

我不会详细解释 LVM,因为 OP 已经了解其好处。因此,我只会解释为什么添加日记。旧版本的 LVM 没有日志守护进程,这意味着如果系统崩溃,唯一可以使用的日志位于物理卷(硬盘)上。当逻辑卷跨越跨越多个物理卷的逻辑卷组上的多个盘区时,这会产生问题。

如果一个日志事务的一半存在于一个物理卷上,另一半存在于另一个物理卷上,则事务日志无法将更改提交到两个物理卷,因为物理卷不知道它们是卷组的一部分,因为事务日志仅存在于物理卷中。

这就是新守护进程发挥作用的地方。现在,LVM 可以创建日志日志并在卷组中为其创建一个部分,而不是为每个物理卷创建日志日志,该部分仅用于日志记录。执行此操作后,可以在卷组级别找到并重播整个事务日志。

  • 您的回答似乎表明 lvmetad 为在其上运行的文件系统提供了一项服务,使其能够正确记录日志。但其他消息来源只是说它缓存了有关 lvm 命令行工具命令集的 LVM 布局的信息。通过一些来源来支持您的版本会很高兴。 (14认同)
  • 我必须回应@PavelŠimerda 的怀疑态度。lvmetad 手册没有提到日志记录。更不用说如果 LVM 开始支持日志感知,这将是一种分层违规(因为这意味着它需要知道哪些文件系统正在记录日志,哪些没有,并且它需要知道哪个文件系统位于顶层)的)。我也不明白为什么文件系统的日志分布在多个物理卷上会成为问题。对于 RAID 0 等其他技术,这种情况经常发生。 (8认同)