8.10. 使用 libvirt 管理虚拟机计时器
保证虚拟客户机的准确时间是虚拟化平台的关键挑战。不同的虚拟机监控程序试图以各种方式处理时间问题。libvirt 为时间管理提供管理程序独立的配置设置,使用域 XML 中的 <clock> 和 <timer> 元素。可以使用 virsh edit 命令编辑域 XML。详情请查看 第 14.6 节 “编辑客户机虚拟机的配置文件”。
<clock>
元素用于确定客户端虚拟机时钟如何与主机物理机器时钟同步。clock 元素具有以下属性:
偏移
决定了客户机虚拟机时钟在主机物理时钟中的偏移方式。offset 属性具有以下可能的值:表 8.1. 偏移属性值 值 描述 utc 启动时,客户机虚拟机时钟将同步到 UTC。 localtime 客户端虚拟机时钟将在引导时同步到主机物理机器配置的时区(若有)。 timezone 客户机虚拟机时钟将同步到指定时区,由 timezone
属性指定。变量 客户机虚拟机时钟将与 UTC 中的任意偏移同步。增量相对于 UTC 的使用 adjustment
属性以秒为单位指定。客户机虚拟机可以自由地调整 Real Time Clock(RTC),期望它在下次重启时将生效。这与utc
模式不同,每次重启时会丢失任何 RTC 调整。注意默认情况下,utc 值被设置为虚拟机中的时钟偏移。但是,如果客户端虚拟机时钟使用 localtime 值运行,则需要将时钟偏移改为不同的值,以便使客户端虚拟机时钟与主机物理机器时钟同步。timezone
属性决定 guest 虚拟机时钟使用哪个时区。adjustment
属性提供客户机虚拟机时钟同步的 delta。以秒为单位,相对于 UTC。
例 8.1. 始终与 UTC 同步
<clock offset="utc" />
例 8.2. 始终与主机物理机器时区同步
<clock offset="localtime" />
例 8.3. 同步到任意时区
<clock offset="timezone" timezone="Europe/Paris" />
例 8.4. 同步到 UTC + 任意偏移
<clock offset="variable" adjustment="123456" />
8.10.1. 时钟的计时器子元素
clock 元素可以有零个或多个计时器元素作为子项。timer 元素指定用于客户端虚拟机时钟同步的时间源。timer 元素具有以下属性:只有
name
是必需的,所有其他属性都是可选的。
name
属性指定要使用的时间源类型,可以是以下之一:
值 | 描述 |
---|---|
pit | Programmable Interval Timer - 带有定期中断的计时器。 |
rtc | 实时时钟 - 持续运行带有定期中断的计时器。 |
tsc | 时间戳计数器 - 计算重置后空数,没有中断。 |
kvmclock | KVM 时钟 - KVM 客户机虚拟机的建议时钟源。KVM pvclock 或 kvm-clock 可让 guest 虚拟机读取主机物理机器的墙时钟时间。 |