为什么主机从睡眠状态唤醒后,我的 Debian Hyper-V 客户机不更新时间?

为什么主机从睡眠状态唤醒后,我的 Debian Hyper-V 客户机不更新时间?

我有一台安装并启用了 Hyper-V 的 Windows 10 物理(笔记本电脑)主机,但我遇到了一个问题,对于一个相当普通的 Debian 9 客户机安装,主机进入睡眠状态一段时间后时钟不会更新,然后再次唤醒(我假设客户机与主机一起暂停)。

据我了解,这个问题应该可以通过 Hyper-V 集成服务轻松处理,它在虚拟机设置(启用所有集成服务)和客户机(hv_*加载所有模块)中均启用,并且其中一个服务同步时间并确保其保持最新。

那么,为什么在我的情况下它不起作用呢?我没有安装 NTP,我也不想安装,部分是出于原则考虑(专门用于解决 Hyper-V 的问题),部分是因为客户机必须在没有 Internet 连接和远程主机服务的情况下工作。我的主机时区明确设置为 UTC(我经常带着笔记本电脑漫游,既不需要也不想将客户机与特定时区静态关联),而是TZ根据需要使用变量。

我读过微软和 Altaro 的很多文章,这些文章似乎很有见地,但却没能让我明白这一点。我还读过 Stack Exchange 网站上的许多答案,其中一半建议使用 NTP,另一半则大多是关于其他内容,或者根本没有提供所需的建议。

我理解当主机从睡眠状态恢复时,可能有些信号不会在客户机上触发(例如,如果您通过 ACPI 让客户机进入睡眠状态),但这不应该是一个已经解决的问题吗?

我可以在哪里进行哪些故障排除,以确保我可以可靠地关闭笔记本电脑的盖子(使其进入睡眠状态)并期望带着最新的时间戳回到我的客人身边?

答案1

检查一下:https://github.com/clearlinux/distribution/issues/39

一个可行的解决方法是禁用所有其他时间服务并使用 chrony,而不是仅配置 LIS hyperv 时间源 ptp0。

确保 LIS 时间源可通过以下方式获取:

ls /sys/class/ptp
ptp0

cat /sys/class/ptp/ptp0/clock_name 
hyperv

现在为您的发行版安装 chrony 并检查配置位置,然后创建与您的 ptp?设备位置相对应的配置。

/etc/chrony.conf:

refclock PHC /dev/ptp0 trust
makestep 1 -1

这将允许 chrony 通过 hyperv ptp0 源通过一个大步骤来纠正系统时间。

可以通过以下方式将轮询时间降低到 4 秒(2 的幂):

refclock PHC /dev/ptp0 trust poll 2

PS:这似乎是 hyperv/LIS 中的一个错误/疏忽。

相关内容