我有一个 CentOS 4.6 盒子,以前是物理设备,现在变成了虚拟机,有一个 cronjob 每天 23:00 重启服务器。这样就好了。
但是,由于转移到虚拟(在 Hyper-V 主机上),系统时间或时钟都不会保持不变:
A)彼此同步 B)显示正确时间
我已经为此苦思冥想了一段时间。手动设置时间会导致时间很快出现疯狂的漂移(我说的是短短几秒内就出现了几个小时);使用 NTPD 也无济于事。它似乎同步了,但仍然显示错误的时间。
我尝试过两种方法:通过 Hyper-V 在虚拟机上设置“同步时间”。但都无济于事。
问题在于,一旦系统认为时间是 23:00,就会重启。这种情况一天发生多次。依赖此服务器的用户最终会受到影响。
任何帮助均感激不尽。
答案1
作为一个非常丑陋的 bandaind,你可以设置ntpdate
运行每分钟把类似的东西放在下面/etc/cron.d
:
* * * * * root ntpdate
为了让它ntpdate
发挥作用,请务必停止/禁用该ntpd
服务。然后,重新启动crond
这是一个丑陋的黑客,但正如评论中所说,Hyper-V 并不正式支持 CentOS 4.x,所以这是我能想到的最好的方法。
答案2
我更愿意仍然使用 NTP 而不是 ntpdate 命令。ntpd 将维护有关其漂移和偏移的统计数据。
因此回顾一下这篇文章避免虚拟机时钟漂移已经提到:
从 中删除任何-x
选项/etc/sysconfig/ntpd
。旋转需要很长时间,而且您需要修复疯狂的偏移。
添加tinker panic 0
到顶部/etc/ntp.conf
。再次,疯狂的偏移。在这种情况下,ntpd 在运行时接受大跳跃实际上是可取的。
然后用或其他监控service ntpd restart
检查偏移量 。ntpq -p
您说您尝试过启用和禁用 Hyper-V 时间同步,请记录您目前设置了哪一个。
Get-VM -Name oldLinuxBox | Get-VMIntegrationService -Name "Time Synchronization"