Déterminer quel invité s'exécute sur XEN: invité HVM ou PV

9

Je travaille avec un hôte Xen sur lequel XenServer de Citrix est installé par quelqu'un. Il a déjà installé un grand nombre d'invités CentOS 5.2 sur l'hôte. Je me demande comment vérifier ces invités pour savoir s'ils sont de type PV ou HVM?

Ha Son Hai
la source

Réponses:

10

Une note rapide, il existe en fait 3 modes, pas deux en ce qui concerne les pilotes utilisés:

  • HVM: noyau et pilotes non modifiés utilisant des périphériques émulés par logiciel
  • PV-HVM: noyau non modifié avec disque paravirtualisé (spécifique à Xen) et pilotes réseau
  • PV: noyau et pilotes modifiés

Pour un invité / DomU Xen, vous pouvez faire un très basique unameet lsmodavec un grep pour lister les modules utilisés:

uname -a
lsmod | grep xen

Si uname -arépertorie un noyau contenant la chaîne "xen", alors vous avez un noyau modifié et il s'agit probablement d'un invité PV, et vous verrez la sortie de la lsmodcommande pour le confirmer. Si vous avez une sortie de grep sur lsmodmais aucun signe d'un noyau modifié, vous êtes PV-HVM. Sans aucun signe non plus, c'est un HVM droit.

Remarque: En général, vous pouvez faire plus avec les machines virtuelles sur lesquelles les outils PV sont installés, ce qui peut être un pointeur assez évident, mais vous pouvez simuler la présence des outils PV pour autoriser la suspension / la reprise, etc., vous ne pouvez donc pas vous fier à cela en général .

Adam C
la source
Merci @Adam. C'est la réponse la plus claire que j'ai trouvée jusqu'à présent.
Ha Son Hai
10

Il existe une meilleure alternative à l'analyse de la uname -asortie de l'intérieur du domaine invité. Vous devriez plutôt vérifier le profil VM dans l'hyperviseur lui-même.

XL

Avec la boîte à outils XenLight actuelle pour les installations Xen autonomes, cela pourrait être réalisé en exécutant la xl list --longcommande:

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

Notez l' typeélément dans la  c_infosection - s'il est égal  "pv", cela signifie paravirtuel.

XM

Avec une ancienne installation autonome de Xen utilisant une xmpile d'outils de gestion traditionnelle , les choses étaient similaires:

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

Notez l' (linux)élément dans la  (image)section - il correspond à la  builderdirective de configuration, où «linux» signifie «paravirtuel» (plutôt que le noyau réel), tandis que «hvm» signifie «virtualisation complète».

XE

Avec XenServer ou XCP , vous pouvez utiliser la xe vm-list params=allcommande ou quelque chose de similaire.

virsh

Il peut y avoir (ou il y a eu) un moyen d'obtenir ces informations de la  bibliothèque d'outils libvirt , mais à ma connaissance.


Notez que, à partir de Xen 4.5, le mode paravirtuel sur x86-64 a deux variantes:

  • paravirtualisation classique (PV) qui repose sur des systèmes invités à réécrire en utilisant l' anneau 0 vers l'anneau 1; depuis qu'AMD a jeté l'anneau 1 et l'anneau 2 en x86-64, Xen a dû se replier sur la gestion logicielle, qui est encore plus lente que HVM;
  • paravirtualisation assistée par matériel (PVH), - à ne pas confondre avec  entièrement virtualisé avec les pilotes paravirtuels (PV-sur-HVM), - qui s'appuie sur l'assistance matérielle pour gérer les instructions privilégiées et les tables de pages mémoire, mais utilise des techniques PV traditionnelles pour tout le reste , afin qu'aucun matériel ne soit émulé et que les performances presque natives soient atteintes comme c'était le cas dans les bons vieux x86-32 fois.

Pour vérifier si l'hôte fonctionne avec PVH activé, on peut utiliser xl info(bien que cette méthode ne soit pas meilleure que l'inspection de grub.cfg ):

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

Pour vérifier si un invité particulier s'exécute en mode PVH ( pvh=1dans le fichier de configuration), consultez à nouveau xl list -l:

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

Cependant, du point de vue de l'administration, le PVH ne devrait pas être différent du PV.

Anton Samsonov
la source
Cela ne fonctionne pas sur 4.4.1 car il n'y a pas de xmcommande mais xlqui a une sortie différente. Toute idée comment obtenir les informations sur 4.4.1 XEN. Merci.
Wakan Tanka
@WakanTanka Je n'ai actuellement pas accès à un serveur Xen fonctionnel, mais selon l'exemple de sortie trouvé en ligne, l'approche est fondamentalement la même. Voir la réponse mise à jour.
Anton Samsonov
C'est une bien meilleure approche que la réponse de @ AdamC, car j'ai plusieurs invités PV ubuntu qui sont définitivement PV selon xl, et pourtant je n'ai aucune mention de xen dans le nom du noyau ou les modules du noyau.
Fake Name
2
Cela nécessite un accès à l'hyperviseur, comment savoir s'il n'a accès qu'à l'invité?
Tonin