我有一台安装并启用了 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 中的一个错误/疏忽。