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.