我可以使用带有 zfs zvols 的 Solaris 上的 virtualbox 虚拟化 Windows 和 Linux 吗?

我可以使用带有 zfs zvols 的 Solaris 上的 virtualbox 虚拟化 Windows 和 Linux 吗?

我正在考虑构建一个系统,使用 Solaris 上的 virtualbox 虚拟化 Windows Server 2016 和 CentOS 6(供家庭使用),以利用 zfs 的可靠性。

我计划购买一块带有 1TB 内存的 DP ws/服务器主板,外加一堆 WD Red 硬盘。

我还想让 Windows VM 访问 GPU 资源。在这种情况下可以吗?

是否可以托管使用 zfs zpool 或 vdev 的 Windows/Linux VM,而不是直接通过硬件进行文件系统访问?

我确实只需要 Windows 和 Linux 操作系统,但仅仅为了 zfs 的好处及其与 virtualbox 的兼容性而考虑使用 solaris 主机。

有没有更好的方法可以做到这一点,或者我选择了最好的选择?

无论这是最好的方法还是有更好的方法,您建议的任何方法都存在哪些陷阱?

我的预算有限,如果有可用的免费软件选项,我宁愿把钱花在硬件而不是软件上。

我的另一个选择是添加带有 raid 6 的硬件 sas 适配器,并使用 Windows Server 2016 作为 virtualbox 和 linux 以及任何其他 VM 的主机,但 ntfs 不如 zfs 可靠……

编辑

我的目标是:

  1. 有一台物理机。

  2. 最大限度地降低由于硬盘故障和其他文件系统问题而导致数据丢失的可能性。

  3. 运行 Windows 2016 服务器操作系统以及一些应用程序,如 Exchange、sql server。这里需要 GPU

  4. 运行修改后的 CentOS 系统 (FreePBX)。

  5. 运行一些其他虚拟机,最好也支持 GPU。

  6. 补充并最终取代 Synology RS812+ 盒。

  7. 尽量减少软件开支,以便在预算范围内购买更多/更好的硬件。

我正处于计划阶段,因此在此阶段我可以考虑任何事情。

我的想法是,如果使用 Solaris 主机,整个文件系统将采用 zfs,因此可以比 VM 客户机更好地防止故障 - 除非我误解了什么。替代方案似乎会导致至少部分文件系统为非 zfs,可靠性较低。

答案1

我还想让 Windows VM 访问 GPU 资源。在这种情况下可以吗?

要直接直通 PCIe 显卡,您需要:

  • 两个 PCIe 显卡(如果使用某些技巧,例如在启动时通过脚本将卡从虚拟机管理程序系统移动到客户系统,则需要一个)
  • 支持 Intel VT-d 或 AMD Vi (以前称为 IOMMU) 的主板
  • 支持它的虚拟机管理程序软件

不幸的是,Virtualbox目前不支持如果这是硬性要求,您可能需要使用 Linux 上的 KVM 或 illumos、VMware ESXi 或 Microsoft Hyper-V,它们都支持它(尽管需要不同的配置工作)。

是否可以托管使用 zfs zpool 或 vdev 的 Windows/Linux VM,而不是直接通过硬件进行文件系统访问?

是的,这是可能的。以下是相关命令摘自 Johannes Schlüter 的博客文章:

# zfs create -V 10G tank/some_name
# chown your_user /dev/zvol/rdsk/tank/some_name
# VBoxManage internalcommands createrawvmdk \
  -filename /home/your_user/VBoxdisks/some_name.vmdk \
  -rawdisk /dev/zvol/rdsk/tank/some_name
# VBoxManage registerimage disk /home/your_user/VBoxdisks/some_name.vmdk

或者你可以使用康星通过 iSCSI 为 zvol 提供服务。

虽然这只会带来轻微的额外开销,并且在本地情况下没有直接优势,但当您想要扩展并例如添加另一个(冗余)存储服务器或将存储移动到单独的盒子时,您可能会从中获益。

在您的具体情况下,我不会这样做,但存在该选项(也可以使用 NFS 而不是 iSCSI,但是当使用 zvols 而不是文件系统时,如果两者都配置正确,则没有直接的优势)。

