我无法让许多 kvm 客户端上的系统时钟保持同步。我在 Google 上搜索了不少,发现了很多不同的选项,其中很多我都试过了,但都无济于事。所以我来了。
ntpd 是不可能的(主机系统运行它并且时钟总是正确的,但是如果你在客户机上运行它,时钟就会变得很不准确)。
主机是 Ubuntu 9.04,内核是 2.6.28-11-server 客户机是 Ubuntu 8.04,内核是 2.6.24-24-virtual
主机上的时钟源情况如下:
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm jiffies
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
关于客人:
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc pit jiffies
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
pit
我在客户机的内核启动参数中设置了“clock=pit divider=10”。它仍然会漂移。我们说的漂移不是很大,但确实有。
有什么建议吗?有人遇到过这个问题并解决过吗?
答案1
从根本上讲,时钟会有一些漂移,我认为目前能做的事情有限。你说你没有在客户机中运行 NTP,但我认为你应该这样做,只要确保你没有引用本地时钟(注释掉服务器 127.xxx)并且设置了 tinker panic 0,这样当有大的跳跃需要纠正时它就不会失灵。这基本上是 VMWare 计时论文中的指导方针,我猜也适用于 KVM 设置。
答案2
在客户机上获得精确时钟的最佳选择是使用kvm-clock
源(时钟源) 与时钟主机同步。
答案3
以下是 VMware 论文《VMware 虚拟机中的计时》(2008 年)的链接:http://www.vmware.com/pdf/vmware_timekeeping.pdf