在KVM下同步主机和来宾中的时钟时间

use*_*383 5 kvm clock synchronize

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

在NTP启动并运行后,它们很容易与NTP同步.但是,如果主机的时钟和VM的时钟在NTP启动时差别很大,则可能导致VM时间大幅跳跃.我们在VM下运行的许多应用程序都无法正常运行,因此我们希望防止这种情况发生.

所以我的问题是如何配置我的VM与主机同时启动?在刚刚跑的测试中,主持人的时间是太平洋时间14:00.我在该主机下创建的VM初始时间为21:00 PDT.在PDT开始到14:00之后不久,它通过NTP调整到14:00 PDT,与主机的时间相匹配,随后VM的重新启动始终具有正确的时间.问题仅发生在第一次启动时.我希望VM在第一次启动时提供14:00 PDT以避免NTP时间跳转.

use*_*383 3

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

  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
    导出 TZ=时区

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

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

    hwclock --utc --hctosys

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