Linux 上的服务器虚拟化 - Windows Server 2008 作为客户机

Linux 上的服务器虚拟化 - Windows Server 2008 作为客户机

我当前的设置是一台 AMD 服务器普罗西莫司VE(基于 debian 的虚拟机管理程序发行版,使用 KVM 虚拟化)并且我正在运行一个 debian 和一个 windows server 2008(不是 r2)作为虚拟机。

Windows Server 出现了一些计时问题(时钟跳动),导致我的应用程序被杀掉,因为我正在使用 MsSQL 运行 MMO 游戏服务器。我还在 Intel Xeon 上尝试了这种方法,因为 proxmox 支持建议我不要使用 AMD 服务器进行 Windows 虚拟化,但这种方法也不起作用。解决此错误的唯一方法是将 VM 限制为 1 个 CPU(2 个(AMD)或 4 个(Intel)),但这样整个 VM 就会过度分配。

我正在寻找 KVM 的替代方案,以便在 AMD 机器上将 Windows Server 作为 VM 运行。问题是这台服务器是实时的,我没有其他服务器可以尝试。我会检查在本地 PC 上是否遇到同样的问题。

我也想测试这个错误是否也发生在 VirtualBox 中。我知道 VBox 不适合服务器,但如果性能比 KVM 更好,而且我找不到其他方法,那么它可能就是最佳选择。

答案1

KVM 虚拟化下 Windows 中的客户机时间保持:

虚拟化给客户计时带来了各种挑战。一般来说,使用时间戳计数器 (TSC) 作为时钟源的客户通常会遇到计时问题,因为某些 CPU 没有恒定的时间戳计数器。

我相信这就是你所正在发生的事情。

为了向其他阅读这篇文章的人澄清——没有准确计时的客户系统可能会出现一些联网应用程序和进程的问题,因为客户的运行速度会比实际时间更快或更慢,并且会失去同步。

KVM 通过为客户机提供半虚拟化时钟来解决此问题。或者,一些客户机可能会在这些操作系统的未来版本中使用其他 x86 时钟源进行计时。

要确定您的 CPU 是否具有恒定时间戳计数器,请运行以下命令:

$ cat /proc/cpuinfo | grep constant_tsc

如果给出任何输出,您的 CPU 就有 constant_tsc 位。

然而,您的电脑可能没有,因此您遇到了问题,因此另一个解决方法/替代方法是首先关闭 BIOS 以及 KVM 中的任何电源管理。

还需要注意的是,Windows 同时使用实时时钟 (RTC) 和时间戳计数器 (TSC)。

但是,Windows 2003 和 XP 等旧系统使用 boot.ini 文件 - 从 Windows Vista 及更新版本开始,不再使用 boot.ini 文件。

Windows 2008、Vista 和 7 启动配置编辑器:

Windows Vista、Windows Server 2008 和 Windows 7 使用启动配置数据编辑器 (bcdedit.exe) 来修改 Windows 启动参数。

  1. 打开 Windows 客户机。
  2. 打开开始菜单的附件菜单。右键单击命令提示符应用程序,选择以管理员身份运行。
  3. 如果出现提示,请确认安全异常。
  4. 将启动管理器设置为使用平台时钟。这应指示 Windows 使用 PM 计时器作为主时钟源。如果系统 UUID 与默认启动设备不同,则应更改系统 UUID(以下示例中为 {default})。

    C:\Windows\system32>bcdedit /set {default} USEPLATFORMCLOCK on 操作已成功完成

Windows 2003 和 XP 启动配置编辑:

如果您恰巧看到了这篇文章 - 但问题存在于您的 Windows XP 和/或 Windows 2003 系统上,请将以下行添加到 Windows 启动设置中。在 XP 和 Server 2003 中,Windows 启动设置存储在 boot.ini 文件中。将以下行添加到 boot.ini 文件:

/use pmtimer

我真的希望这会有所帮助。

祝福, 格伦·凯利

答案2

KVM 有很多进步,幸运的是,尝试新的用户空间工具非常容易,而无需替换整个系统。只需下载源代码,从本地目录编译和运行即可。大多数进步都发生在用户空间工具中,保持内核模块基本不变,更重要的是兼容。

我正在使用一个简单的 Ubuntu 服务器(我认为是 9.10)安装 libvirt 来处理多个 Linux 和 Windows 客户机,仅使用 apt 上可用的软件包。完全没有与时间相关的问题。

答案3

ProxMox 的版本:1.6 有一些可能有帮助的新内核 - 实际上是几天前刚刚推出的

但是,我在我们的 Windows VPS 上没有遇到时间问题 - 您是否研究过其他替代方案 - 例如 libvirt?

答案4

不知道 proxmox 的情况,但在基于 RHEL5.5 的 KVM 上运行数十台 win2k8r2 服务器,完全没有时间问题。所有虚拟机都分配了 2-4 个 CPU

相关内容