我对设置家庭服务器/渲染 PC 感兴趣。我的目标是拥有 8 个或更多 HDD 用于存储和冗余,并利用服务器的可用处理能力在 Windows 环境中借助 GPU 在 Adobe Premiere 中渲染视频。我知道 unRAID 可以提供这个基本功能,但我更喜欢使用 ZFS,因为它提供了更好的性能和冗余。
是否可以使用基于 Linux 或 FreeBSD 的虚拟机管理程序来维护 ZFS 驱动器池,同时允许 Windows 通过 GPU 的 PCI-e 直通运行?或者这样的系统效率太低了?
该服务器的工作规格是 2x E5-2670 和 96 GB DDR3 RAM。
答案1
这不仅仅是一个效率低下的问题(尽管事实也是如此)。
虽然您可以在虚拟机中使用 ZFS,但 ZFS 确实应该独立运行。如果您的虚拟磁盘在旧文件系统上运行,那么使用 ZFS 的主要优势(自动修复损坏的数据)就不复存在了。ZFS 池位于虚拟磁盘内,可以修复存储在该虚拟磁盘内的池中的损坏数据,但如果虚拟磁盘本身(存储在主机系统的传统文件系统中)损坏,则无法对其进行任何处理。在虚拟化环境中使用它很可能会导致 ZFS 执行某些自动任务时出现问题,并对其增加一些资源限制。
最好只是将一个简单/低端的 CPU 连接到一个不错的硬件 RAID 卡,然后将其专用为 ZFS NAS 盒。
答案2
是否可以使用基于 Linux 或 FreeBSD 的虚拟机管理程序来维护 ZFS 驱动器池,同时允许 Windows 通过 GPU 的 PCI-e 直通运行?或者这样的系统效率太低了?
是的,只要您有 vt-d(您的 CPU 有),就有可能。
您基本上可以执行以下操作之一:
- 存储控制器虚拟化:
- 在裸机上安装您选择的任何虚拟机管理程序(ESXi、KVM、HyperV)(请注意,有些虚拟机管理程序有限制,例如 ESXi 不会直通 Nvidia 的消费级视频卡,只能直通 AMD 的消费级视频卡)
- 创建一个小型存储虚拟机,使用您选择的支持 ZFS 的操作系统(Solaris、illumos 衍生产品、FreeBSD、Linux),将您的 HBA 分配给此机器,并像在存储虚拟机内的裸机上一样配置您的磁盘
- 在虚拟机管理程序(NFS 或 iSCSI)上的内部网络中共享您的存储,并在其上创建一个新的 VM 存储池
- 在这个新的 VM 存储池上创建 Windows VM 和任何其他 VM,将 GPU 分配给 Windows VM,然后照常安装
- 存储控制器和虚拟机管理程序位于同一台机器上:
- 在裸机上设置您选择的系统,它必须同时支持 ZFS 和具有 GPU 直通的虚拟化(这目前基本上将其限制为 Linux 上的 KVM)
第一种解决方案在虚拟机管理程序和操作系统的选择上更加灵活(为每个任务选择最佳操作系统,无需在虚拟机上混合任务),但设置起来更复杂(因为需要额外的存储网络层)和管理起来更复杂(因为您无法直接登录到虚拟机管理程序)。理论上,第二点也适用于第二种解决方案,但我认为您可以破解 KVM,以便使用虚拟机管理程序(dom0)本身(尽管存在安全问题)。