GNU/Linux >> Linux Esercitazione >  >> Linux

Determina quale guest è in esecuzione su XEN:guest HVM o PV

Una breve nota, in realtà ci sono 3 modalità, non due per quanto riguarda i driver in uso:

  • HVM:kernel e driver non modificati che utilizzano dispositivi emulati dal software
  • PV-HVM:kernel non modificato con driver di rete e disco paravirtualizzati (specifici per Xen)
  • PV:kernel e driver modificati

Per un Xen guest/DomU puoi fare un uname molto semplice e lsmod con un grep per elencare i moduli in uso:

uname -a
lsmod | grep xen

Se uname -a elenca un kernel con la stringa "xen" al suo interno, allora hai un kernel modificato ed è probabile che sia un PV guest, e vedrai l'output dal lsmod comando per confermarlo. Se hai un output da grep su lsmod ma nessun segno di un kernel modificato, allora sei PV-HVM. Senza alcun segno di entrambi, è un HVM dritto.

Nota:generalmente puoi fare di più con le macchine virtuali che hanno gli strumenti PV installati, quindi può essere un puntatore abbastanza ovvio, tuttavia puoi fingere la presenza degli strumenti PV per consentire la sospensione/ripresa ecc. Quindi non puoi fare affidamento su questo in generale .


Esiste un'alternativa migliore all'analisi di uname -a output dall'interno del dominio guest. Dovresti piuttosto controllare il profilo della VM nell'hypervisor stesso.

XL

Con la corrente XenLight toolstack per installazioni Xen autonome, ciò potrebbe essere ottenuto eseguendo xl list --long comando:

# 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",
                ...
            },
            ...
        }
    }
]

Nota il type voce in c_info section — se è uguale a "pv" , questo significa paravirtuale.

XM

Con un vecchio installazione autonoma di Xen utilizzando il tradizionale xm gestione degli strumenti, le cose erano simili:

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

Nota il (linux) elemento nel (image) sezione — corrisponde al builder direttiva di configurazione, dove "linux" significa "paravirtuale" (piuttosto che il kernel vero e proprio), mentre "hvm" sta per "virtualizzazione completa".

XE

Con XenServer o appliance XCP potresti usare xe vm-list params=all comando o qualcosa di simile.

virsch

Potrebbe esserci (o esserci stato) un modo per ottenere queste informazioni da libvirt toolstack, ma a me sconosciuto.

Nota che, a partire da Xen 4.5, la modalità paravirtuale su x86-64 ha due versioni:

  • paravirtualizzazione classica (PV) che si basa sui sistemi guest da riscrivere dall'uso dell'anello 0 verso l'anello 1; poiché AMD ha eliminato l'anello 1 e l'anello 2 in x86-64, Xen ha dovuto ricorrere alla gestione basata su software, che è persino più lenta di HVM;
  • paravirtualizzazione assistita da hardware (PVH), — da non confondere con completamente virtualizzato con driver paravirtuali (PV-on-HVM), — che si basa sull'assistenza hardware per la gestione delle istruzioni privilegiate e delle tabelle delle pagine di memoria, ma utilizza le tradizionali tecniche PV per tutto il resto, in modo che nessun hardware venga emulato e si ottengano prestazioni quasi native come in buone condizioni vecchio x86-32 volte.

Per verificare se l'host viene eseguito con PVH abilitato, si può usare xl info (sebbene questo metodo non sia migliore dell'ispezione di grub.cfg ):

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

Per verificare se un determinato guest è in esecuzione in modalità PVH (pvh=1 nel file di configurazione), ancora una volta, consulta xl list -l :

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

Tuttavia, dal punto di vista dell'amministrazione, PVH non dovrebbe essere diverso da PV.


Linux
  1. Come determinare quale processo sta creando un file?

  2. Ottenere il tempo dell'utente e del kernel di un processo in esecuzione?

  3. Come ottenere il Tty in cui è in esecuzione Bash?

  4. Come determinare quale processo sta scrivendo su disco in Linux

  5. Python può rilevare su quale sistema operativo è in esecuzione?

Come scoprire la versione del kernel Linux in esecuzione sul tuo PC

Eseguire uno script ogni volta che viene installato un nuovo kernel?

Come posso vedere in quale core della CPU è in esecuzione un thread?

Come posso identificare quale distribuzione Linux è in esecuzione?

Determina in quali gruppi si trova un processo in esecuzione?

Quale sistema operativo è in esecuzione nel mio container Docker?