坏方法:互联网客户端

坏方法:互联网客户端

我暂停了虚拟机上的虚拟机并断开了其互联网连接,而没有重新启动系统。当我从睡眠模式启动系统而不重新启动时,系统时钟从中断处继续,无法显示正确的时间?遇到这种情况我该怎么办?

  • 我一小时的时间数据我暂停了我的虚拟机(对于我的主机来说也是实时的)

% chronyc sourcestats
---------------------
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
131.153.171.22              6   4   139 -46792.738  67288.219   -326ms   890ms
108.175.15.67               6   3   140 -44764.793  61909.766   -188ms   961ms
gopher.fart.website         6   3   140 -49022.652  84747.266   -217ms  1224ms
edge-iad.txryan.com         6   3   139 -45642.164  67798.562   -230ms  1032ms


% chronyc tracking
------------------
Reference ID    : 8399AB16 (131.153.171.22)
Stratum         : 3
Ref time (UTC)  : Mon Dec 25 09:55:11 2023
System time     : 0.000000000 seconds slow of NTP time
Last offset     : -5.681410313 seconds
RMS offset      : 1.796643019 seconds
Frequency       : 5.307 ppm fast
Residual freq   : -46792.738 ppm
Skew            : 8.997 ppm
Root delay      : 0.147369087 seconds
Root dispersion : 0.769112766 seconds
Update interval : 7.0 seconds
Leap status     : Normal

% date
-----------------
Mon Dec 25 12:55:18 PM +03 2023

% hwclock
-----------------
2023-12-25 12:55:13.078474+03:00
  • 断开互联网连接后,我等待了一段时间,然后当我打开虚拟机时,时钟没有显示正确的时间。另外,当我得到这个输出时;我的真实主人约会(2023 年 12 月 25 日星期一下午 1:28:58)

(总之,当我断开网络连接并再次启动系统时,它无法与我的主机时间同步启动。)

% chronyc sourcestats
---------------------
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
131.153.171.22              6   4   139 -46792.738  67288.219  -5592ms   890ms
108.175.15.67               6   3   140 -44764.793  61909.766  -5226ms   961ms
gopher.fart.website         6   3   140 -49022.652  84747.266  -5734ms  1224ms
edge-iad.txryan.com         6   3   139 -45642.164  67798.562  -5367ms  1032ms

% chronyc tracking
------------------
Reference ID    : 8399AB16 (131.153.171.22)
Stratum         : 3
Ref time (UTC)  : Mon Dec 25 09:55:11 2023
System time     : 0.000000000 seconds fast of NTP time
Last offset     : -5.681410313 seconds
RMS offset      : 1.796643019 seconds
Frequency       : 5.307 ppm fast
Residual freq   : -46792.738 ppm
Skew            : 8.997 ppm
Root delay      : 0.147369087 seconds
Root dispersion : 6.036798477 seconds
Update interval : 7.0 seconds
Leap status     : Normal

% date
-----------------
Mon Dec 25 12:57:11 PM +03 2023

% hwclock
-----------------
2023-12-25 12:57:05.629692+03:00
  • 连接互联网后

Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
131.153.171.22              6   4   343   -5616574     341926   -1958s   15.7s
108.175.15.67               6   4   343   -5631052     251508   -1960s   12.1s
gopher.fart.website         6   4   343   -5618134     301975   -1963s   14.2s
edge-iad.txryan.com         6   4   343   -5635317     275298   -1964s   13.2s

Reference ID    : 8399AB16 (131.153.171.22)
Stratum         : 3
Ref time (UTC)  : Mon Dec 25 09:55:11 2023
System time     : 0.000000001 seconds fast of NTP time
Last offset     : -5.681410313 seconds
RMS offset      : 1.796643019 seconds
Frequency       : 5.307 ppm fast
Residual freq   : -46792.738 ppm
Skew            : 8.997 ppm
Root delay      : 0.147369087 seconds
Root dispersion : 16.738962173 seconds
Update interval : 7.0 seconds
Leap status     : Normal

Mon Dec 25 01:01:00 PM +03 2023
2023-12-25 13:01:00.293480+03:00

另外,我的系统时间多久通过 Chrony 刷新一次?系统何时开启或只要连接到互联网?我该如何设置这个?

答案1

tl;dr:您的 VM 来宾时钟不适合计时,这让您感到悲伤。停止使用它。

来宾操作系统有两种保持时间的方法:

  • 互联网
  • 主机操作系统

坏方法:互联网客户端

您的虚拟机访客可以是 server1b.meinberg.de 和其他互联网服务器的 NTP 客户端。不要这样做。

虚拟机会遭受长时间的暂停,这使得每次来宾恢复时,外部服务器似乎都会快速时间扭曲到未来。你在恢复时进行“步进”校正,而不是“运行 10% 快”的偏差校正。通常,启动脚本将使用类似 的命令来完成此操作 hwclock -s --utc,或者可能通过要求 ntpdate从某个 NTP 服务器步进时钟来完成此操作。

慢性文档第3.4节 指出,makestep 1 -1对于经常被暂停几分钟或几小时的不寻常情况的客户来说,这是必要的。

好方法:主机操作系统时钟

当来宾想要知道时间时,它应该询问其运行的主机的时间。

主机操作系统大概有一个不错的时钟,并且有时可以在网络可用时从互联网 NTP 服务器进行{偏移,频率}估计。

虚拟机建议那是

重要的是不要使用本地时钟作为时间源,通常称为无纪律本地时钟。

您没有告诉我们您的虚拟机管理程序,因此不清楚我们需要调整哪些旋钮。您也许能够从本杰明·布莱恩的 经历


编辑

Chrony(或其他 NTP 守护进程)正在尝试测量{偏移,频率}。例如,我们可能会慢 4 秒,但运行速度快 1%。进行了一些观察后,我们可以估计并纠正它们。

现在假设客人暂停了半个小时。我们可能能够报告“我们慢了 1804 秒,但仍然快了 1%”。但总偏移量会干扰任何频率误差的测量。守护进程真正需要知道的是,从 t_0 到 t_1,我们听到了几个与“落后 4 秒,快 1%”一致的 NTP 响应,然后直到 t_2 我们已经死了(暂停),然后 t_3 之后的观察是与“落后1804秒,快1%”一致。此时我们肯定需要步进 1804 秒。

OP 非常清楚地表明 chronyd 不是系统日志记录,它知道“挂起”和“恢复”事件。因此,当地无规律的时钟不适合用作时间基准。

另外,如果我们监听一小时的互联网 NTP 响应以进行同步,那么我们会暂停半小时,断开与互联网的连接,并期望恢复的访客知道现在是什么时间,该信息基本上已经来主人的时钟。 OP 没有提供任何证据表明来宾可以区分 29 分钟或 31 分钟的暂停间隔,因为主机的时钟未通过hwclockUDP 端口 123 进行访问。

如果我们想知道恢复后的时间,这是虚拟机管理程序+来宾配置需要修复的配置细节。

ATM,听起来客人在恢复时可靠地知道时间的唯一方法是坚持连接互联网,并让恢复脚本重新启动 chronyd,鼓励逐步更新。 (顺便说一句,iburst配置中的初始突发非常匹配。)

相关内容