Eine kurze Anmerkung, es gibt tatsächlich 3 Modi, nicht zwei, wenn es um die verwendeten Treiber geht:
- HVM:unmodifizierter Kernel und Treiber, die softwareemulierte Geräte verwenden
- PV-HVM:unmodifizierter Kernel mit paravirtualisierten (Xen-spezifischen) Festplatten- und Netzwerktreibern
- PV:Modifizierter Kernel und Treiber
Für einen Xen-Gast/DomU können Sie ein sehr einfaches uname
machen und lsmod
mit einem grep, um die verwendeten Module aufzulisten:
uname -a
lsmod | grep xen
Wenn uname -a
einen Kernel mit der Zeichenfolge "xen" darin auflistet, dann haben Sie einen modifizierten Kernel und es ist wahrscheinlich ein PV-Gast, und Sie werden die Ausgabe von lsmod
sehen Befehl, um es zu bestätigen. Wenn Sie eine Ausgabe von grep auf lsmod
haben aber kein Hinweis auf einen modifizierten Kernel dann bist du PV-HVM. Ohne Anzeichen von beidem ist es eine reine HVM.
Hinweis:Im Allgemeinen können Sie mit VMs, auf denen die PV-Tools installiert sind, mehr tun, was ein ziemlich offensichtlicher Hinweis sein kann. Sie können jedoch das Vorhandensein der PV-Tools vortäuschen, um Suspend/Resume usw. zu ermöglichen, sodass Sie sich im Allgemeinen nicht darauf verlassen können .
Es gibt eine bessere Alternative zur Analyse von uname -a
Ausgabe innerhalb der Gastdomäne. Prüfen Sie lieber das VM-Profil im Hypervisor selbst.
XL
Mit dem Strom XenLight-Toolstack für eigenständige Xen-Installationen, dies könnte durch Ausführen von xl list --long
erreicht werden Befehl:
# xl list
Name ID Mem VCPUs State Time(s)
My-Virtual-Machine 42 1024 1 -b---- 9001.0
# xl list -l 42
or
# xl list --long My-Virtual-Machine
[
{
"domid": 6,
"config": {
"c_info": {
"name": "My-Virtual-Machine",
"uuid": "12345678-abcd-1234-abcd-12345678abcd",
"type": "pv",
...
},
...
}
}
]
Beachten Sie die type
Element im c_info
Abschnitt – wenn er gleich "pv"
ist , das bedeutet paravirtuell.
XM
Mit einem älteren eigenständige Xen-Installation mit herkömmlichem xm
Management-Toolstack war es ähnlich:
# xm list --long My-Virtual-Machine
(domain
(domid 42)
(name My-Virtual-Machine)
(image
(linux
(kernel ...)
...
)
)
...
)
Beachten Sie den (linux)
-Element im (image)
Abschnitt — entspricht dem builder
Konfigurationsdirektive, wobei „linux“ „paravirtuell“ bedeutet (und nicht der eigentliche Kernel), während „hvm“ für „vollständige Virtualisierung“ steht.
XE
Mit XenServer oder XCP Appliance Sie könnten xe vm-list params=all
verwenden Befehl oder etwas Ähnliches.
virsh
Es kann (oder gab) einen Weg geben, diese Informationen von libvirt zu bekommen Toolstack, aber mir unbekannt.
Beachten Sie, dass ab Xen 4.5 der paravirtuelle Modus auf x86-64 zwei Varianten hat:
- klassische Paravirtualisierung (PV), das darauf beruht, dass Gastsysteme von der Verwendung von Ring 0 zu Ring 1 umgeschrieben werden; seit AMD Ring 1 und Ring 2 in x86-64 weggeworfen hat, musste Xen auf softwarebasiertes Management zurückgreifen, das noch langsamer als HVM ist;
- hardwareunterstützte Paravirtualisierung (PVH), — nicht zu verwechseln mit vollständig virtualisiert mit paravirtuellen Treibern (PV-on-HVM), – das auf Hardwareunterstützung für die Handhabung privilegierter Anweisungen und Speicherseitentabellen angewiesen ist, aber für alles andere traditionelle PV-Techniken verwendet, sodass keine Hardware emuliert wird und eine nahezu native Leistung erreicht wird, wie sie gut war alte x86-32-Zeiten.
Um zu überprüfen, ob der Host mit aktiviertem PVH läuft, kann man xl info
verwenden (obwohl diese Methode nicht besser ist, als grub.cfg zu inspizieren ):
# xl info | grep xen_commandline
xen_commandline : pvh=1 loglvl=all guest_loglvl=all console=com1,vga
^^^^^
Um zu prüfen, ob ein bestimmter Gast im PVH-Modus läuft (pvh=1
in der Konfigurationsdatei), konsultieren Sie erneut xl list -l
:
"c_info":{
"name": "My-Virtual-Machine",
"type": "pv",
"pvh": "True",
...
},
Aus Sicht der Verwaltung sollte sich PVH jedoch nicht von PV unterscheiden.