我有一个带有 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 工具就不需要扫描卷来获取该信息。难道只是我的小阵列无法从这种功能中受益?在什么情况下我可能想要/需要使用它?
lvmetad 是 LVM 的元数据缓存守护进程。该守护进程接收来自 udev 规则的通知(必须安装该规则才能使 LVM 在使用 lvmetad 时正常工作)。通过这些通知,lvmetad 可以获得系统中可用卷组的最新且一致的映像。默认情况下,即使 lvmetad 正在运行,LVM 也不会使用它。请参阅lvm.conf(5)。
仔细看看这个问题值得另一个定义。 维基百科指出:
日志文件系统是一种文件系统,它在将日志(通常是文件系统专用区域中的循环日志)中所做的更改提交到主文件系统之前对其进行跟踪。如果发生系统崩溃或电源故障,此类文件系统可以更快地恢复在线状态,并且不太可能被损坏。
我不会详细解释 LVM,因为 OP 已经了解其好处。因此,我只会解释为什么添加日记。旧版本的 LVM 没有日志守护进程,这意味着如果系统崩溃,唯一可以使用的日志位于物理卷(硬盘)上。当逻辑卷跨越跨越多个物理卷的逻辑卷组上的多个盘区时,这会产生问题。
如果一个日志事务的一半存在于一个物理卷上,另一半存在于另一个物理卷上,则事务日志无法将更改提交到两个物理卷,因为物理卷不知道它们是卷组的一部分,因为事务日志仅存在于物理卷中。
这就是新守护进程发挥作用的地方。现在,LVM 可以创建日志日志并在卷组中为其创建一个部分,而不是为每个物理卷创建日志日志,该部分仅用于日志记录。执行此操作后,可以在卷组级别找到并重播整个事务日志。