9.2. 在 Red Hat Enterprise Virtualization 环境中的固定设备地址
在 Red Hat Enterprise Virtualization 3.1 以前,虚拟机硬件设备的 PCI 地址是在设备被发现时分配的。这意味着如果发现虚拟硬件设备的顺序发生了变化,分配给它们的 PCI 地址也会发生变化。
不固定的虚拟硬件设备的 PCI 地址会导致虚拟机出现问题。这个问题对于运行 Windows 操作系统的虚拟机尤其严重。如果一个重要设备(如系统的主硬盘)因为 PCI 地址发生了变化造成与 Windows 所期望的地址不同时,Windows 的反盗版功能会需要用户重新激活操作系统。
从 Red Hat Enterprise Virtualization 3.1 开始,虚拟硬件的 PCI 地址记录在 ovirt-engine 数据库中,因此它们的 PCI 地址是固定的。
在虚拟机被创建时,QEMU 会为虚拟硬件设备配置 PCI 地址,并通过 libvirt 报告给 VDSM。VDSM 把这个信息传递给 Manager,Manager 把地址信息保存在 ovirt-engine 数据库中。
当一个虚拟机启动时,Manager 会从数据库中读相应的设备地址信息,并把它传递给 VDSM。然后,VDSM 把这些设备地址信息再传递给 libvirt,从而使虚拟机可以使用这些从数据库中获得的 PCI 设备地址。
当一个设备被从虚拟机上删除时,包括 PCI 地址在内的、与这个虚拟机相关的信息都会被删除。如果需要添加一个新的设备来替代被删除的设备时,QEMU 会为新设备提供一个新的 PCI 地址。