日志中的内核警告:set_rtc_mmss 无法从 0 更新到 58

Ban*_*jer 6 virtual-machines centos vmware-esxi

我一直在看到一堆这些日志消息

Jan 3 00: 58: 57 foo kernel: set_rtc_mmss: can't update from 0 to 58
Run Code Online (Sandbox Code Playgroud)

它们发生在运行在 VMware 上的 CentOS 6.4 虚拟机上。我知道这与未在来宾操作系统上正确设置硬件时钟有关。我发现这个命令将硬件时钟设置为当前系统时间:

sudo hwclock --systohc
Run Code Online (Sandbox Code Playgroud)

这是虚拟机的正确设置吗?另外,在哪里可以设置它以便它是持久的?在内核启动参数?我希望新配置的 VM 没有这个问题。

更新 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
Run Code Online (Sandbox Code Playgroud)

我看到此 VM 上的 vmwaretools 已过时。也许我用于管理 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
Run Code Online (Sandbox Code Playgroud)

更新 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
Run Code Online (Sandbox Code Playgroud)

但我仍然收到这些消息。事实上,现在datehwclock --show现在相隔几分钟,而以前它们非常紧密。

过去,旧的 SLES 9 VM 受益于 VMware 文章Timekeeping best practice for Linux guest 中的设置,但它指出 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
Run Code Online (Sandbox Code Playgroud)

Ban*_*jer 1

根据我读过的其他内容,听起来这些警告似乎是良性的,特别是如果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 时钟的分钟和秒。它不会更新小时或日期以避免时区问题。[1] 添加显示的消息是为了让用户和实施者意识到并非所有时间更新都会成功的问题。

假设系统时间是 17:56:23,而 CMOS 时钟已经是 18:03:45。仅更新分钟和秒会将硬件时钟设置为 18:56:23,这是一个错误的值。此问题的解决方案是等待几分钟,或安装修复该问题的内核补丁。通常,硬件时钟中的错误时间只有在重新启动后才会显示,或者可能在 APM 减慢系统速度后才会显示。