如何在 Parallels 中恢复快照后防止相对时间偏移?

如何在 Parallels 中恢复快照后防止相对时间偏移?

我正在使用在 Parallels 中运行的 Ubuntu 测试/开发系统上的基于 Web 的应用程序。在特定日期和时间(取自系统时间),会发生某些事件,并且数据库中的内容会发生变化。(例如,如果密码在一定时间内未更改,则用户帐户会被锁定,或者如果截止日期已过,则对象的状态会发生变化等。)

为了能够测试特定场景,我使用 Parallels 中的快照来存储系统在几个关键时间点的状态。几个月后,我可能需要返回到特定时间点,以当时的状态测试特定场景。

我的问题是,恢复快照后,系统日期如我所愿(即等于拍摄快照时的日期时间)。

但几秒到几分钟后,系统时间会更改为实际时间和预期(快照)时间之间的某个时间点。我的印象是它被设置为相对过去的时间。例如,如果我在 2018-02-01(实际时间)拍摄快照,Ubuntu 客户端的系统日期为 2018-01-01(客户端时间),并且我在 2018-03-01(实际时间)恢复快照,那么几分钟后,Ubuntu 客户端最终将被设置为 2018-02-01(客户端时间)。

我目前所做的:

  • 关闭 Parallels 时间同步(根据https://kb.parallels.com/113271
  • 卸载ntpntpdate
  • 已禁用Automatic Date&TimeAutomatic 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 用户论坛,我能够解决这个问题。

  1. 关闭虚拟机
  2. 找到 VM 包 > 右键单击​​ > 显示包内容 >config.pvs在文本编辑器中打开文件
  3. 找到 TimeSync 键并进行如下编辑:

<TimeSync SyncInterval_patch="1" dyn_lists="">
<Enabled>0</Enabled>
<SyncInterval>60</SyncInterval>
<KeepTimeDiff>0</KeepTimeDiff>
<SyncHostToGuest>0</SyncHostToGuest>
<SyncTimezoneDisabled>1</SyncTimezoneDisabled>
</TimeSync>

  1. 保存更改并关闭文件。
  2. 再次启动虚拟机。之后的所有快照将不再存在时间同步问题。

如果您需要使其与现有快照一起工作,请找到 VM 包中的 Snapshots 文件夹(文件所在config.pvs的位置)。您可以在那里找到快照文件。要找到正确的快照,您可以使用创建日期和 PNG 文件中的屏幕截图作为提示。该{id}.pvc文件包含快照特定的文件副本config.pvs。进行与上述步骤 3 相同的调整。

现在也应该禁用该快照的时间移位。

感谢 Parallels 支持部门的 Dmitry 在 Parallels 支持论坛中提供的答案。

相关内容