Bestimmen Sie, welcher Gast auf XEN ausgeführt wird: HVM- oder PV-Gast

9

Ich arbeite mit einem Xen-Host, auf dem XenServer von Citrix von jemandem installiert wird. Er hat bereits viele CentOS 5.2-Gäste auf dem Host installiert. Ich frage mich, wie ich diese Gäste überprüfen kann, um festzustellen, ob es sich um PV- oder HVM-Typen handelt.

Ha Son Hai
quelle

Antworten:

10

Ein kurzer Hinweis: Es gibt tatsächlich drei Modi, nicht zwei, wenn es um die verwendeten Treiber geht:

  • HVM: unveränderter Kernel und Treiber, die Software-emulierte Geräte verwenden
  • PV-HVM: unveränderter Kernel mit paravirtualisierten (Xen-spezifischen) Festplatten- und Netzwerktreibern
  • PV: modifizierter Kernel und Treiber

Für einen Xen-Gast / DomU können Sie eine sehr einfache unameund lsmodmit einem grep ausführende Liste der verwendeten Module erstellen :

uname -a
lsmod | grep xen

Wenn uname -aein Kernel mit der Zeichenfolge "xen" aufgelistet ist, haben Sie einen geänderten Kernel und es handelt sich wahrscheinlich um einen PV-Gast. Die Ausgabe des lsmodBefehls zur Bestätigung wird angezeigt. Wenn Sie eine Ausgabe von grep on haben, lsmodaber keine Anzeichen für einen modifizierten Kernel haben, sind Sie 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, sodass dies ein offensichtlicher Hinweis sein kann. Sie können jedoch das Vorhandensein der PV-Tools vortäuschen , um das Anhalten / Fortsetzen usw. zu ermöglichen, sodass Sie sich im Allgemeinen nicht darauf verlassen können .

Adam C.
quelle
Danke @Adam. Es ist die klarste Antwort, die ich bisher gefunden habe.
Ha Son Hai
10

Es gibt eine bessere Alternative zur Analyse der uname -aAusgabe innerhalb der Gastdomäne. Sie sollten lieber das VM-Profil im Hypervisor selbst überprüfen.

XL

Mit dem aktuellen XenLight-Toolstack für eigenständige Xen-Installationen kann dies durch Ausführen des folgenden xl list --longBefehls erreicht werden:

# 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 den typePunkt im  c_infoAbschnitt - wenn er gleich ist  "pv", bedeutet dies paravirtuell.

XM

Bei einer älteren eigenständigen Xen-Installation mit herkömmlichem xmManagement-Toolstack waren die Dinge ähnlich:

# xm list --long My-Virtual-Machine
(domain
    (domid 42)
    (name My-Virtual-Machine)
    (image
        (linux
            (kernel ...)
            ...
        )
    )
    ...
)

Beachten Sie das (linux)Element im  (image)Abschnitt - es entspricht der  builderKonfigurationsanweisung, wobei "Linux" "paravirtual" (anstelle des eigentlichen Kernels) bedeutet, während "hvm" für "vollständige Virtualisierung" steht.

XE

Mit XenServer oder XCP- Appliance können Sie xe vm-list params=allBefehle oder ähnliches verwenden.

virsh

Es kann (oder gab) eine Möglichkeit geben, diese Informationen aus dem  libvirt- Toolstack abzurufen, die mir jedoch unbekannt sind.


Beachten Sie, dass der paravirtuelle Modus unter x86-64 ab Xen 4.5 zwei Varianten hat:

  • klassische Paravirtualisierung (PV), bei der Gastsysteme von Ring 0 auf Ring 1 umgeschrieben werden müssen ; Da AMD Ring x und Ring 2 in x86-64 weggeworfen hat, musste Xen auf softwarebasiertes Management zurückgreifen, das sogar langsamer als HVM ist.
  • Hardware-unterstützte Paravirtualisierung (PVH) - nicht zu verwechseln mit  vollständig virtualisierter mit paravirtuellen Treibern (PV-on-HVM) -, die auf Hardware-Unterstützung für die Verarbeitung privilegierter Anweisungen und Speicherseitentabellen angewiesen ist, für alles andere jedoch traditionelle PV-Techniken verwendet , so dass keine Hardware emuliert wird und nahezu native Leistung erzielt wird, wie es in guten alten x86-32-Zeiten war.

Um zu überprüfen, ob der Host mit aktiviertem PVH ausgeführt wird, kann Folgendes verwendet werden xl info(obwohl diese Methode nicht besser ist als die Überprüfung von grub.cfg ):

# xl info | grep xen_commandline
xen_commandline        : pvh=1 loglvl=all guest_loglvl=all console=com1,vga
                         ^^^^^

Um zu überprüfen, ob ein bestimmter Gast im PVH-Modus ( pvh=1in der Konfigurationsdatei) ausgeführt wird, konsultieren Sie erneut xl list -l:

            "c_info":{
                "name": "My-Virtual-Machine",
                "type": "pv",
                "pvh": "True",
                ...
            },

Aus administrativer Sicht sollte sich PVH jedoch nicht von PV unterscheiden.

Anton Samsonov
quelle
Dies funktioniert unter 4.4.1 nicht, da es keinen xmBefehl gibt, xlder jedoch eine andere Ausgabe hat. Irgendeine Idee, wie man die Informationen zu 4.4.1 XEN erhält. Vielen Dank.
Wakan Tanka
@WakanTanka Ich habe derzeit keinen Zugriff auf einen funktionierenden Xen-Server, aber laut der online gefundenen Beispielausgabe ist der Ansatz im Grunde der gleiche. Siehe die aktualisierte Antwort.
Anton Samsonov
Dies ist ein weitaus besserer Ansatz als die Antwort von @ AdamC, da ich mehrere PV-Ubuntu-Gäste habe, die definitiv PV entsprechen xlund dennoch keine Erwähnung von Xen im Kernelnamen oder in den Kernelmodulen haben.
Gefälschter Name
2
Dies erfordert den Zugriff auf den Hypervisor. Wie kann man wissen, ob er nur Zugriff auf den Gast hat?
Tonin