Относительно ваших опасений по поводу дублирующих хостов:
В отличие от Solaris, ядро Linux не обеспечивает вызов gethostid. Вместо этого «gethostid» (используемый программой /usr/bin/hostid
) реализуется glibc , который пытается:
- Определите, существует ли фиксированный файл (
/etc/hostid
в моей системе); если да, то использует 4-байтовое значение там;
- Если этого не сделать, попытается создать хост на основе IP-адреса системы;
- Если это не так, используется хост
0
.
Это означает, что если каждая система имеет уникальный IP-адрес, она также будет иметь уникальный хост.
Если ваши системы не имеют уникальных IP-адресов, вы все равно можете переопределить хост, используя sethostid
библиотечный вызов glibc (который записывает в файл, считанный с помощью шага (1) алгоритма gethostid
glibc выше). 1024 *
Относительно получения zoneid экземпляра KVM:
В отличие от зон Solaris (где все экземпляры совместно используют одно и то же ядро), каждый экземпляр KVM запускает свою собственную копию ядра Linux, и все они не обращают внимания на другие запущенные экземпляры. Насколько мне известно, прямого эквивалента zoneid Solaris не существует, поскольку каждый экземпляр Linux не имеет возможности сотрудничать с другими экземплярами Linux.
Если вам нужен уникальный идентификатор для каждого работающего экземпляра KVM, некоторые параметры:
Просто установить IP-адрес / хост, как описано выше;
При настройке / загрузке ваших экземпляров сгенерируйте UUID для системы, используя uuidgen
, и сохраните его в безопасном месте в файловой системе. Такие сгенерированные UUID никогда не будут совпадать с другими UUID с очень высокой вероятностью;
При загрузке каждого экземпляра вашей системы передайте в командной строке ядра созданный вручную уникальный идентификатор для экземпляра (используя аргумент командной строки -append
KVM). Это можно получить позже от /proc/cmdline
.