经常会有朋友在使用 VPS 的过程当中发现,VPS 的时间不正常,比方说无法设置时区,或者设置时区之后 VPS 的时间与时区所属的当地时间有8小时的差距。更极端的情况是,通过一些方法来设置之后,也没办法实现时间的同步。特别是目前我们很多朋友都在使用国外服务商提供的 VPS,国外服务器的时区和中国地区的不一样,因此在一些情况下,我们无法正常同步时间。对于这个问题,我们提出了解决方法。
 
需要注意的是,本文针对的是基于 Xen 虚拟化技术,特别是 Xen-PV,而且内核版本小于 3.0 的 Linux 系统。基于 Xen-HVM 或者内核版本为 3.X 的不支持,也不需要使用此方法。

解决VPS时间无法同步的一般方法:
 
一般来说,可以通过在VPS中执行以下命令,来设置时区并且同步将时间与北京时间进行同步:

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install -y ntp
ntpdate us.pool.ntp.org
date

终极解决方法:
 
在使用我们前面介绍的方法之后,如果 VPS 的时间仍然无法同步,甚至出现一些很诡异的情况(如时差8小时等),同时你的 VPS 基于 Xen-PV,那么可以通过在 /etc/sysctl.conf 中加入以下内容来解决:

xen.independent_wallclock=1

加入上述内容之后,执行:

sysctl -p

执行完毕之后再重复一下本文所提到的 “一般方法” ,问题即能迎刃而解。由于 VPS 重启后可能会被强制同步时间,因此最好在 /etc/rc.local 中加入:

ntpdate us.pool.ntp.org

发表评论

/ 快捷键:Ctrl+Enter