在虚拟机管理程序与客户操作系统中运行资源密集型服务对性能和稳定性有何影响?
我想设置一个同时运行 Linux 和 Windows 的工作站,由(可能)KVM 托管。两者都将使用一些相同的服务:例如,虚拟机将存储在 zvols 上并共享一个专用于文件存储的 zpool。
我很纠结于哪些服务要在虚拟机管理程序操作系统中运行,哪些服务要在虚拟机中运行。如果我将 ZFS 等服务放在虚拟机中,我担心它们可能会变慢(因为它们必须通过虚拟机管理程序运行)或更容易出错,因为它们将依赖于控制器直通(另一个可能出现问题的地方)。
另一方面,我担心给虚拟机管理程序增加太多额外任务的负担会导致问题,而且我还担心如果我不将 ZFS 放入具有明确限制的虚拟机中,它将消耗多少内存(我正在考虑为运行 ZFS 的操作系统分配 32 Gb)。而且我担心在虚拟机管理程序中安装太多东西会导致更容易发生影响整个系统的冲突(因为这些冲突会发生在虚拟机管理程序内部)。
答案1
无论何种虚拟机管理程序,都应该 100% 专注于为虚拟机提供服务。这有几个原因。
首先,虚拟化的主要优势之一是硬件独立性 - 如果主机死机,可以很容易地将这些虚拟机恢复到另一台主机,并在很短的时间内恢复运行。一旦你开始直接在主机操作系统上部署服务,这个过程就会变得复杂得多。
其次,虚拟机管理程序内核经过调整以处理虚拟化负载,而不是直接在主机操作系统上运行的用户空间进程。
第三,如果必须考虑在虚拟机上运行的进程,进程配置和部署就会变得过于复杂和在裸机上运行的进程。这并非不可克服,但并不理想,应尽可能避免。
因此,直接回答您的问题:不要在主机操作系统上直接运行任何不必要的进程。让虚拟机管理程序完成其工作,并使用虚拟机来提供服务。