Xen domain0 和 domainU 的时间同步

在 Xen 的默认设置下,domainU 的时间总是要自动和 domain0 保持同步,所以想简单的在 domainU 内部用各种时间、日期等命令改变 domainU 的系统时间并不起作用。如何给 domainU 设置单独的时钟而不受 domain0 的影响呢?我们经常接到我们的 Xen VPS 客户的询问是否能把他们的 VPS 时钟改成北京时间,为什么他们改变了时钟和时区却不起作用等问题。如果每个 VPS 用户(domainU)来自不同国家或时区而想在自己的 VPS 里使用自己的区域时间该怎么办?很简单,只需要在自己的 VPS(domainU)里改变一个参数就可以了,Linux/Xen 很灵活,传递参数方式有很多种,可以用下面任意的一种方式来改变这个设置。

直接改变 xen 内核的运行时参数:

# echo 1 > /proc/sys/xen/independent_wallclock

不过上面的方法会在重启 domainU 的时候丢失,可以把上面的命令加到某个自动启动文件中。

或者也可以把改变 xen 内核设置的参数加到 sysctl.conf 文件中,VPSee 更偏向采用这种方法:

# vi /etc/sysctl.conf
xen.independent_wallclock=1

# sysctl -p

另外一种方法在 VPS 外面进行,需要 VPS 服务商的干预,在 domainU 的启动配置文件种加上以下参数:

# vi /etc/xen/vps01
...
extra='independent_wallclock=1'
...

评论 (5 Comments)

  1. 博主您好,请问全虚拟化时domU的时间只能与dom0同步么?全虚拟化时domU没有/proc/sys/xen/independent_wallclock这个。

  2. @秣马儿
    如果是全虚拟化(HVM),可以在 domU 里用 ntp 同步。

  3. 全虚拟化时,我在domU里用ntp同步,结果ntpq -p命令显示总是跟local同步时间。

    [root@vm02 ~]# ntpq -p
    remote refid st t when poll reach delay offset jitter
    ==============================================================================
    dns2.synet.edu. 133.243.238.163 2 u 31 64 17 148.000 9436876 2523.43
    hshh.org 66.220.9.122 2 u 26 64 17 19.376 9438489 2467.58
    dns1.synet.edu. 123.199.115.203 2 u 30 64 3 157.485 9435405 1466.38
    *LOCAL(0) .LOCL. 10 l 27 64 17 0.000 0.000 0.001

    而其他半虚拟化的虚拟机的ntp都正常工作。
    博主大神,请问您遇到过这种情况么?

  4. @秣马儿
    从你上面提供的信息来看,貌似你是和 local 同步的(*LOCAL(0) .LOCL),* 代表当前和哪个服务器同步。所以你需要在 /etc/ntp.conf 里把 local 去掉(这一行 server 127.127.1.0 # local clock),然后重启 ntp 服务。

  5. 谢谢您的回复。
    同样的ntp.conf配置,在全虚拟化的虚拟机里ntp就总是跟local同步时间,而半虚拟化的虚拟机里ntp工作的很好。
    抓狂中。
    我去试一下把这一行 server 127.127.1.0 # local clock去掉。

发表评论