我已经在很多机器上使用 MDADM + LVM2 有一段时间了。MDADM 既可用于 RAID0 也可用于 RAID1 阵列,而 LVM2 则用于 MDADM 之上的逻辑卷。
最近我发现 LVM2 可以在没有 MDADM 的情况下用于镜像和剥离(因此减去一层,结果开销更少)。
但是,有些人声称镜像阵列的 LVM2 上的读取性能不如 MDADM (RAID1) 上的 LVM2(线性)快,因为 LVM2 不会一次从 2 个以上的设备读取,而是在第一个设备发生故障时使用第二个或更高的设备。MDADM 每次从 2 个设备读取(即使在镜像模式下)。
谁可以证实这一点?
答案1
我敢打赌,甚至 LVM 作者都不会使用 LVM 的 RAID 功能。MD 更加高效、成熟和完整;并且有更多专门的开发。
“层数越少,开销越少”通常并不正确;即使 CPU 可能需要更长的时间才能到达磁盘,但这也可以通过 MD 的任何与磁盘相关的小改进来完全克服,而这样的改进有很多。
答案2
我已经修改了 LVM2 的镜像支持,并且我可以说:它并不是真正要取代 RAID1。
LVM2 镜像的真正用途是在卷之间传输数据。假设您的一个驱动器出现故障,并且您想将数据从点 A(处于危险之中)传输到点 B(安全)。LVM2 镜像功能的目的是自动将数据克隆到其他部分,同时允许常规 I/O 继续进行。在“镜像”赶上后,您可以断开镜像并将数据重新安装到新的安全位置。
它执行此操作的速度并不出色。比如,比直接 RAID1 慢 50% 以上。事实上,它太慢了,我可以看到 LVM2 镜像中的两个驱动器闪烁活动指示灯在不同的时间但如果您需要在物理位置之间转移数据,它会透明地完成这项工作,而这正是 LVM 的真正意义所在 - 在文件系统处于积极的. RAID 更多的是为了避免由于单点硬件故障而导致的数据丢失。
“开销”的问题其实并不存在。你唯一真正会遇到的问题是恢复,这本身就是一篇帖子。从损坏的文件系统中恢复数据很难,从三层文件系统(RAID/LVM/Ext4)中恢复数据更是麻烦。因此,确保驱动器健康(SMART)、阵列健康(mdadm)、卷组健康(LVM2)和文件系统健康(fsck)非常重要。我经历过一次,我宁愿不再经历一次。