Virtualisation
Qu'est-ce que Nested virtualisation ?
Nested virtualisation lets a virtual machine itself run virtual machines, by exposing the processor virtualisation extensions to the guest. It is required for Proxmox VE, VM-based CI jobs and some Docker configurations. Many providers disable it, which is the usual reason those workloads fail elsewhere.
Pourquoi Nested virtualisation est important
Elle est requise pour Proxmox VE, les travaux d'intégration continue basés sur des machines virtuelles et certaines configurations Docker. De nombreux fournisseurs la désactivent, ce qui est la raison habituelle pour laquelle ces charges de travail échouent ailleurs.
Nested virtualisation en pratique
Lorsque vous exécutez de la virtualisation imbriquée, vous démarrez un hyperviseur dans un invité KVM et transmettez les extensions de virtualisation du processeur hôte. Vous vérifierez /proc/cpuinfo dans l'invité pour les drapeaux svm ou vmx. S'ils sont absents, votre hyperviseur interne retombe à l'émulation logicielle, ce qui peut réduire les performances d'un ordre de grandeur. Vous devrez peut-être aussi activer le type de CPU 'host' plutôt qu'un modèle générique pour obtenir ces drapeaux. Se tromper et vos charges de travail Proxmox ou CI rampent.
Ce qu'on comprend mal à propos de Nested virtualisation
Les gens supposent que la virtualisation imbriquée ne compte que pour exécuter des systèmes d'exploitation complets comme Windows dans une VM. La correction : elle casse aussi la mise en réseau par défaut en overlay de Docker et certains modules du noyau, car ceux-ci dépendent des fonctionnalités de virtualisation dans l'invité. Ainsi, une charge de travail conteneurisée peut échouer chez un fournisseur qui désactive l'imbrication, même si vous n'aviez jamais prévu d'exécuter une VM.
Nested virtualisation — questions fréquentes
Puis-je exécuter Docker dans une VM imbriquée ?
Oui, et c'est la raison la plus courante pour laquelle les gens ont besoin de la virtualisation imbriquée. La mise en réseau par défaut de Docker utilise iptables et des modules du noyau qui peuvent se comporter différemment sans extensions de virtualisation CPU exposées. Nos plans KVM incluent la virtualisation imbriquée, donc vos conteneurs Docker fonctionnent comme prévu.
Comment vérifier si la virtualisation imbriquée est activée ?
Dans votre VM, exécutez grep -E '(svm|vmx)' /proc/cpuinfo. Si vous voyez les drapeaux, l'imbrication est disponible. Sinon, l'hyperviseur ne les expose pas, ce qui signifie généralement que le fournisseur l'a désactivée.
Où Nested virtualisation intervient
- Puis-je exécuter de la virtualisation imbriquée sur un VPS ? Oui. La virtualisation imbriquée est activée sur chaque instance OnionVPS, vous pouvez donc exécuter des invités KVM à l'intérieur de votre instance, insta…
- Quel est le VPS le moins cher qui soit réellement utilisable ? Environ 4 $ par mois achète 1 vCPU, 1 Go de RAM et 20 Go de NVMe sur une vraie virtualisation KVM. C'est réellement suffisant pour un VPN WireGuard, un rés…
- Qu'est-ce que la virtualisation KVM ? KVM (machine virtuelle basée sur le noyau) est une virtualisation matérielle complète intégrée au noyau Linux, utilisant des extensions de processeur pour …
- KVM vs OpenVZ : pourquoi le type de virtualisation compte KVM est une virtualisation matérielle complète : votre instance exécute son propre noyau et ne peut pas voir l'hôte. OpenVZ et LXC sont des technologies de…
Plus de virtualisation
- KVM
- KVM est une virtualisation matérielle complète intégrée au noyau Linux, donnant à chaque invité son propre noyau et une isolation renforcée par le matériel vis-à-vis des autres locataires.
- OpenVZ
- OpenVZ est une virtualisation par conteneurs dans laquelle chaque instance partage le noyau hôte, de sorte que les invités ne peuvent pas charger de modules noyau ni exécuter un système d'exploitation différent.
- LXC
- LXC est la conteneurisation native de Linux qui isole les processus avec des espaces de noms et des cgroups tout en partageant le noyau hôte.
- Hyperviseur
- Un hyperviseur est la couche logicielle qui crée et exécute des machines virtuelles, allouant les CPU physiques, la mémoire et les entrées-sorties entre elles.
- vCPU
- Un vCPU est un processeur virtuel présenté à un invité, adossé au temps d'ordonnancement sur un cœur ou un thread physique.
- cloud-init
- cloud-init est le mécanisme standard pour configurer une machine virtuelle au premier démarrage, en utilisant des métadonnées fournies par la plateforme.