我暂停了虚拟机上的虚拟机并断开了其互联网连接,而没有重新启动系统。当我从睡眠模式启动系统而不重新启动时,系统时钟从中断处继续,无法显示正确的时间?遇到这种情况我该怎么办?
- 我一小时的时间数据前我暂停了我的虚拟机(对于我的主机来说也是实时的)
% 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 分钟的暂停间隔,因为主机的时钟未通过hwclock
UDP 端口 123 进行访问。
如果我们想知道恢复后的时间,这是虚拟机管理程序+来宾配置需要修复的配置细节。
ATM,听起来客人在恢复时可靠地知道时间的唯一方法是坚持连接互联网,并让恢复脚本重新启动 chronyd,鼓励逐步更新。 (顺便说一句,iburst
配置中的初始突发非常匹配。)