9.2. Red Hat Enterprise Virtualization における不変のデバイスアドレス
Red Hat Enterprise Virtualization 3.1 よりも前のバージョンでは、仮想マシンのハードウェアデバイスの PCI アドレスは、デバイスが検出された順に割り当てられていました。そのため、仮想ハードウェアが検出される順序が変わると、そのハードウェアに指定される PCI アドレスの割り当ても変わってしまう可能性がありました。
PCI デバイスアドレスが変更されると、Windows オペレーティングシステムを実行している仮想マシンに特に悪影響を及ぼします。システムハードディスクのような重要なデバイスに、Windows が想定していたのとは異なる PCI アドレスが割り当てられると、Windows の不正コピー防止対策により、オペレーティングシステムの再アクティブ化が要求される可能性があります。
Red Hat Enterprise Virtualization 3.1 以降のバージョンでは、仮想ハードウェアの PCI アドレス割り当てが ovirt-engine データベースで永続化されます。
PCI アドレスは QEMU により仮想マシンの作成時に割り当てられ、libvirt により VDSM に報告されます。それらのアドレスは VDSM によって Manager へ折り返し報告され、ovirt-engine データベースに保管されます。
仮想マシンが起動すると、Manager はデータベースに保管されているデバイスアドレスを VDSM に送ります。VDSM はそのアドレスを libvirt に渡すと、仮想マシンの初回実行時に割り当てられた PCI デバイスアドレスを使用して仮想マシンが実行されます。
デバイスが仮想マシンから削除されると、その仮想マシンへの全参照 (不変の PCI アドレスを含む) も削除されます。削除されたデバイスの代わりにデバイスが追加される場合には、QEMU によりそのデバイスに割り当てられる PCI アドレスは、削除されたデバイスのアドレスとは異なる可能性が高くなります。