Существует ли в Linux значение типа UUID, которое может однозначно идентифицировать экземпляр виртуальной машины? - PullRequest
3 голосов
/ 04 января 2012

У меня есть приложение, которое работает в Linux.Каждый из них будет пытаться получить UUID из операционной системы и отчитаться на централизованном сервере.Я хочу убедиться, что все экземпляры работают с глобально уникальным UUID.

Если Linux работает на голом железе, он может просто прочитать UUID (скажем, из команды dmidecode).Но если он находится на виртуальной машине, UUID (из dmidecode) потенциально может быть равен, поскольку виртуальную машину можно копировать или перемещать.

Есть идеи?

Кстати, для Linux, работающего на физическом оборудовании(не на ВМ), если пользователь изменит память, NIC и т. д., изменится ли UUID?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 09 января 2012

Если Linux работает на голом железе, он может просто прочитать UUID (скажем, из команды dmidecode).Но если он находится на виртуальной машине, UUID (из dmidecode) потенциально может быть равен, поскольку виртуальная машина может быть скопирована или перемещена.

На самом деле это не относится к продуктам VMware.UUID BIOS (возвращаемый dmidecode) используется в качестве свойства UUID инвентаризации хостов ESX и vCenter, и дублирование UUID не разрешено в одной и той же системе.Это означает, что только один компьютер может иметь этот UUID на vCenter или на хост, если vCenter нет.Я использовал этот UUID в качестве идентификатора в прошлом с успехом.

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

Рабочая станция использует ту же структуру данных, что и ESX / vCenter, поэтому я ожидаючто оно имеет такое же ограничение.

2 голосов
/ 04 января 2012

Если ваш UUID не нужно привязывать к конкретной установке ОС, просто сгенерируйте его для вашего конкретного приложения, используя uuid_generate и друзей.Из того, что вы уже написали, похоже, что это может быть хорошим решением для вашего варианта использования.

1 голос
/ 13 ноября 2015

Linux

root@vmtest:~#dmidecode | grep -i uuid | awk '{print $2}' | tr '[:upper:]' '[:lower:]'

564d7abb-2403-eb3b-2fde-81cd440fc49b

In Esxi

cat vmtest.vmx
...
uuid.bios = "56 4d 7a bb 24 03 eb 3b-2f de 81 cd 44 0f c4 9b"
...

SNMP Esxi

iso.3.6.1.4.1.6876.2.1.1.10.<vmID> = = STRING: "564d7abb-2403-eb3b-2fde-81cd440fc49b"
...