linux系统时间暂时跳跃


8

我在某些(硬件)服务器上看到了一个奇怪的系统时间更改行为:在/ var / logs / syslog中,每条日志消息之前的日期时间有时会更改为随机的,而在下一条消息中会恢复为正常,如下所示:

2018年2月22日09:09:30 ...
2018年2月22日09:09:32 ...
26年1月13日15:37:42 ...
2018年2月22日09:09:33 ...
2018年2月22日09:09:34 ...

如示例中所示,日期时间的突然变化可能长达数百年。

我可以确认带有奇怪时间戳记的日志消息不是来自任何特定的过程,而是可以随机发生的。

两次异常时间更改之间的持续时间在几分钟到几小时之间不等(但是,我怀疑异常时间更改可能会更频繁地发生,但是由于系统日志不是每秒写入一次,因此许多未在系统日志中显示出来)。

另外,由于它发生在多个服务器上,因此我认为这不是硬件问题。

有关服务器的更多信息:它们是带有一个控制器和几个计算节点的开放式堆栈安装。每个服务器都有正在运行的ntp服务。控制器配置为从其自己的硬件时钟中抽出时间,并且计算节点服务器从控制器同步时间。请注意,每个服务器都会以自己的速度进行异常的时间更改-看起来“错误的时间”不是通过ntp从控制器同步的。

我怀疑计算节点上的来宾系统(虚拟机)可能会影响其主机系统时间。但这不能解释为什么控制器在不运行任何虚拟机时仍存在相同的问题。

我需要一种检测方法:谁更改了系统时间,它是如何发生的?


2
您可以显示hwclock循环的输出吗?如:while true; do hwclock; sleep 5; done
shodanshok

每个服务器都在运行ntp服务:作为客户端还是作为服务器?通过systemd还是通过“旧” ntp服务在systemd外部?对我来说,这看起来像一个提供ntp时间的问题。我们有一个问题,我们确实在同步时间之前(在具有网络连接性之前,会导致时间戳跳)写入日志文件。systemd有一个目标可能要依赖systemd [1]:时间已更改systemd [1]:已达到目标系统时间同步。
丹尼斯·诺尔特

似乎某些日期获取正作为cron运行,并且没有很好的时间检查。找到它,将其删除并替换为对大时间漂移不响应的ntpd。
danblack

我们有了新的发现,发现问题可以缩小为CRON消息在syslog中被延迟。所以我提出了另一个问题。请在那里看看。
杨朝晖

3
也许这是您的错误:CRON中无法解释的时间跳变已在rsyslog-7.4.4-1ubuntu2.7中修复

Answers:


1

该脚本将告诉您何时发生时间偏移以及流程树中的差异,如果这是由更改系统时间的流程引起的,则应该可以帮助您识别这一点。它将打印到终端,并登录到当前工作目录中的timedrift.log。

#!/bin/bash

oldTime="$(date +%s)"
oldPsOutput="$(ps faux)"
while true; do
  sleep 1;
  currentTime="$(date +%s)"
  oldTimeplusfive="$((($oldTime+5)))"
  currentPsOutput="$(ps faux)"
  if [[ "$currentTime" -lt "$oldTime" ||  "$currentTime" -gt "$oldTimeplusfive"  ]]
  then
    (
        echo -e '\n\n======================='
        echo "currentTime=$currentTime oldTime=$oldTime oldTimeplusfive=$oldTimeplusfive"
        echo '-----------------------'
        echo "$oldPsOutput"
        echo '::::::::::::::::::::::::::'
        echo "$currentPsOutput"
    ) | tee -a timedrift.log
  fi
  oldPsOutput=$currentPsOutput
  oldTime=$currentTime
done

归功于Stone无法解释的时间跳动中的原始脚本,Stone在评论中提到了CRON错误。

您还能像使用rsyslog一样发表评论吗?如果使用的是什么版本?您是否在rsyslog领域之外(例如apache日志等)看到它?这个错误看起来很奇怪,很高兴对其进行确认或排除。


0

实际上,这与@Stone的注释重复。只是向所有人清楚,这确实有一个答案。

简而言之,我正在使用的rsyslog版本中存在一个错误。这会将接收到的系统日志消息延迟任意时间长度。错误报告在这里。 升级rsyslog可以解决此问题。这不是内核或CRON的故障。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.