GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

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.


Linux
  1. Auf welcher Shell laufe ich?

  2. Linux – Wie kann man feststellen, welches Modul den Kernel verschmutzt?

  3. Linux – Wie erkennt man, welche Linux-Distribution läuft?

  4. Wie bekomme ich das Tty, in dem Bash läuft?

  5. Kann Python erkennen, unter welchem ​​Betriebssystem es läuft?

So finden Sie heraus, welche Version des Linux-Kernels auf Ihrem PC läuft

Benutzer- und Kernelzeit eines laufenden Prozesses abrufen?

Jedes Mal, wenn ein neuer Kernel installiert wird, ein Skript ausführen?

So bestimmen Sie, welcher Prozess in Linux auf die Festplatte schreibt

uname ist kaputt:Wie ermittle ich den aktuell laufenden Kernel?

Identifizieren, welcher MTA ausgeführt wird