web-dev-qa-db-fra.com

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



30
Tester101

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 en profondeur, mais uniquement sur du matériel très moderne qui prend en charge la véritable virtualisation matérielle (VT-x ou AMD-V), et la seconde VM depth doit 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.

27
chris

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.

2
MichaelS

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 VM. C'est très certainement possible et également 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 la hiérarchie VM ou plusieurs) dépend de votre plan d'isolement des ressources.

2
sybreon

Je ne crois pas que la plupart des packages de virtualisation vous permettront d'exécuter un VM dans une VM. Je sais que VMware vérifiera quand il est installé pour voir s'il est installé dans une VM, et j'espère d'autres produits font de même. Je ne pense pas que les instructions CPU nécessaires seraient présentées par l'hyperviseur fonctionnant sur le matériel via le 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 un VM fonctionnant à l'intérieur d'une autre VM. La surcharge supplémentaire sans un gain proportionnel de certaines ressources rendrait cela impossible.

1
baumgart

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.

1
Kevin Kuphal

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.

1
SQLChicken

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 machines virtuelles VMWare et d'autres installations basées sur UML (même imbriquées). Les mesures de performances ne seront pas belles cependant!

1
David Spillett

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 voulez que votre VM IP soit ponté pour communiquer directement avec Internet. Donc, quand 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 machines virtuelles dans un VM: vous n'utiliserez qu'une seule de vos IP publiques données et vous aurez alors 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.

1
Yannovitch

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

0
Saabi

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 du genre.

0
mrduclaw
0
Massimo

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 que vous ne sachiez vraiment ce que vous faites.

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

0