【问题标题】:Synchronizing clock time in host and guest under KVMKVM下host和guest同步时钟时间
【发布时间】:2014-11-18 05:56:33
【问题描述】:

我有一个相对简单的要求:我希望我在 KVM 下创建的 CentOS 客户机上的时钟从 VM 的第一次启动开始就与他们的 CentOS 主机同步。

在它们启动并运行后,很容易将它们与 NTP 同步。但是,如果 NTP 启动时主机的时钟和 VM 的时钟相差很大,可能会导致 VM 的时间大幅跳变。我们在 VM 下运行的许多应用程序都不能很好地处理这种时间跳跃,因此我们希望防止这种情况发生。

所以我的问题是如何将我的虚拟机配置为与其主机同时启动?在我刚刚运行的测试中,我的主机时间是太平洋夏令时间 14:00。我在该主机下创建的 VM 的初始时间为太平洋夏令时间 21:00。 NTP 在开始到 14:00 PDT 后不久将其调整为 14:00 PDT,与主机的时间相匹配,并且 VM 的后续重新启动始终具有正确的时间。该问题仅在第一次启动时出现。我希望 VM 在第一次启动时提供 14:00 PDT 以避免 NTP 时间跳跃。

【问题讨论】:

    标签: clock kvm synchronize


    【解决方案1】:

    好的,我已经回答了我自己的问题。我用来给我所需结果的设置组合是:

    1. 在主机上设置 hwclock 并使用 UTC 时间。这是通过 hwclock 命令的 --utc 选项完成的。我在主机操作系统上运行以下命令:

      hwclock --utc --set --date="时间字符串"

    2. 通过文件 /etc/adjtime 告诉 CentOS hwclock 正在使用 UTC。例如,您可以使用

      初始化此文件

      echo -e "0.0 0 0.0\n0\n\nUTC" >/etc/adjtime

    在主机和客户虚拟机上创建此文件。在我第一次启动访客之前,我通过直接从主机访问访客文件系统在访客上创建文件。

    1. 为您的系统时间设置您想要的时区。同样,对您的主人和您的客人都这样做:

      ln -sf /usr/share/zoneinfo/时区 /etc/localtime
      echo "ZONE=时区" >/etc/sysconfig/clock
      export TZ=时区

    其中 time-zone 是标准 CentOS 时区字符串,例如“US/Pacific”。

    1. 根据 hwclock 在您的主机上设置系统时间。需要 --utc 选项来告诉 CentOS hwclock 是 UTC 时间。它将采用 UTC 时间并根据 TZ 环境变量设置您的系统时间:

      hwclock --utc --hctosys

    2. 当您配置主机和来宾时,上述步骤全部完成一次。为了在所有服务器启动并运行后保持时间同步,您需要在主机和访客上配置 NTP。

    【讨论】:

    • 这如何解决VMs时间“大跳跃”的问题?如何配置 NTP 以使用主机时间?
    • hwclock on host 是 2018-05-13 20:23 +0200 (我的正确当地时间),hwclock in guest 是 2018-05-13 22:23 +0200 ,我正在使用 <clock offset='localtime'/> 。那么现在该怎么办呢?在访客启动期间,时间比我的正确时间提前 2 小时,启动后,NTP 同步并且时间跳回 2 小时。我需要避免跳跃。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    相关资源
    最近更新 更多