Может ли исполняемый файл вести себя по-разному при запуске на виртуализированном сервере? - PullRequest
1 голос
/ 01 августа 2010

Допустим, у меня есть кусок кода, который отлично работает на ОС.Теперь, если я установлю эту ОС на виртуальную машину (виртуализация сервера) и запуском этого кода на ней, возможно ли, что код ведет себя по-другому?

Если так, каковы предпосылки для этого?Например, должен ли он быть скомпилированным машинным кодом (другими словами, безопасны ли интерпретируемые языки?)?Должны ли быть определенные инструкции ОС?Специфическая технология виртуализации (Xen, KVM, VMware ..)?

Кроме того, каковы возможные варианты поведения?

Ответы [ 2 ]

3 голосов

Да. Как и любая машина, виртуальная машина - это просто другой компьютер (реализованный программно, а не аппаратно).

Например, множество коммерческих приложений взорвется, когда вы запустите их на виртуальной машине из-за:

  1. защита от копирования при обнаружении виртуальной машины
  2. защита от копирования, так как ваше оборудование использует недокументированные функции BIOS / ядра / оборудования

Во-вторых, виртуальная машина - это просто еще один компьютер, состоящий из аппаратного обеспечения, реализованного в сборке, а не схем / dye / microcode / magic. Это означает, что виртуальная машина должна предоставлять эмулируемое оборудование через сквозную передачу или эмуляцию. Тот факт, что аппаратное обеспечение очень разнообразно, может вызвать различное поведение. Также обратите внимание на возможное отсутствие драйверов или ускорение эмулируемого оборудования.

Но, конечно, типичное бизнес-приложение, например, вряд ли будет полагаться на какие-либо аппаратные детали, поскольку все, что оно делает, это вызывает некоторый GUI API.

Интерпретируемые языки защищены от этого только в той степени, в которой они «интерпретируются», если интерпретируемый язык вызывает некоторый нативный код, все это снова возможно.

В качестве примера чего-то, обнаруживающего, что он работает под виртуальной машиной, отметьте this , это всего лишь один из тысяч способов обнаружения виртуальной машины.

0 голосов
/ 01 августа 2010

Теоретически программа должна работать точно так же, как и на физической машине.

На практике, однако, могут быть различия из-за

  • Конфигурация компьютера \ ОС и драйверов
  • Загрузка хоста виртуальной машины.

Различия в конфигурации машины аналогичны разнице, которую вы видите между любыми физическими машинами.В зависимости от того, насколько критично ваше приложение для конечного пользователя, вы должны запустить тот же набор тестов, что и физический блок, чтобы определить, приемлема ли среда для использования.

В зависимости от технологии виртуализации, хостможет не иметь возможности гарантировать клиентские ресурсы в определенное время.Это может привести к странному поведению на клиенте.Потенциально вы могли бы видеть больше случаев ошибок приложений из-за тайм-аутов ввода-вывода и нехватки памяти.

Для успешной виртуализации приложения для производственного использования вам необходимо проделать небольшую работу, чтобы понять профиль ресурсов приложения \ клиентаи виртуальный хост.

...