我正在使用在 Parallels 中运行的 Ubuntu 测试/开发系统上的基于 Web 的应用程序。在特定日期和时间(取自系统时间),会发生某些事件,并且数据库中的内容会发生变化。(例如,如果密码在一定时间内未更改,则用户帐户会被锁定,或者如果截止日期已过,则对象的状态会发生变化等。)
为了能够测试特定场景,我使用 Parallels 中的快照来存储系统在几个关键时间点的状态。几个月后,我可能需要返回到特定时间点,以当时的状态测试特定场景。
我的问题是,恢复快照后,系统日期如我所愿(即等于拍摄快照时的日期时间)。
但几秒到几分钟后,系统时间会更改为实际时间和预期(快照)时间之间的某个时间点。我的印象是它被设置为相对过去的时间。例如,如果我在 2018-02-01(实际时间)拍摄快照,Ubuntu 客户端的系统日期为 2018-01-01(客户端时间),并且我在 2018-03-01(实际时间)恢复快照,那么几分钟后,Ubuntu 客户端最终将被设置为 2018-02-01(客户端时间)。
我目前所做的:
- 关闭 Parallels 时间同步(根据https://kb.parallels.com/113271)
- 卸载
ntp
并ntpdate
- 已禁用
Automatic Date&Time
并Automatic Timezone
在 Ubuntu 桌面设置中
问题似乎与有关hwclock
。例如,我已于昨天 2018-05-25(实时)恢复了 2018-01-25(访客时间)的快照。我执行了(恢复快照后立即):
date ; \
hwclock --show ; \
date -s 2018-01-26 ; \
hwclock --systohc ; \
hwclock --set --date 2018-01-26 ; \
hwclock --show ;
输出结果如下:
Thu Jan 25 18:17:49 CET 2018
2018-03-09 01:01:27.249216+0100
Fri Jan 26 00:00:00 CET 2018
2018-03-09 01:01:27.775701+0100
如果我等待一段时间,系统时间最终会更改为 hwclock 时间 - 我还没有找到原因。我也不明白为什么设置时间的尝试hwclock
不起作用(没有显示错误,但新时间被忽略了...)
最后,我也检查了syslog
,但没有关于更改日期的提示。它只是打印旧日期的条目,下一个条目是新日期,没有指示是什么导致了日期更改。
我错过了什么?
附言
这是输出systemctl | grep time
rtkit-daemon.service loaded active running RealtimeKit Scheduling Policy Service
systemd-timedated.service loaded active running Time & Date Service
timers.target loaded active active Timers
anacron.timer loaded active running Trigger anacron every hour
apt-daily-upgrade.timer loaded active waiting Daily apt upgrade and clean activities
apt-daily.timer loaded active waiting Daily apt download activities
motd-news.timer loaded active elapsed Message of the Day
snapd.refresh.timer loaded active waiting Timer to automatically refresh installed snaps
systemd-tmpfiles-clean.timer loaded active waiting Daily Cleanup of Temporary Directories
答案1
感谢Parallels 用户论坛,我能够解决这个问题。
- 关闭虚拟机
- 找到 VM 包 > 右键单击 > 显示包内容 >
config.pvs
在文本编辑器中打开文件 - 找到 TimeSync 键并进行如下编辑:
<TimeSync SyncInterval_patch="1" dyn_lists="">
<Enabled>0</Enabled>
<SyncInterval>60</SyncInterval>
<KeepTimeDiff>0</KeepTimeDiff>
<SyncHostToGuest>0</SyncHostToGuest>
<SyncTimezoneDisabled>1</SyncTimezoneDisabled>
</TimeSync>
- 保存更改并关闭文件。
- 再次启动虚拟机。之后的所有快照将不再存在时间同步问题。
如果您需要使其与现有快照一起工作,请找到 VM 包中的 Snapshots 文件夹(文件所在config.pvs
的位置)。您可以在那里找到快照文件。要找到正确的快照,您可以使用创建日期和 PNG 文件中的屏幕截图作为提示。该{id}.pvc
文件包含快照特定的文件副本config.pvs
。进行与上述步骤 3 相同的调整。
现在也应该禁用该快照的时间移位。
感谢 Parallels 支持部门的 Dmitry 在 Parallels 支持论坛中提供的答案。