我已经看到了一堆这些日志消息
Jan 3 00: 58: 57 foo kernel: set_rtc_mmss: can't update from 0 to 58
它们发生在运行在VMware上的CentOS 6.4虚拟机上。 我知道这是与在来宾操作系统上没有正确设置硬件时钟有关。 我发现这个命令将硬件时钟设置为当前系统时间:
sudo hwclock --systohc
这是一个虚拟机的正确设置? 另外,这可以设置在哪里,所以它是持久的? 在内核启动参数? 我想新configuration的虚拟机没有这个问题。
更新1
按照要求:
me@foo:~> ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== LOCAL(0) .LOCL. 10 l 43 64 377 0.000 0.000 0.000 +dtc-nist01.ntp. .ACTS. 1 u 174 1024 377 3.311 -8.554 0.497 *nist1-nj.ustimi .ACTS. 1 u 205 1024 377 6.737 3.775 0.433 +nist1-pa.ustimi .ACTS. 1 u 55 1024 377 8.610 4.688 0.337
我看到vmwaretools在这个虚拟机上已经过时了。 也许我用于pipe理vmwaretools安装的puppet模块没有正确安装。 我会看看,回到你身边。
更新2
是的,vmware工具已安装并且是最新版本。
me@foo:~> ps aux | grep vmtools root 56021 0.0 0.1 59508 4156 ? S Jan09 3:29 /usr/sbin/vmtoolsd
更新3
我试着在VM上启用“与主机同步访客时间”:
me@foo:~> vmware-toolbox-cmd timesync status Disabled me@foo:~> vmware-toolbox-cmd timesync enable me@foo:~> vmware-toolbox-cmd timesync status Enabled
但我仍然收到这些消息。 事实上, date
和时间现在相隔几分钟,而过去相当紧张。
过去,较老的SLES 9虚拟机受益于VMware客户端的VMware文章“ 计时最佳实践”中的设置,但它指出CentOS / RHEL 6 guest虚拟机不需要任何额外的内核参数设置。
更新4
升级到CentOS 6.5没有帮助。 内核是:
Linux foo 2.6.32-431.1.2.0.1.el6.x86_64 #1 SMP Fri Dec 13 13:06:13 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
VMWare确实有一些关于如何在客户端操作系统中configurationntp客户端的知识。 首先要确保vmware-toolbox timesync是禁用的,因为你只希望ntp更新时间。
来自Linux客人的计时最佳实践 :
这是他们的示例/etc/ntp.conf
:
tinker panic 0 restrict 127.0.0.1 restrict default kod nomodify notrap server 0.vmware.pool.ntp.org server 1.vmware.pool.ntp.org server 2.vmware.pool.ntp.org driftfile /var/lib/ntp/drift
第一行( tinker panic 0
)允许大的时间跳转。 (例如,系统状态已保存/恢复)
另一种方法是禁用guest虚拟机中的ntp,并启用vmware-tools时间同步。
你正在运行CentOS 6.4的最新内核版本吗? 我会尝试启动clocksource = acpi_pm。 另外,我会做ntpdate -u tick.usno.navy.mil && hwclock –systohc,让事情坐下来。 如果事情继续下去,那么加上divizor = 10。
老实说,我怀疑这个问题与你的特定内核中的代码有关,用于设置和读取实时时钟 – 这就是错误信息。 另一部分是由于虚拟时间中断没有被正常传送,或者定时器中断处理程序没有正确地扩展内核时间 – 这就是时钟漂移的原因。
不幸的是,强制ntp更加激进只是这个问题的一个拐杖。
有没有更新的内核可供你使用? 这可能是你最安全的select。 祝你好运。
基于我读过的所有内容,这听起来好像这些警告是良性的,特别是如果您的服务器上的date
是好的。 有点烦人,但。
我会从ntp.org这个消息让我放心:
根据http://www.ntp.org/ntpfaq/NTP-s-trbl-spec.htm#Q-LINUX-SET-RTC-MMSS :
8.3.4.1.1。 什么set_rtc_mmss:不能从54更新到5是什么意思?
函数set_rtc_mmss()从系统时间更新CMOS时钟的分钟和秒钟。 它不会更新小时或date以避免时区出现问题[1]。 显示的消息是为了让用户和实施者意识到并非所有时间更新都会成功的问题。
假设系统时间是17:56:23而CMOS时钟已经是18:03:45。 只更新分钟和秒就会将硬件时钟设置为18:56:23,这是一个错误的值。 解决此问题的方法是等待几分钟,或者安装修复问题的内核修补程序。 通常情况下,硬件时钟的错误时间将不会显示,直到重新启动后,或者APM可能会减慢您的系统。