Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

23.15. timekeeping

客户机虚拟机时钟通常从主机物理机器时钟初始化。大多数操作系统都预期硬件时钟保存在 UTC 中,这是默认设置。
准确的客户机虚拟机计时是虚拟化平台的关键挑战。不同的管理程序试图以各种方式处理计时的问题。libvirt 使用域 XML 中的 <clock><timer> 元素提供独立于管理程序的配置设置。可以使用 virsh edit 命令编辑域 XML。详情请查看 第 20.22 节 “编辑虚拟机 XML 配置设置”

图 23.25. timekeeping


  ...
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup' track='guest'>
      <catchup threshold='123' slew='120' limit='10000'/>
    </timer>
    <timer name='pit' tickpolicy='delay'/>
  </clock>
  ...


域 XML 的这一部分的组件如下:

表 23.11. 计时元素

状态 描述
<clock> <clock> 元素用于确定如何将客户机虚拟机时钟与主机物理机器时钟同步。offset 属性使用四个可能值,允许对将客户机虚拟机时钟与主机物理机器同步的方式进行精细控制。请注意,管理程序不需要在所有时间源中支持所有策略
  • UTC - 引导时将时钟同步到 UTC。utc 模式可转换为 变量 模式,该模式可使用 adjustment 属性来控制。如果 重置了 值,则不会完成转换。数值强制将值转换为 变量 模式,作为初始调整。默认调整是特定于虚拟机监控程序的。
  • localtime - 引导时,将客户机虚拟机时钟与主机物理计算机配置的时区同步。adjustment 属性的行为与 utc 模式 相同
  • timezone - 将客户机虚拟机时钟与请求的时区同步。
  • 变量 - 根据基础属性,为 guest 虚拟机时钟提供相对于 UTC 或 本地时间 应用的任意偏移量。使用 adjust 属性来指定与 UTC 相关的增量(或 本地时间)的 delta。客户机虚拟机可以自由地调整 RTC,并期望在下次重启时它会被遵守。这与 utclocaltime 模式不同(带有可选的属性 adjustment='reset'),其中 RTC 在每次重启时都会丢失。此外,base 属性也可以是 utc (默认)或 localtimeclock 元素可以有零个或多个 <计时器> 元素。
<timer> 请参阅备注
<存在> 指定特定计时器可用于客户机虚拟机。可以设置为 yesno
注意
<时钟> 元素可以有零个或多个 <计时器> 元素作为子项。<timer> 元素指定用于客户机虚拟机时钟同步的时间源。
在每个 <计时器> 元素中,需要 名称,所有其他属性都是可选的:
  • Name - 选择修改哪个 计时器。可接受以下值: kvmclock、pitrtc
  • track - 指定计时器跟踪。可接受以下值: bootguestwall.track 仅对 name="rtc" 有效。
  • tickpolicy - 确定在在向客户机虚拟机注入 tick 时会发生什么。可以分配以下值:
    • delay - 继续以正常率交付行程。由于相关空点,客户机虚拟机时间将延迟。
    • 捕获 - 按更高的速率提供电话,以便跟上空缺的支票。在捕获完成后,客户机虚拟机时间不会被显示。另外,可以有三个可选属性,每个正整数: threshold、slew 和 limit。
    • merge - 将错过的支票放入一个空行并注入它们。根据合并的方式,客户机虚拟机时间可能会延迟。
    • discard - 放弃错过的提示,并在其默认间隔设置中继续使用将来的注入。客户端虚拟机时间可能会延迟,除非有明确的声明可用于处理丢失的 ticks。
注意
默认情况下,utc 被设置为虚拟机中的时钟偏移。但是,如果客户机虚拟机时钟使用 localtime 值运行,则需要将时钟偏移更改为不同的值,以便让客户机虚拟机时钟与主机物理机器时钟同步。

例 23.1. 始终与 UTC 同步

<clock offset="utc" />

例 23.2. 始终与主机物理计算机时区同步

<clock offset="localtime" />

例 23.3. 与任意时区同步

<clock offset="timezone" timezone="Europe/Paris" />

例 23.4. 与 UTC 同步 + 任意偏移

<clock offset="variable" adjustment="123456" />