Назад | Перейти на главную страницу

Могу ли я дать виртуальной машине уникальный идентификатор, доступный изнутри виртуальной машины?

Я хочу иметь возможность однозначно идентифицировать свои виртуальные машины изнутри виртуальной машины. Проблема в том, что в моей настройке я не могу использовать для этого MAC-адрес. Можно ли настроить другой аппаратный параметр (например, имя процессора, флаги BIOS, идентификатор материнской платы, ...), чтобы иметь уникальное значение для моей виртуальной машины, к которому я затем могу получить доступ изнутри виртуальной машины? Меня больше всего интересовали бы решения, которые работают для Xen, KVM или VMWare ESX или, в лучшем случае, для всех из них.

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

Как упоминалось в другом ответе, это не сработает, если вы продублируете виртуальную машину (включая ее конфигурацию), но в этом случае будет несложно запустить uuidgen из командной строки и заменить UUID в файле конфигурации, который используется для создания домена.

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

Попросите виртуальную машину сгенерировать и сохранить UUID / GUID:

http://www.ietf.org/rfc/rfc4122.txt

   This specification defines a Uniform Resource Name namespace for
   UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally
   Unique IDentifier).  A UUID is 128 bits long, and can guarantee
   uniqueness across space and time.  UUIDs were originally used in the
   Apollo Network Computing System and later in the Open Software
   Foundation's (OSF) Distributed Computing Environment (DCE), and then
   in Microsoft Windows platforms.

Microsoft предоставляет утилиту под названием uuidgen

В Python он встроен с версии 2.5:

http://docs.python.org/library/uuid.html

Итак, это касается вас Windows и Linux.