在 VMWare 中运行的 Linux 服务器中运行软件 RAID 的原因

gue*_*tli 1 virtualization software-raid

我发现我们的其中一台服务器在 VMWware 虚拟机中运行,并且具有软件 RAID。

在接下来的几天内无法联系到管理员。

我认为 VM 中的软件突袭没有意义。我认为 RAID 应该由管理程序处理,而不是在 VM 内部处理。

这样做的可行原因是什么?

cat /proc/mdstat

Personalities : [raid10] 
md127 : active raid10 sde1[3] sdc1[1] sdb1[0] sdd1[2]
      209712128 blocks super 1.0 512K chunks 2 near-copies [4/4] [UUUU]
      bitmap: 0/2 pages [0KB], 65536KB chunk

unused devices: <none>
Run Code Online (Sandbox Code Playgroud)

Aus*_*arn 12

一般来说,大多数时候这样做是没有意义的。

但是,有一些特殊情况确实有意义(这不是一个详尽的列表,只是我能想到的东西):

  • 管理员知道如何在 Linux 上设置软件 RAID 阵列,但不知道如何在 VMWare 上设置,因此他将其设置在他知道可以正确管理的地方。鉴于您没有在服务器上提供太多其他信息,这将是我在您的特定情况下的第一个猜测。
  • 如果无论如何都必须是软件 RAID,则在 VM 内部而不是外部处理它可能更有效。对于您正在使用的任何特定 VMWare 产品,情况可能是也可能不是(我怀疑它是否适用于 ESXi,但如果适用于其他一些 VMWare 产品,我也不会感到惊讶)。
  • 如果来宾在物理服务器上开始运行,然后您需要对其进行虚拟化,那么在来宾中保持存储堆栈原样更有意义,因为它简化了转换过程并减少了来宾中某些内容停止的机会由于配置不同而工作。
  • 如果 VM 的目的是测试将在真实硬件上使用的特定软件配置,则 VM 内部的配置应尽可能接近真实硬件上实际使用的配置,包括使用相同的存储堆。
  • 此处并非如此,但如果在 VM 内部而不是外部使用 BTRFS/ZFS,则在 VM 内部进行任何复制和/或奇偶校验更有意义,以便您可以充分利用 BTRFS/ZFS 提供的块校验和用于错误恢复。如果您将 BTRFS 或 ZFS 作为主机上的存储后端,但不在来宾中使用它们,则可以反向应用相同的论点。
  • 如果需要将每个副本存储在物理上独立的硬件上,通过将 RAID 层放在 VM 中可能更容易实现。这可以通过 Linux 上的 QEMU 和 iSCSI 上的磁盘轻松演示,使用主机上的 RAID 层,您必须通过主机块层内的多个层来路由事物,而将 RAID 层放在 VM 中意味着您不必甚至触及主机的块层(因为 QEMU 可以原生地讲 iSCSI)。
  • 在来宾操作系统中运行的任何应用程序实际上可能关心复制的细粒度控制或与其相关的详细性能统计信息,如果在主机上处理 RAID 阵列,则这两者都不容易提供。