Choisir un logiciel de machine virtuelle sous Linux

Il existe de nombreux logiciels de machines virtuelles. Même certains sont inclus dans la ligne principale Linux.

Qu'est-ce qui les différencie, et quels critères doit-on considérer en choisissant un?

Les outils plus professionnels, tels que VirtualBox (alias xVM) et VMWare, prennent en charge plusieurs clichés et un clonage «fin».

VMWare a également une accélération 3D limitée, l'intégration avec le debugging Eclipse (permet de déboguer les applications à l'intérieur de la machine virtuelle depuis l'extérieur de la machine virtuelle), les fonctionnalités de réseau virtuel, la prise en charge multimonitor et la fonctionnalité d'logging / relecture. et dans quelle séquence toutes les instructions s'exécutent).

VirtualBox et la machine virtuelle du kernel sont beaucoup plus faciles à travailler parce que vous n'avez pas à comstackr un pilote du kernel. Ils sont également libres, tandis que VMWare coûte environ 190 $. Le KVM est complètement open source, alors que seulement certaines parties de VirtualBox le sont.

D'après mon expérience, les performances des différents outils de virtualisation sont à peu près les mêmes partout, avec un léger avantage par rapport à VirtualBox et VMWare par rapport au KVM. Votre kilométrage peut varier en fonction de votre configuration matérielle et système.

Enfin, si vous envisagez de virtualiser un groupe de servers, considérez un operating system basé sur un hyperviseur comme base plutôt que Linux, comme ESXi de VMWare, HyperV de Microsoft ou Xen de VMWare. Ceux-ci offrent généralement des choses comme la migration en direct, le partage de la memory et la tolérance aux pannes, et ont less de frais généraux. Cependant, ils ne peuvent généralement pas être utilisés à partir de l'ordinateur sur lequel ils s'exécutent, mais s'appuient plutôt sur des outils de gestion à distance, tels que vSphere ou System Center. Ces trois hyperviseurs sont gratuits. VMWare charge quelques 3k $ pour accéder à toutes les fonctionnalités intéressantes. Les solutions de Microsoft et de Xen sont entièrement présentées dans le produit gratuit. (La solution de Microsoft ne fonctionne pas très bien à less que vous ayez déjà déployé Active Directory)

Voici quelques critères évidents que je considère, d'un sharepoint vue laïque. Avertissement: Je ne sais rien des machines virtuelles, je les utilise. J'ai de l'expérience avec Xen , VirtualBox , Linux Containers , VMware et Linux-Vserver . VMware est propriétaire, les autres sont des logiciels libres. Tous ces éléments nécessitent un support spécial du kernel. Linux Containers est le seul qui est pris en charge par le kernel principal.

Selon l'article utile de Joe Brockmeier, il y a à peu près deux aspects différents de la virtualisation. Un où il y a un operating system invité à part entière qui s'exécute sur le dessus de votre operating system hôte. C'est ce qu'on appelle la hypervisor virtualization . Si l'invité est aussi Unix, cela signifie que l'invité exécute un kernel Unix différent de l'hôte. C'est le cas même s'ils sont à la fois Linux ou même la même dissortingbution. La seconde est où la machine virtuelle invitée utilise le même kernel que le operating system hôte. C'est ce qu'on appelle la container-based virtualization . Dans ce qui suit, j'appellerai ces hypervisors et containers pour faire court.

Parmi ceux que j'ai mentionnés ci-dessus, Xen, VirtualBox et VMWare sont des hypervisors , Linux Containers et Linux-Vserver sont des containers .

Évidemment, il y a des compromis dans ce domaine. La principale différence est que pour les hypervisors , vous pouvez exécuter n'importe quel operating system qui prend en charge le matériel, c'est-à-dire que vous pouvez exécuter Windows en haut de Linux. Pour les containers , le kernel hôte, qui est le seul «OS» de l'image, fait de l'isolation et de la gestion des ressources. Dans ce cas, la machine virtuelle est une sorte de construction artificielle, et l'abstraction peut être fuyante, en ce sens que la virtualisation peut être less que parfaite, ce qui peut causer des problèmes gênants. Par exemple. vous pouvez constater que l'exécution d'un service sur le port x dans votre machine virtuelle interfère avec quelque chose en cours d'exécution sur le port x dans l'hôte.

Donc, certains problèmes spécifiques à considérer, renvoyant à ces deux types que possible.

Premièrement (en supposant que vous utilisez Linux, comme le dit la question), est-ce que votre invité est une dissortingbution Linux ou un autre operating system? Si le premier, les containers sont une option, sinon ce n'est pas le cas. Même si c'est une option, elle peut être ou ne pas être réalisable en pratique, selon le support / les recettes que les mainteneurs de logiciels de virtualisation offrent pour créer des OS invités pour différentes dissortingbutions. À less que vous ne vouliez essayer de rouler votre propre, c'est. En théorie, il est généralement possible, puisque le kernel Linux n'est que très faiblement couplé à l'espace-utilisation environnant. Donc, n'importe quel kernel "récent" fonctionnera avec n'importe quelle dissortingbution.

Le logiciel en question exige-t-il que le kernel soit patché ou est-il nativement supporté par le kernel? Si cela nécessite un correctif, c'est un inconvénient majeur, car cela signifie que les correctifs doivent être synchronisés avec le kernel changeant. Si la fonctionnalité est déjà présente dans le kernel, cela ne pose pas de problème. Bien sûr, certaines machines virtuelles ne nécessitent pas de support du kernel et s'exécutent dans l'espace user. Il y a relativement peu de machines de virtualisation qui nécessitent un support spécial du kernel et qui ont ce support dans le kernel principal. Les deux seuls que je connais sont conteneurs Linux ( container ), et KVM ( hypervisor ).

La taille de la communauté des users. C'est surtout un problème quand il nécessite un kernel patché. Dans ce cas, la main-d'œuvre pour garder ce projet hors du kernel et s'assurer que tout fonctionne correctement peut ne pas exister.

Le logiciel de la machine virtuelle est-il un logiciel propriétaire ou libre? S'il est propriétaire, il ne sera jamais inclus dans le kernel Linux. Bien sûr, selon votre philosophie, vous pouvez en find un de preference par rapport à l'autre pour des raisons idéologiques.

Performances de virtualisation. À quelle vitesse est-ce? Généralement, les containers sont plus rapides que les hypervisors , bien que la différence puisse ne pas être significative.

Permet-il de partager la memory avec d'autres process du système ou requirejs-il une memory dédiée? À mon avis, permettre de partager de la memory est agréable car cela signifie que vous n'avez pas à couper cette memory du rest du système. Si vous pouvez partager de la memory, vous pouvez exécuter plus de machines virtuelles que si vous ne le pouvez pas. Par définition, les hypervisors ne permettent pas de partager la memory, car ils sont séparés par un OS. En général, les containers permettent la memory partagée, encore une fois, parce que c'est le même operating system, bien que vous puissiez également définir des limites de memory. Il est également possible d'allouer un bloc de memory dédié, même si je n'ai jamais essayé de le faire.

Le niveau d'isolation par rapport au rest du système. Certaines machines virtuelles diffèrent dans ce domaine. Idéalement, vous ne voulez pas que la machine virtuelle soit informée ou interagisse de quelque manière que ce soit avec le système hôte ou d'autres systèmes invités. Par définition, les hypervisors sont complètement isolés. Le niveau d'isolation des containers varie en fonction de la mise en œuvre. Les mises en œuvre varient considérablement à cet égard.