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