linux LVM 镜像与 MD 镜像

linux LVM 镜像与 MD 镜像

我记得几年前用 LVM 制作过一些镜像,但我不记得这个“日志”的事情。或者我可能用 mdadm 制作了镜像,并将 LVM 放在上面。一定是这样。

  1. 如果 LVM 日志只是镜像,那么它有什么用呢?日志里存储了什么?它的用途是什么?使用“--mirrorlog core”不好吗?有什么缺点?如果没有必要,我不想为日志设置另一个分区。

  2. 关于使用这两种技术有什么建议吗?即使我使用 mdadm 制作镜像,我也会在此基础上使用 LVM。那么,在这种情况下,也许最好使用 LVM 构建整个设置……?这会对性能造成更多还是更少的影响?

这些磁盘用于存储 Xen domU“磁盘”。

抱歉,我的“问题”很复杂,没有切中要点。

欢迎提出想法、建议和链接。谢谢!

答案1

我个人总是选择 MD+LVM。它速度更快(MD 可以在 RAID1 中并行读取),并且只需要 2 个磁盘(如果您不想在每次重新启动后重建镜像),而且 MD 专为执行 RAID 而设计,并且它做得非常好。它也更灵活。

我也曾被 LVM 搞得焦头烂额。有一次,HP-UX 上的 LVM 条带化(Linux 中的 LVM2 不会发生这种情况),我无法扩展 LV,因为扩展必须具有完全相同的条带数。这似乎是合理的,但有时...

还有一次是使用镜像(这次是 Linux 中的 LVM2),但现在我不记得 LVM 是否拒绝对镜像 LV 进行快照或扩展它,这实际上抵消了首先拥有 LVM 的好处(我们最终这样做了,但涉及来回使用 lvconvert)。

答案2

当镜像对突然关闭时,在任何系统中,可能有一些块已写入一个设备但尚未写入另一个设备。可以想象,通过重新排序 IO 路径,有些块已写入 A 但尚未写入 B,有些块已写入 B 但尚未写入 A。

当机器重启时,它需要使设备保持一致。仅仅拥有两个设备是不够的:它不知道哪些块不一致,也不知道哪个版本较新。

因此镜像软件需要存储一些元数据来跟踪这一点。这被称为“写入意图日志”。

md 通常将其存储在设备本身内部的一些保留空间中,但您也可以选择将其存储在单独的设备上。(这是 md 镜像比基础设备略小的原因之一。)

LVM 镜像只能将写入范围日志存储在外部,正如您所注意到的,这对于您只有两个物理磁盘的典型情况来说有点烦人。我相信您仍然可以选择将其存储在同一个物理设备上的不同分区上,但这仍然很不方便。

据我了解,LVM 镜像日志的目的是跟踪已写入一个设备但尚未写入另一个设备的块。

答案3

这是两个不同的概念:

  • 顾名思义,LVM 就是用于卷管理的。可以将其视为一种将多个卷合并为一个的机制(是的,您可以说它类似于 raid0),调整它们的大小,实时调整大小,创建快照。
  • MD 用于 RAID 管理。将多个设备添加到一个元设备中,使用 raid1、5、10 等使该元设备具有高可用性...

LVM 在存储设备上运行,无论是元设备,还是 RAID 控制器提供的设备,或者只是普通磁盘。

MD 在磁盘上运行(是的,您也可以使用 raid 控制器提供的磁盘,但意义何在?..

LVM 不是为了提高存储的高可用性。同样,MD 也不是为了卷管理...

希望这可以帮助 :)

答案4

使用 -mirrorlog mirrored 和 -alloc anywhere 选项,在两个磁盘上,您将获得两个 4M 镜像日志,每个磁盘一个。我很恼火,因为我不得不为看似最常见的情况覆盖该策略,但没关系。

Linux 上的 LVM 与 HP-UX 或 AIX 上的 LVM 无关,只是具有相同的用户空间命令。Linux 上的 LVM 在内部使用 DM 系统,因此使用与 MD 相同的代码。目前,我认为 LVM 相对于 MD 没有任何优势。对于您希望快速且不关心备份的分区(例如用于客户虚拟机的交换分区),LVM 为您提供了是否希望这些分区镜像或剥离是否更好的选项。

而且,向 LVM 添加磁盘比向 MD 添加磁盘容易得多。

相关内容