Linux时钟每周损失10分钟

我的一台linux服务器的时钟几乎每个星期都会丢失10分钟。 我更新时间,以保持正确,虽然它并没有真正打扰我,我想解决它。

我一直在寻找。 没有任何东西可以在crontab中负责,我在日志中找不到任何相关的消息。 有些人似乎用ntp来解决这种问题,但我不想使用不必要的组件。

Uname结果:Linux unis-monitor 2.6.32-5-686#1 SMP Mon Feb 25 01:04:36 UTC 2013 i686 GNU / Linux

猫消息:

cat messages Jul 14 06:25:06 unis-monitor rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="882" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'. Jul 15 06:25:05 unis-monitor rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="882" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'. 

猫系统日志

 cat syslog Jul 15 06:25:05 unis-monitor rsyslogd: [origin software="rsyslogd" swVersion="4.6.4" x-pid="882" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'. Jul 15 06:39:01 unis-monitor /USR/SBIN/CRON[15272]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete) Jul 15 07:09:01 unis-monitor /USR/SBIN/CRON[15465]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete) Jul 15 07:17:01 unis-monitor /USR/SBIN/CRON[15521]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Jul 15 07:39:01 unis-monitor /USR/SBIN/CRON[15662]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete) Jul 15 08:09:01 unis-monitor /USR/SBIN/CRON[15855]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete) Jul 15 08:17:01 unis-monitor /USR/SBIN/CRON[15911]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Jul 15 08:39:01 unis-monitor /USR/SBIN/CRON[16052]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete) Jul 15 09:09:01 unis-monitor /USR/SBIN/CRON[16273]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete) 

所以,如果你有什么线索看什么,或者我可以用什么来监控date变化?

这里有一些更多的信息:服务器是一个虚拟服务器托pipe在一个WIN 2012服务器上的HyperV。 不知道它是否改变了什么,看到其他服务器托pipe没有这个问题…

HyperV是疾病, NTPd是治愈的。

在哪里看,或者我可以用什么来监视这些date的变化?

您可以查询NTPd守护进程(通过ntpq客户端)以获取本地时钟和NTPd服务器参考时钟之间的差异。 但是这意味着实际运行NTPd,因此您不会单独监视您的更改,您正在监视正在运行的本地时钟和NTPd的同步效果。

我实际上并不知道你是否可以configurationNTPd来运行(并给你上面提到的指标),但实际上并没有调整系统时钟。 一个不同的,效率较低的方法是定期(cron)对一组参考NTPd服务器运行ntpdate -q并监视它的输出,这会给你的时钟和参考之间的区别,而不会实际触及本地时钟。 输出将是这样的:

 $ ntpdate -q $YOUR_TLD.pool.ntp.org [... list of queried servers ...] 17 Jul 12:14:11 ntpdate[42868]: adjust time server 109.168.106.59 offset -0.002517 sec 

你可以过滤最后一个数字并绘制它,以便了解你的时钟跳转的时间和时间。

 $ OFFSET=$( ntpdate -q $YOUR_TLD.pool.ntp.org | grep adjust | awk '{ print $10 }' ) $ echo $OFFSET 0.002970 

NTP不是一个不必要的组件。

这是保持系统时钟与primefaces时间源更新唯一的方法。

您应该安装NTP,将其configuration为使用本地池时间源,一切都会好起来的。

在我的testing中,我发现Hyper-V虚拟机时钟非常不可靠 ,时钟漂移通常超过500ppm。 这足以导致ntpd失败 。 我不得不在这些虚拟机中使用chrony来提供相当准确的挂钟; 在这种情况下默认为1000ppm,如有必要可以进一步调整 。

我不再认真考虑Hyper-V的计时是特别重要的任何应用程序。

如果您没有安装并启用正确的集成组件,则在Hyper-V中运行的linux虚拟机中的时钟漂移非常常见。 Hyper-V将调整运行的任何虚拟机的硬件时钟,但是一旦系统启动,linux默认情况下不会依赖硬件时钟。 集成组件给出关于实际时钟时间的内核提示并消除这个问题。

如果集成组件不适合您的发行版,那么正确的解决scheme是安装ntpd和同步到Hyper-V主机或本地时钟池。

“问题”是运行不支持Pluggable Time Source Infrastructure的Linux版本。 有几个发行版支持它,但通常只在64位操作系统中,而不是在32位操作系统中。

正如其他人所提到的,Integration Services允许时钟同步,但只有在支持PTSI的情况下。 大多数支持PTSI的发行版都已经有了HV源。 查看是否有可用于发行版的adjtimex端口/程序包。

使用NTP是一个有效的select,如果你不能得到PTSI正常工作。 还有一些黑客包括tickadj命令,以及更改内核启动variables – 这些都应该避免。