Est-il possible de configurer une machine virtuelle à l'intérieur d'une autre machine virtuelle

30

J'ai joué avec des machines virtuelles latley, et je me demandais si je pouvais exécuter une machine virtuelle à l'intérieur d'une machine virtuelle?
C'est possible?
Est-ce pratique?

Testeur101
la source
3
Une raison pratique est que vous louez un serveur. Que le serveur soit physique ou virtuel n'a pas d'importance - c'est mon serveur. Et si je veux installer VirtualPC ou Virtual Server sur mon serveur: c'est mon affaire.
Ian Boyd
2
Ce n'est pas vraiment une raison pratique, car le "caractère pratique" de l'installation d'une machine virtuelle à l'intérieur d'une machine virtuelle dépendra en fin de compte s'il est "pratique" de mettre en œuvre cette capacité dans la plate-forme HW + SW choisie. Ce n'est pas parce que quelqu'un «veut» le faire que c'est pratique.
Joe Internet
1
Pour tous ceux qui se demandent pourquoi on pourrait vouloir faire ça, voici ma raison, bien que j'admette que ce n'est pas une raison "du monde réel" et que je ne peux pas vraiment penser à l'une d'entre elles. J'étudie pour l'examen RHCSA mais je n'ai pas accès à un système avec virtualisation matérielle. Par conséquent, j'espérais accomplir cela sur une machine virtuelle RHEL fonctionnant en tant qu'instance Amazon AWS. Étant donné que la machine AWS est (presque certainement) une machine virtuelle elle-même, l'exécution de KVM dessus nécessiterait des machines virtuelles imbriquées.
Stephen C

Réponses:

27

L'imbrication de VM est quelque chose qui a été fait pour toujours sur le matériel IBM Mainframe. Ce matériel fait beaucoup de choses pour rendre le processus très très efficace. Vous pouvez avoir des VM imbriquées à une profondeur arbitraire et cela fonctionne très bien.

Le matériel PC a très récemment rendu cela à peine possible. Un document sur le site Web de VMware en parle, mais l'essentiel est que vous pouvez avoir des machines virtuelles imbriquées à 2 profondeurs, mais uniquement sur du matériel très moderne qui prend en charge une véritable virtualisation matérielle (VT-x ou AMD-V), et la deuxième profondeur de machine virtuelle doit être exécuter l'ancienne virtualisation de style de traduction BT / binaire. Il existe également de sévères restrictions sur les moniteurs virtuels que vous pouvez exécuter sur l'invité interne.

Inutile de dire que ce n'est pas pris en charge et je m'attendrais à ce qu'il soit vraiment floconneux si vous faites quoi que ce soit même à distance bizarre (comme Hyper-V sous ESX). Et les performances ne seront pas bonnes, qu'elles soient stables ou non.

chris
la source
2
Ce document a considérablement changé depuis sa rédaction, tout comme l'état de l'art. Cette réponse, telle qu'elle a été écrite, n'est vraiment pas applicable aujourd'hui. Pensez à le mettre à jour.
Michael Hampton
1
@MichaelHampton Vos commentaires sont très sceptiques et très optimistes; pourriez-vous fournir une réponse mise à jour ou un lien vers une réponse?
ILMostro_7
Voici un lien vers une page fedora-wiki décrivant comment activer la virtuosité imbriquée dans KVM .
ILMostro_7
1
Juste pour confirmation - En ce qui concerne l'offre Hyper-v de MS, je pense que la VM imbriquée n'est pas prise en charge jusqu'à ce jour.
RBT
2

Oui, vous pouvez. Par exemple, sous Linux, vous pouvez exécuter Xen avec plusieurs machines virtuelles exécutant OpenVZ, VirtualServer ou un autre type de système de machine virtuelle. C'est très certainement possible et aussi très pratique selon votre objectif.

L'une des raisons pour lesquelles je pourrais penser à cela est d'exécuter plusieurs serveurs sur une seule machine physique. Que vous l'exécutiez en tant que niveau unique de hiérarchie de machines virtuelles ou en plusieurs dépend de votre plan d'isolation des ressources.

sybreon
la source
2

Si vous avez besoin d'un système spécifique, par exemple hérité, à virtualiser, vous pouvez toujours le faire dans le logiciel, l'imbrication n'est pas un problème alors. Essayez qemu, je l'ai fait au niveau 2 avec, mais vous pouvez aller plus loin, les performances le rendront probablement inutile, cependant. BTW, l'architecture PC était un présage fait par IBM, mais pour des utilisations totalement différentes de ce à quoi elle est utilisée aujourd'hui.

MichaelS
la source
1

Je ne pense pas que la plupart des packages de virtualisation vous permettront d'exécuter une machine virtuelle dans une machine virtuelle. Je sais que VMware vérifiera quand il est installé pour voir s'il est installé sur une machine virtuelle, et j'espère que d'autres produits feront de même. Je ne pense pas que les instructions CPU nécessaires seraient présentées à partir de l'hyperviseur fonctionnant sur le matériel jusqu'à la VM pour atteindre la deuxième VM. Si cela fonctionnait, vous ajouteriez également des frais généraux sans rien obtenir en retour.