有没有更好的方法可以做到这一点,或者我选择了最好的选择?

  • 如果你想使用 Virtualbox,我会这样做
  • 如果您对虚拟机管理程序很灵活,您可以看看 SmartOS(ZFS、Zones 和 KVM,是专为托管虚拟机而构建的小型几乎无状态的服务器操作系统)
  • 如果您需要 PCIe 直通显卡,则可能需要使用 Linux+KVM、ESXi 或 Hyper-V 作为虚拟机管理程序,虚拟化 Solaris/illumos 存储 VM,将磁盘直通到它并通过 NFS 或 iSCSI 将它们返回到虚拟机管理程序,然后正常使用。这也称为一体式存储设备 (AiO),我建议阅读有关该概念的内容gea 的优秀手册(参见顶部的 PDF 链接)。这听起来很复杂,但一旦设置好,它就会出奇地简单和灵活,因为您可以随时将其从虚拟网络扩展到物理网络,可以像往常一样更换硬件,整个方法是分层的。它有一些缺点,但我只会在您感兴趣的情况下讨论它们,因为它们相当小众。

关于您的编辑:

  1. 有一台物理机。
  2. 最大限度地降低由于硬盘故障和其他文件系统问题而导致数据丢失的可能性。
  3. 运行 Windows 2016 服务器操作系统以及一些应用程序,如 Exchange、sql server。这里需要 GPU
  4. 运行修改后的 CentOS 系统 (FreePBX)。
  5. 运行一些其他虚拟机,最好也支持 GPU。
  6. 补充并最终取代 Synology RS812+ 盒。
  7. 尽量减少软件开支,以便在预算范围内购买更多/更好的硬件。

从广义上讲,您有两种可能的一体式设置选项 - 存储本身虚拟化(如我链接的 napp-it 自述文件中所述)或虚拟机管理程序上的存储。我将它们称为 A 和 B,以便根据您的观点进行比较。

  1. A和B是相等的,因为它们在同一台物理机器上。
  2. A 和 B 几乎相同,因为两个系统都可以使用 ZFS。使用 A,您可以自由选择存储操作系统(Solaris、illumos、Linux、BSD);使用 B,您必须选择支持 ZFS 和 PCIe 直通 VGA 的系统(目前只有 Linux 和 FreeBSD)。这也会影响您对虚拟机管理程序的选择(ESXi、Hyper-V、A 的 KVM 和 B 的 KVM)。
  3. A 和 B 相等。但请注意,单个 GPU 只能传递给单个正在运行的 VM,该 VM 会完全占用它。切换 GPU 需要关闭受影响的 VM。如果您需要共享 GPU 支持,您的选择有限:Nvidia Tesla/Grid(非常昂贵)或新的 Intel Skylake 共享 GPU(功能不是非常强大,仍处于试验阶段,请参阅KVMGT 演示)。
  4. 两种情况都没有问题,因为虚拟 VGA 卡就足够了。
  5. 参见第 3 点,根据虚拟机的数量,购买多张卡或单张网格卡或者等到 KVM 中所有卡的共享都正确实现也是可以的。
  6. 两种情况都支持使用 iSCSI 和 NFS 进行内部和外部(即真实网络)使用,这取决于您的管理偏好。此外,两者都可以使用 NAS/SAN 中的存储(根据数据表假设,我自己没有系统)。
  7. 无论您选择哪种方式,所有软件都可以在无需任何许可费用的情况下运行,当然 Windows Server 和所需的 CAL(但可以用 samba4 替换)和 Solaris(可以用 OmniOS、OpenIndiana 或 SmartOS 等 illumos 发行版替换)除外。Grid 解决方案可能有额外的许可费用,我没有研究它,因为硬件本身非常昂贵,在这些情况下没有用处。

因此,这很大程度上取决于偏好:

  • 如果您熟悉 Linux 管理(包括 ZoL)和 KVM 设置(根据硬件和发行版的不同可能会有点棘手),那么如果您选择解决方案 B,您可以绕过额外的存储 VM 并且需要小型 SSD/HDD。
  • 另一方面,如果您想从全部选项中进行选择并针对每种情况使用最佳的系统,那么您可能会从解决方案 A 的灵活性中获益(尽管这里可能会出现轻微的内部网络开销)。

相关内容