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 的这一部分的组件如下:
状态 | 描述 |
---|---|
<clock> | <clock> 元素用于确定如何将客户机虚拟机时钟与主机物理机器时钟同步。offset 属性使用四个可能值,允许对将客户机虚拟机时钟与主机物理机器同步的方式进行精细控制。请注意,管理程序不需要在所有时间源中支持所有策略
|
<timer> | 请参阅备注 |
<存在> | 指定特定计时器可用于客户机虚拟机。可以设置为 yes 或 no 。 |
注意
<时钟>
元素可以有零个或多个 <计时器>
元素作为子项。<timer>
元素指定用于客户机虚拟机时钟同步的时间源。
在每个
<计时器>
元素中,需要 名称
,所有其他属性都是可选的:
Name
- 选择修改哪个计时器
。可接受以下值:kvmclock
、pit
或rtc
。track
- 指定计时器跟踪。可接受以下值:boot
、guest
或wall
.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" />