5 votes

A quel point la virtualisation est-elle virtuelle ?

En lisant différents documents sur différents sujets, je reviens de temps en temps sur la question suivante : La virtualisation est-elle vraiment virtuelle ? Par "virtualisation", j'entends des choses comme Virtual PC et VMWare, qui vous permettent d'exécuter un système d'exploitation invité. En particulier, ce que je ne comprends pas, c'est :

  • La machine virtuelle fournit-elle un environnement qui est fondamentalement indiscernable d'une machine physique ? Bien sûr, il y aura quelques différences pratiques (comme les échappatoires d'appel de l'hyperviseur, les noms de composants matériels factices, etc.) qui permettront de détecter une machine virtuelle, mais y aura-t-il des incompatibilités ?
  • Si l'environnement est entièrement compatible avec une machine physique, les machines virtuelles imbriquées sont-elles possibles ?
  • Si ce n'est pas le cas, cela signifie-t-il que le système d'exploitation invité doit être spécifiquement adapté pour fonctionner dans une machine virtuelle ? Si oui, cela signifie-t-il que la plupart des systèmes d'exploitation actuels ont déjà été adaptés pour la plupart des fournisseurs de machines virtuelles ?
  • Ces éléments sont-ils différents selon qu'il s'agit de virtualisation logicielle ou matérielle ?
  • Quelle est la différence exacte entre la virtualisation basée sur le logiciel et celle basée sur le matériel ?

6voto

zneak Points 1019

Pour autant que je sache :

  • Des études ont été menées sur la possibilité d'un un "rootkit indétectable" dans lequel un hyperviseur malveillant s'interpose entre votre ordinateur et le matériel. . Les entreprises de sécurité (et les fournisseurs de processeurs) étaient furieux que quelqu'un ait conçu quelque chose de ce genre et ait dit que personne ne pouvait le détecter. Ils ont donc trouvé un moyen d'utiliser des fonctions de chronométrage et de comparer les résultats avec une source externe. La virtualisation est donc presque indétectable, mais si vous prêtez vraiment attention aux petits détails et que vous avez une référence externe, il y a sont des moyens de savoir que vous êtes en train d'être virtualisé. Cela ne devrait pas causer d'incompatibilité, cependant.
  • Ce n'est pas le cas. Votre CPU virtualisé n'a pas les mêmes capacités que votre CPU physique. Les instructions de virtualisation d'Intel ne sont disponibles que pour l'OS hôte, par exemple. Cela ne signifie pas pour autant que vous ne pouvez pas avoir une machine virtuelle à l'intérieur d'une machine virtuelle : cela signifie simplement que ce sera très lent.
  • Les systèmes d'exploitation ne doivent pas être adaptés aux machines virtuelles. C'est plutôt l'inverse.
  • Oui, ils le sont dans une certaine mesure. La virtualisation logicielle fonctionnera toujours. La virtualisation matérielle n'est généralement pas transitive (les OS invités ne peuvent pas utiliser la virtualisation matérielle pour héberger d'autres OS invités).
  • Il doit y avoir plus que cela, mais je pense que c'est un bon début.

2voto

J-16 SDiZ Points 313

Permettez-moi de répondre point par point :

1 La machine virtuelle fournit-elle un environnement qui est fondamentalement indiscernable d'une machine physique ? Bien sûr, il y aura quelques différences pratiques (comme les échappatoires d'appel de l'hyperviseur, les noms de composants matériels factices, etc.) qui permettront de détecter une machine virtuelle, mais y aura-t-il des incompatibilités ?

Si vous ignorez les "échappatoires d'appel de l'hyperviseur, les noms de composants matériels factices", toutes les autres différences sont considérées comme des bogues. ... sauf, voir ci-dessous.

2 Si l'environnement est entièrement compatible avec une machine physique, les machines virtuelles imbriquées sont-elles possibles ?

Cela dépend. Si vous utilisez la virtualisation matérielle, vous ne pouvez pas exécuter l'hyperviseur sous l'hyperviseur. (en théorie, vous pouvez émuler cela aussi, mais personne ne se soucie assez de faire ce travail désordonné).

3 Si ce n'est pas le cas, cela signifie-t-il que le système d'exploitation invité doit être spécifiquement adapté pour fonctionner dans une machine virtuelle ? Si oui, cela signifie-t-il que la plupart des systèmes d'exploitation actuels ont déjà été adaptés pour la plupart des fournisseurs de machines virtuelles ?

Vous l'avez vénéré. Nous avons eu l'OS avant la machine virtuelle. La machine virtuelle s'adapte au système d'exploitation, et non l'inverse. (il y a quelques exceptions, par exemple les anciennes versions de Xen, mais ce sont des exceptions).

4 Ces éléments sont-ils différents pour la virtualisation basée sur le logiciel et celle basée sur le matériel ?

voir 2.

5 Quelle est la différence exacte entre la virtualisation basée sur le logiciel et celle basée sur le matériel ?

voir 4.

2voto

Pour autant que le système d'exploitation invité le sache, il fonctionne sur du matériel réel. L'intérêt de la virtualisation est qu'on ne peut pas ont pour changer quoi que ce soit sur l'invité.

VMWare (par exemple) fournit des outils et des pilotes à charger dans l'invité, mais ils ne sont pas nécessaires dans une machine isolée. Ils permettent de faire du glisser-déposer entre l'hôte et l'invité et offrent d'autres fonctionnalités intéressantes, mais ils ne sont pas nécessaires pour faire fonctionner un invité.

IBM a en fait été le pionnier de la virtualisation avec son produit VM (aujourd'hui z/VM) qui peut faire fonctionner avec succès d'autres copies de z/VM, faisant fonctionner encore d'autres copies de z/VM sous z/OS et zLinux.

Bien sûr, il peut y avoir certaines limitations sur l'implémentation réelle de la VM, l'exemple classique étant l'incapacité de VMWare à faire tourner OS/2, alors qu'il fonctionne très bien sur un vrai CPU.

Mais il s'agit d'une limitation du produit, et non du concept de virtualisation.

En ce qui concerne les différences entre le matériel et le logiciel, la virtualisation matérielle consiste simplement à utiliser un aspect du processeur réel (ou d'un autre matériel) pour aider. La virtualisation purement logicielle n'est en fait qu'une émulation (et généralement très lente par rapport à l'alternative).

2voto

John Points 233

Les machines virtuelles tentent de fournir un environnement suffisamment bon pour exécuter le système d'exploitation invité et les applications. Il est pratiquement impossible de fournir un environnement qui ne soit pas distingué du physique, car il existe des effets de synchronisation qui sont très difficiles à cacher (du moins dans une VM qui fonctionne efficacement).

Les machines virtuelles imbriquées sont possibles avec des VM qui sont purement émulées (par exemple Bochs), mais Virtual PC et et VMware utilisent un support matériel qui n'est pas conçu pour l'imbrication.

La virtualisation basée sur le logiciel émule chaque instruction du CPU (parfois, les solutions basées sur le logiciel utilisent l'anneau 1 pour exécuter nativement le code de l'anneau 0 comme une optimisation et cette astuce ne peut pas être imbriquée).

La virtualisation basée sur le matériel utilise un mode spécial dans le processeur conçu pour passer le contrôle à un hyperviseur et définir un niveau supplémentaire de tables de pages.

1voto

A priori, les logiciels de virtualisation émulent le HAL (couche d'abstraction matérielle) de manière transparente, de sorte que le système d'exploitation invité n'a aucune idée de la différence, c'est-à-dire que des systèmes d'exploitation normaux sont utilisés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X