我有一台专用的 Web 服务器,它运行的是带有 xen 虚拟化的 centos,该服务器的 vm 上安装了 centos。我无法访问父服务器,我只能操作 vm,我对 vm 有完全的控制权。我在操作 vm 上的日期/时间时遇到了问题。现在的主要问题是,我的服务器上的时间比“正常”时间运行得快一点。我估计每 24 小时就会快一分钟。这可不好,因为我有需要在特定时间运行的脚本,而它们的运行时间比应有的时间晚了几分钟。到目前为止,我发现的唯一“修复”方法是重新启动服务器,但我不想每晚都重新启动服务器来修复时间!
以下是我尝试过的:
1)手动设置时间:
root@host [~]# date
Mon May 13 06:52:22 WAKT 2013
root@host [~]# date 051306492013
Mon May 13 06:49:00 WAKT 2013
root@host [~]# date
Mon May 13 06:52:54 WAKT 2013
执行 set 命令后,日期和时间会反映在屏幕上,但当我一秒钟后运行 date 命令时,它会返回到“实际”日期。如果我重新启动服务器,时间将正确重置,但我试图避免这种重新启动。
2)我正在阅读有关设置硬件时钟的信息,这可能会对我有帮助,但我无法对其进行任何更改或执行任何操作,我相信这是因为我在虚拟机上:
root@host [~]# /sbin/hwclock --show
Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
root@host [~]# hwclock --systohc
Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
3)我启用了 ntp,我相信它可以正常工作,但就像手动设置时间一样,时间更改直到重新启动后才会“保留”:
root@host [~]# date
Mon May 13 06:55:36 WAKT 2013
root@host [~]# service ntpd stop
Shutting down ntpd: [ OK ]
root@host [~]# ntpdate pool.ntp.org
13 May 06:55:52 ntpdate[7146]: step time server 192.95.20.208 offset -229.150633 sec
root@host [~]# service ntpd start
Starting ntpd: [ OK ]
root@host [~]# date
Mon May 13 06:56:10 WAKT 2013
另请注意,我目前正在使用一些奇怪的时区,因为我正在尝试解决时区重置时遇到的另一个问题:https://serverfault.com/questions/494635/timezone-changing-by-itself-on-virtualized-centos-install所以不要太关注时区。我只需要时间与我所在的时区相符即可。
有人处理过这个问题吗?我不相信没有办法在不重启的情况下设置 Linux 机器上的时间。欢迎提出任何想法或建议!
答案1
如果您正在运行半虚拟化 xen vm,您可以检查;
/proc/sys/xen/independent_wallclock
如果存在且包含 0 ,请尝试(以 root 身份):
echo 1 > /proc/sys/xen/independant_wallclock
然后启动你的 ntp 服务器。