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


9

Sto lavorando con un host Xen che è installato XenServer da Citrix da qualcuno. Ha già installato molti host CentOS 5.2 sull'host. Mi chiedo come controllare quegli ospiti per sapere che sono tipi PV o HVM?

Risposte:


10

Una breve nota, in realtà ci sono 3 modalità, non due quando si tratta dei driver in uso:

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

Per un guest Xen / DomU puoi fare un semplice unamee lsmodcon un grep per elencare i moduli in uso:

uname -a
lsmod | grep xen

Se uname -aelenca un kernel con la stringa "xen", allora hai un kernel modificato ed è probabilmente un guest PV, e vedrai l'output del lsmodcomando per confermarlo. Se hai l'output dal grep attivo lsmodma nessun segno di un kernel modificato, allora sei PV-HVM. Senza alcun segno di nessuno dei due, è un HVM dritto.

Nota: in genere è possibile fare di più con le macchine virtuali in cui sono installati gli strumenti fotovoltaici, quindi può essere un puntatore abbastanza ovvio, tuttavia è possibile falsificare la presenza degli strumenti fotovoltaici per consentire la sospensione / ripresa ecc., Quindi non si può fare affidamento su quello in generale .


Grazie @Adam. È la risposta più chiara che ho trovato finora.
Ha Son Hai,

10

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

XL

Con l'attuale toolstack XenLight per installazioni Xen autonome, questo potrebbe essere ottenuto eseguendo il xl list --longcomando:

# 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 l' typeelemento nella  c_infosezione: se è uguale  "pv", ciò significa paravirtuale.

XM

Con un'installazione Xen autonoma precedente che utilizzava il tradizionale xmtoolstack di gestione, le cose erano simili:

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

Nota l' (linux)elemento nella  (image)sezione - corrisponde alla  builderdirettiva di configurazione, dove "linux" significa "paravirtual" (piuttosto che il kernel attuale), mentre "hvm" sta per "virtualizzazione completa".

XE

Con XenServer o l' appliance XCP è possibile utilizzare il xe vm-list params=allcomando o qualcosa di simile.

virsh

Potrebbe esserci (o essere stato) un modo per ottenere queste informazioni dal  toolstack di libvirt , ma per me sconosciuto.


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

  • paravirtualizzazione classica (PV) che si basa su 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 dall'hardware (PVH), - da non confondere con la  virtualizzazione completa con driver paravirtuali (PV-on-HVM) - che si basa sull'assistenza hardware per la gestione di istruzioni privilegiate e tabelle di pagine di memoria, ma utilizza le tradizionali tecniche PV per tutto il resto , in modo che non venga emulato alcun hardware e si ottengano prestazioni quasi native come in passato x86-32 volte.

Per verificare se l'host funziona con PVH abilitato, è possibile utilizzare 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=1nel file di configurazione), consultare nuovamente xl list -l:

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

Tuttavia, dal punto di vista amministrativo, il PVH non dovrebbe essere diverso dal PV.


Questo non funziona su 4.4.1 perché non esiste un xmcomando ma xlche ha un output diverso. Qualche idea su come ottenere le informazioni su 4.4.1 XEN. Grazie.
Wakan Tanka,

@WakanTanka Al momento non ho accesso a un server Xen funzionante, ma secondo l'output di esempio trovato online l'approccio è sostanzialmente lo stesso. Vedi la risposta aggiornata.
Anton Samsonov,

Questo è un approccio molto migliore della risposta di @ AdamC, perché ho diversi guest Ubuntu PV che sono sicuramente PV secondo xl, e tuttavia non ho alcun riferimento a xen nel nome del kernel o nei moduli del kernel.
Nome falso

2
Ciò richiede l'accesso all'hypervisor, come si fa a sapere se ha accesso al guest?
Tonin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.