如何防止 CentOS KVM 主机上的 Debian 来宾出现时间漂移?

如何防止 CentOS KVM 主机上的 Debian 来宾出现时间漂移?

我知道我可以ntp在来宾中安装,但我对迄今为止谷歌搜索的内容的混乱理解表明这应该是没有必要的。

主机是 CentOS 6.3,来宾是 Debian Wheezy,它似乎使用 kvm 时钟作为时间源:

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock

我需要做一些特殊的事情才能让来宾使用主机时钟吗?

答案1

客人没有直接的访问主机时钟。相反,它使用 kvm-clock,它根据主机时钟指向主机更新的内存区域。就这样,客人使用主机时钟。问题是这个内存区域不会不断更新,只有在发生虚拟机“事件”时才会更新,因此,来宾可能会漂移,然后又回到正确的时间。

据我所知,一般建议是确保虚拟机定期执行某些操作,以便它定期重新读取主机时钟。

一些消息来源,

答案2

如前所述,主机将时间写入客户机可以读取的内存页。这通常意味着虚拟机的硬件时钟与主机的硬件时钟相匹配,除非主机在关键事件(例如扩展 CPU 速度)上不写入该页面的任何错误。问题通常是操作系统无法识别硬件时钟正在更改/调整。常规的“hwclock --hctosys”将根据当前硬件时钟更新操作系统,并且(在我看来)比运行 NTP 守护程序更干净。

您可以通过在 kvm-clock guest 虚拟机中运行类似的命令来查看此操作:

date && hwclock --hctosys && date
Sun Jan  5 23:40:44 MST 2014
Sun Jan  5 23:40:06 MST 2014

答案3

除了已经说过的关于 kvm-clock 的内容之外,您可能还想尝试标准的最佳实践 - 远离无滴答内核,将内核滴答数降低到 10 左右,启用ntpclient,确保主机没有过载 - 时间漂移经常发生在CPU 严重过度使用。如果虚拟机分配了很多虚拟 CPU,请将这个数字也减少几个等级

相关内容