Quant à savoir si c'est pratique - je ne vois pas pourquoi. Si vous avez besoin d'une autre machine virtuelle, vous pouvez simplement l'exécuter à côté de celle que vous avez déjà en cours d'exécution. Je ne peux pas imaginer un cas où vous devez avoir une machine virtuelle exécutée dans une autre machine virtuelle. Les frais généraux supplémentaires sans un gain proportionnel de certaines ressources rendraient cela impossible.

baumgart
la source
1

Oui. Il existe même des moyens d'exécuter VMware ESX / vSphere sur une machine virtuelle. Je ne sais pas pourquoi vous voudriez jamais en pratique, mais cela a été fait.

Kevin Kuphal
la source
J'ai vu des gens vouloir tester ESX dans une machine virtuelle, mais l'installation nécessite un travail supplémentaire au-delà de la méthode d'installation normale. Ce n'est pas quelque chose qui fonctionne hors de la boîte.
baumgart le
1

Oui, vous POUVEZ, mais comme tant de choses ne signifie pas que vous devriez. J'ai vu un serveur ESX virtualisé exécutant une machine virtuelle qui contient un autre serveur ESX virtuel. Certes, c'était un test juste pour voir si cela pouvait être fait (et c'est possible), je ne le recommanderais vraiment pas.

SQLChicken
la source
1

Cela dépend de la technique de virtualisation. Si vous utilisez des solutions qui ne sont pas de la "vraie" virtualisation comme UML, vous pouvez les exécuter à l'intérieur, par exemple, VMWare. Ou eux-mêmes d'ailleurs.

Les installations basées sur UML peuvent s'exécuter à l'intérieur de VM VMWare et d'autres installations basées sur UML (même imbriquées). Les mesures de performances ne seront pas belles cependant!

David Spillett
la source
1

Oui, c'est possible mais vraiment lent.

C'est particulièrement utile si vous louez un serveur avec une IP publique allouée limitée (qui dépend par exemple de votre adresse MAC pour ne pas empoisonner le réseau de votre fournisseur de serveur); et que vous souhaitez que votre IP VM soit pontée pour communiquer directement avec Internet. Donc, lorsque vous ne pouvez pas avoir plus de, par exemple, 3 adresses IP publiques, mais que vous avez besoin de 10 VM, c'est une assez bonne idée d'avoir des VM dans une VM globale: vous n'utiliserez qu'une seule de vos IP publiques données, puis ont de nombreuses machines virtuelles sous-pontées.

Mais vous pouvez réellement utiliser un mélange de configuration de pont et de réseau routé, c'est juste plus difficile en ce qui concerne la configuration.

Yannovitch
la source
0

Pour autant que je sache, ce n'est pas possible, mais VMware ESX peut fonctionner dans VMware Workstation par exemple. À mon humble avis, il n'est bon que pour les tests.

Saabi
la source
0

Comme beaucoup de gens l'ont déjà dit: bien sûr, c'est possible. Cela dépend de la qualité de l'émulation du matériel VM et du logiciel de virtualisation que vous utilisez. VMWare Workstation, au moins, ne veut pas que vous le virtualisiez.

Quant à savoir si c'est pratique, nous devrions peut-être vous poser la question: pourquoi auriez-vous besoin de faire ce genre de chose? Qu'y a-t-il de mal à simplement exécuter deux VM côte à côte? Et dans quelle mesure demandez-vous si c'est pratique? Autrement dit, si vous craignez qu'il soit pratique d'installer et de configurer, probablement pas. Si vous êtes plus préoccupé par son utilisation pratique, encore une fois, je ne peux penser à rien pour quoi je devrais faire à moins que je ne recherche des bogues dans le logiciel de virtualisation ou quelque chose.

mrduclaw
la source
0

Vous pouvez, mais je ne le recommande pas.

Les performances sont généralement fortement affectées dans l'ensemble de ce processus sur la machine "invité de l'invité". Si vous devez vraiment le faire sans le matériel et les logiciels spécialisés, bonne chance à vous. Cependant, ce n'est généralement pas une bonne pratique, en particulier avec les méthodes courantes utilisées pour réaliser la virtualisation.

Je sais que si vous essayez d'exécuter VMWare dans des systèmes VMWare, il se plaindra et ne vous laissera pas le faire. Je ne suis pas sûr de VirtualBox. Je connais quelques personnes qui, pour une raison quelconque, déploient des conteneurs Docker dans des conteneurs Docker (ou du moins disent-ils). La morale de l'histoire est la suivante: bien que cela soit possible, ce n'est probablement pas intelligent de le faire à moins de vraiment savoir ce que vous faites.

Je ne connais personnellement aucun cas d'utilisation réel pour cela au-delà du réseautage.

Juggernaut mythique
la source
2
Le matériel "spécialisé" dont vous avez besoin est pratiquement n'importe quel processeur fabriqué au cours des sept ou huit dernières années.
Michael Hampton