Linux上的服务器虚拟化 – Windows Server 2008作为guest虚拟机

我目前的设置是使用proxmox VE (使用KVM虚拟化的基于debian的pipe理程序发行版)的AMD服务器,我正在运行一个debian和一个windows server 2008(不是r2)作为虚拟机。

Windows Server得到了一些不好的时机问题(时钟跳转),因为我正在用MsSQL运行一个MMO游戏服务器,导致我的应用程序中断。 在Intel Xeon上也试过这个,因为proxmox的支持build议我不要使用AMD服务器来进行Windows虚拟化,但它也不行。 摆脱这个错误的唯一方法是将虚拟机限制为1个CPU(2个(AMD)或4个(Intel)),但是整个虚拟机过度分配。

我正在寻找KVM的替代scheme来在AMD机箱上运行Windows Server作为虚拟机。 问题是这台服务器是活的,我没有另外的服务器去尝试。 我会检查在本地PC上是否有相同的问题。

我也想testing这个bug是否也发生在VirtualBox中。 我知道VBox不适合服务器,但是如果性能比KVM好,我找不到另外一种方法。

KVM有很多进步,幸运的是,在不更换整个系统的情况下,很容易地尝试新的用户空间工具。 只需下载源代码,编译并从本地目录运行即可。 大部分进步都在用户空间工具中,保持内核模块大部分不变,更重要的是兼容性。

我正在使用一个简单的Ubuntu服务器(9.10,我认为)安装libvirt来处理几个Linux和Windows的客人只使用apt上的软件包。 没有任何时间相关的问题。

在KVM虚拟化环境下保留Windows的访客时间:

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

我相信这就是发生在你身上的事情。

为了澄清他人阅读这个post-guest系统没有准确的计时可能会有一些networking应用程序和进程的问题,因为客人将比实际运行速度更快或更慢,并且不同步。

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

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

$ cat /proc/cpuinfo | grep constant_tsc 

如果有任何输出,你的CPU有constant_tsc位。

然而你的机会并不是 – 因此你遇到的问题 – 因此,另一个解决方法是首先closuresBIOS中的电源pipe理以及KVM。

同样重要的是,Windows使用实时时钟(RTC)和时间戳计数器(TSC)。

较老的系统,如Windows 2003和XP使用boot.ini文件,但是 – 从Windows Vista和更新版本不再使用boot.ini文件。

Windows 2008,Vista和7 Boootconfiguration编辑器:

Windows Vista,Windows Server 2008和Windows 7使用引导configuration数据编辑器(bcdedit.exe)修改Windows引导参数。

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

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

Windows 2003和XP引导configuration编辑:

如果碰巧你正在看这个post – 但是在你的Windows XP和/或Windows 2003系统上存在这个问题,请在Windows启动设置中添加以下行。 在XP和Server 2003中,Windows引导设置存储在boot.ini文件中。 将以下行添加到boot.ini文件中:

 /use pmtimer 

我真的希望这有助于。

祝福, 格伦·凯利

什么版本的ProxMox:1.6有一些新的内核可以帮助 – 从字面上刚刚介绍了几天前

我没有遇到时间问题,但在我们的Windows VPS' – 你偷看@其他交互 – 如libvirt?

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