我有一个项目希望强制一组私有 NTP 服务器的时间,以演示 NTP(和我们的软件)如何对各种时间变化和差异、网络延迟等做出反应。
通常情况下,我们会设置一个虚拟机虚拟网络来演示我们的软件,但我似乎找不到允许 NTP 运行的网络独立在每个虚拟机中。为此,我们需要一个软件时钟。
到目前为止,我已经研究过:
Docker- 将其时钟与主机的硬件时钟绑定,权限是一个问题,但主要问题是,如果时钟发生变化,则该主机上所有虚拟机中运行的所有时钟都会发生变化。
虚拟盒-这个答案这表明即使有客人加入,由于缺乏高分辨率时钟,这也会使得这成为不可能。
是否有任何软件可以为 NTP 虚拟化硬件时钟,或者在同一台机器上同时运行独立时钟?
答案1
不清楚你是否感兴趣
ntp 在某些环境下的行为方式。
您的软件如何随着时间变化而运行,并且您已决定引入这些时间变化的最佳方式是摆弄 ntp。
如果您只是对前者感兴趣,请查看 ntpdsim。它是 ntp 参考实现的一部分:
ntpdsim 程序用于模拟和研究 NTP 守护进程的行为,该守护进程从许多不同的模拟时间源(服务器)获取时间。每个模拟服务器都可以配置为具有不同的时间偏移、频率偏移、传播延迟、处理延迟、网络抖动和振荡器漂移。
如果您对后者感兴趣,请使用 ntpdsim 查看您的 ntp 服务器将如何响应更改。然后获取此信息并使用 cronjob 或类似程序根据您从 ntpdsim 运行中了解到的信息修改 vms 上的时钟...
答案2
Red Hat 的文档表明至少有一个 libvirt 虚拟机管理程序支持可配置时钟源(或至少自定义偏移量):https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Libvirt_Managed_Timers.html
KVM 是 libvirt 虚拟机管理程序之一,至少有一个人描述偶然不同步:https://unix.stackexchange.com/q/83934/63149
(抱歉格式不对——我在用手机,原本打算直接把这个作为评论发布!)
答案3
正如 RJHunter 所说,完全可以让 NTP 在多个 KVM 实例上运行,但是它可能不是非常准确。
此链接详尽阐述关于 KVM。