最好的方式来说“同步所有的系统时钟到这台服务器,何时和只有当我这样说?”混合安装的Windows + Linux服务器

标题很多解释它。 比方说,有100台服务器,各种版本的Windows和Linux,一台Windows服务器就是“主时钟”。 我看过这个问题:

我如何在Linux和Windows之间同步时钟?

这暗示ntp可以做我想要的,如果我在客户端(?)上运行“ntpd -q”。 如果我安装ntp,我也需要保证它只会同步我强制的时间。 更好的是,如果我有一个日志,告诉我每次执行同步。

我正在做基准testing,我需要能够这样说:“时钟在主时间09:42:01在所有的基准testing系统上同步,然后启动基准testing并允许运行6个小时在这个时间间隔内,系统时钟都没有改变。“

我知道随后会出现时钟漂移,但现在我们正在做这些事情,而且我正在用手动过程来做。 我宁愿至less自动化一次性同步。

您是否正在寻找在Linux和Windows上启动/停止NTP的特定命令? 这些在不同的Linux发行版上是不同的。 它会像“/etc/init.d/ntpd stop”一样,在别人不同,我不确定在Windows上。

有两种方法可以做到这一点,一个警告。

方法1:正常运行NTP,但停止基准。

方法2:在运行基准testing之前,不要运行NTP,而是在“一次性”模式下运行NTP。 (在Linux上,这将是Unix / Linux上的“ntpdate SERVERNAME”或[我认为]在Windows上的“ntp -q”)

方法1有一些优点,那就是在你没有运行基准的时候,时钟是正确的。 时钟也将更准确地设置为基准。 也就是说,即使在NTP数据包之间,NTP也能非常准确地保持时钟。 networking上的NTP数据包只是微调。 数据包之间的NTP使用过去的经验来推动系统时钟更快或更慢。 缺点是当你再次启动NTP时,如果时钟太远,它将会拒绝启动。 这不是一个错误,它是这样做的目的是防止同步到一个坏的服务器。 为防止出现这种情况,请在重新启动NTP之前执行“ntpdate”或“ntp -q”。

方法2具有实施起来更简单的优点。 但是,时钟不会很准确。 “one shot”模式不会像运行NTP一样准确设置时钟。 这主要是为了在启动NTP之前修复一个遥远的时钟(参见上文)。 但是,如果你的基准testing只需要精确到1/10秒,那么你就可以。

需要注意的是,如果closuresNTP,基准可能不会成为您认为基准testing的基准。 计算机的时钟会漂移,而不是NTP不断运行。 没关系,如果你是基准计算机有多less漂移,但没有其他的。

(而且我应该注意到……这个漂移不仅仅是品牌到品牌,而是在特定的机器之间。

HTH!

如果你只是使用Linux,我会使用mcollective来并行执行ntpdate命令。 我的ntpd没有-q选项。

我不熟悉Windows的类似工具。

要清楚的是,当连续运行ntpd时,你更可能获得一致的时间,因为它也会使时钟漂移停止。 不同的电脑有不同的时钟速度,只是在开始时同步时钟并不能保证它们在接下来的六个小时内保持同步。 ntpd是专门devise来纠正这一点。

ntpd被devise为保持恒定的同步,因此“d”。 ntpdate会让你一次性同步。

对于Windows,我想你会做这样的事情。(我没有testing,如果这是正确的)

 w32tm /config /manualpeerlist:"valid.ntp.server,0x9" w32tm /resync /rediscover w32tm /config /manualpeerlist:"bogus.invalid.server,0x9" 

但是,为什么不让设备始终保持同步呢?

手动同步可能是Windows的唯一选项,无需额外的软件。 看到这篇文章:

http://technet.microsoft.com/en-us/library/cc773263%28WS.10%29.aspx

对于替代品来说,

http://www.endruntechnologies.com/ntp-client.htm

请记住,做周期性/手动同步并不比连续性更好。 由于时钟漂移导致logging时间的变化持续时间长而没有同步,因此不会给您最高级别的准确性。 时钟不一定以一致的速度漂移; 它可以根据您无法测量的温度和其他波动而改变。

你在寻找什么级别的准确性? +/- 1秒,+/- 0.0001秒,…?