我有ntpd在我的服务器上运行。 这是所有的默认设置,除了我评论说它是一个服务器到其他机器的能力:
# restrict -4 default kod notrap nomodify nopeer noquery # restrict -6 default kod notrap nomodify nopeer noquery restrict default ignore
如果我运行ntpdate -q ntp.ubuntu.com
,我被告知我的机器时钟已经closures了7秒钟。
这是怎么回事? 我怎样才能诊断发生了什么,有没有我可以打开的日志?
更多信息#1
# ntpq -np remote refid st t when poll reach delay offset jitter ============================================================================== 91.189.94.4 193.79.237.14 2 u 30 64 7 108.518 -0.136 0.361
更多信息#2
这就是我问这个问题时的样子:
# ntpdate -q ntp.ubuntu.com server 91.189.94.4, stratum 2, offset 7.191308, delay 0.13310 10 Jan 20:38:09 ntpdate[31055]: step time server 91.189.94.4 offset 7.191308 sec
现在看起来是什么样子,在重启ntpd几次后(我假设这是修复它):
# ntpdate -q ntp.ubuntu.com server 91.189.94.4, stratum 2, offset 0.000112, delay 0.13164 10 Jan 20:47:03 ntpdate[31419]: adjust time server 91.189.94.4 offset 0.000112 sec
更多信息#3
我卸载ntp并安装openntpd并运行/usr/sbin/ntpd -d
,我看到这样的输出:
reply from 64.73.32.134: offset 6.715003 delay 0.041152, next query 30s reply from 208.53.158.34: offset 6.700224 delay 0.036263, next query 31s adjusting local clock by 6.734120s reply from 72.18.205.156: offset 6.708575 delay 0.035885, next query 30s reply from 64.73.32.134: offset 6.701463 delay 0.044199, next query 33s
这对我来说很清楚地表明,我无法在我的服务器上设置时间(尽pipe使用普通的ntp,它似乎有时会更新…)。
更多信息#4
我的VPS提供商说:
最新的内核不应该locking你的系统到我们dom0的时钟,为了安全起见,你可以在你的sysctl.conf中设置xen.independent_wallclock = 1。
我想这还不能解决需要CPU可用的VPS问题,以便进行正确的时序计算。
你可以在ntpd中启用日志logging,把它添加到ntp.conf中:
logfile /var/log/ntpd.log
来源: ntp手册
如果closuresntpd,你可以通过命令行更新时钟吗? 如果您运行ntpdate命令并收到如下错误:
# ntpdate ntp.ubuntu.com 10 Jan 23:47:57 ntpdate[26284]: Can't adjust the time of day: Operation not permitted
这意味着你可能在VPS上,在这种情况下你不能修改系统时钟 – 这只能在主机上完成。
好的,在问这个问题的时候,我已经用默认的供应商(Ubuntu 10.0.4)configuration重新安装了ntp,让它运行了几天。 在撰写本文时, ntpdate -q ntp.ubuntu.com
显示我的时间精确到0.000216秒。 所以,我遇到的问题一定是我的定制configuration(我试图使外部主机无法查询我的服务器,我已经在使用防火墙进行操作,所以我并不担心)。 这里是整个Ubuntu 10.0.4 ntp.conf,删除了注释:
driftfile /var/lib/ntp/ntp.drift statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable server ntp.ubuntu.com restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 restrict ::1
我欢迎有关如何改进此configuration的反馈意见。
我还和我的VPS提供商签了一张票,要求他们提供关于最佳做法的详细build议。 我指出他们到这个线程,和一些其他文件指出,可能是CPU分配会导致计时问题。 这是他们所说的:
最新的内核不应该locking你的系统到我们dom0的时钟,为了安全起见,你可以在你的sysctl.conf中设置xen.independent_wallclock = 1。 这将确保服务器实例不跟踪主机服务器上的时钟。
和:
我想你可能会误解这个问题在虚拟环境中影响NTP客户端的确切程度。 以我在Xen主机上的虚拟化系统(例如我们在Rackspace Cloud上的设置)的经验来看,即使在高负载的系统上,由于没有专用的系统时钟来处理中断而遗留的不准确性也只有几分之一秒。 这种轻微的不准确性很容易通过NTP来pipe理,即使它只设置为每天更新一次服务器(或者甚至不如此频繁)。
你的一个评论说你在一个虚拟主机上运行。 在这种情况下,你可能不会有太多的成功,因为你的虚拟主机的时间感将取决于它所运行的真实主机以及虚拟主机的总体工作量。
根据所使用的虚拟化,虚拟主机在给定的时间内可能无法获得稳定的中断份额。 这会使时钟比实际发生的更快或更慢。 由于ntp试图测量变化,假设你的时钟速度比世界其他地方速度更快或者更慢,所以这种加速和减速将会使ntp适合,最终可能会放弃,结果ntp -np
显示ntp认为不合适的时间服务器。
如果真是这样的话,最好的办法可能就是每隔六个小时一个蛮力的rdate -s $server
,用鼻子来拉动时钟,这样它就不会过度失调。 但细粒度的精度可能遥不可及。
以前发现的东西,当我用ntpd而不是openntpd时:
你需要允许访问本地主机ntpd正确启动,实际上做的东西
restrict 127.0.0.1 restrict ::1
虽然你可以使用服务器规则的主机名,但是打开这些服务器端的通道就意味着使用需要IP地址的restrict
,所以我最终不得不使用IP地址。
您没有提到使用restrict
来将访问权限备份到您的服务器。 这是一个问题。 尝试下面的块:
# ntp.xs4all.nl server 194.109.22.18 restrict 194.109.22.18
你需要多个对等机或服务器ntpd,因为它试图使用多数规则投票来处理一个坏的演员。 所以至less4,当你输了一个,最好是5时仍然能够有一个多数。
要locking默认访问,我可以使用:
restrict default notrust nomodify
以便仍然能够查询,但是当ntpd 4.2改变了notrust
的含义时,我最终使用了restrict default ignore
。 叹
如果你不给别人提供时间服务,那么你可能不需要普通ntpd的全部function,你应该考虑openntpd
。 由OpenBSD组织编写,这是一个更简单的实现,使用权限分离和更简单的configuration文件。 据称,它不会提供ntpd的高精度时间,但对于普通的服务器或工作站来说,这很容易。
如果你正在vmware上运行vhost,请检查以下文章..它会帮助你http://www.vmware.com/files/pdf/Timekeeping-In-VirtualMachines.pdf
海..
看看这个参考,看看它是否可以帮助解决您的问题:
http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:Ch24:_The_NTP_Server
你可能想要发布你的ntpd.conf文件的内容,debugging命令的输出如ntpq -p
并检查你的date/时间?
并validation这一点,运行ntpdate和启动ntpd,是时间保持同步?
最好的祝福
我发现我的系统closures了,并且困惑了为什么硬件时钟在干净closures时与系统时钟不同步。 似乎在sysconfig中有一个NTP设置需要编辑来实现这一点。
在/etc/sysconfig/ntpd
:
# Set to 'yes' to sync hw clock after successful ntpdate SYNC_HWCLOCK=no
我确定yes
。 当然,首先确认你有一个可靠的NTP服务器,并且你的系统时钟是可靠的。
我知道就是这样 – 我的歪斜是47秒,我的硬件时钟也是47秒。 答对了! 我的第一个线索是在日志中看到的Kerberos故障。 如果时钟偏差过大,Kerberos和许多NAS将无法正常工作。
祝你今天愉快!