1

Disons que j'ai un morceau de code qui fonctionne bien sur un système d'exploitation. Maintenant, si j'installe ce système d'exploitation sur une machine virtuelle (virtualisation de serveur) et que j'exécute ce code, est-il possible que le code se comporte différemment?Un exécutable peut-il se comporter différemment lorsqu'il est exécuté sur un serveur virtualisé?

Si oui, quels sont les prérequis pour cela? Par exemple, faut-il compiler du code machine (en d'autres termes, les langages interprétés sont-ils sûrs?)? Est-ce que ce doit être certaines instructions d'OS? Technologie de virtualisation spécifique (Xen, KVM, VMware ..)?

En outre, quels sont les différents comportements possibles?

Répondre

3

Oui. Comme toute machine, la machine virtuelle est juste un autre ordinateur (implémenté dans le logiciel au lieu du matériel).

D'une part, beaucoup d'applications commerciales vont exploser lorsque vous les exécutez sur une machine virtuelle en raison de:

  1. protection contre la copie détection de la VM
  2. protection contre la copie truquer votre matériel, l'utilisation des fonctions non documentées du BIOS/Noyau/matériel

Deuxièmement, une VM est juste un autre ordinateur constitué de matériel implémenté dans l'assemblage au lieu de circuits/colorant/microcode/magie. Cela signifie que la machine virtuelle doit fournir le matériel émulé par le biais d'une transmission ou d'une émulation. Le fait que le matériel soit très divers peut entraîner toutes sortes de comportements différents. Notez également l'absence possible de pilotes ou d'accélération du matériel émulé. Mais, bien sûr, une application d'entreprise typique n'est pas aussi susceptible de s'appuyer sur des détails matériels que tout ce qu'elle appelle une API GUI.

Les langages interprétés ne sont sûrs que dans la mesure où ils sont "interprétés", si le langage interprété appelle un code natif, tout ceci est à nouveau possible. Pour un exemple de détection de l'exécution d'une machine virtuelle, cochez la case this. Il s'agit de l'un des milliers de façons de détecter la machine virtuelle.

0

En théorie, le programme doit fonctionner exactement de la même manière que sur une machine physique.

Dans la pratique cependant, il peut y avoir des différences dues à

  • Machine \ configuration OS et les pilotes
  • charge de l'hôte de la machine virtuelle.

Les différences dans la configuration de la machine sont similaires à la différence que vous verriez entre n'importe quelle machine physique de différence. En fonction de la gravité de votre application pour l'utilisateur final, vous devez exécuter le même ensemble de tests qu'une boîte physique pour déterminer si l'environnement est acceptable pour l'utilisation. En fonction de la technologie de virtualisation, l'hôte peut ne pas avoir la capacité de garantir les ressources client à des moments spécifiques. Cela peut conduire à un comportement étrange sur le client. Potentiellement, vous verriez plus d'occurrences d'erreurs d'application en raison de délais d'E/S une famine de la mémoire.

Pour réussir la virtualisation d'une application à des fins de production, vous devez effectuer un peu de travail pour comprendre le profil de ressources de l'application \ client et de l'hôte virtuel.