Linux中是否有UUIDtypes的值可以唯一标识虚拟机的实例?

我有一个在Linux中运行的应用程序。 每个人都会尝试从操作系统获取UUID并向中央服务器报告。 我想确保所有的实例都运行全局唯一的UUID。

如果linux是裸机,它可以读取UUID(比如dmidecode命令)。 但是,如果它在虚拟机上,UUID(来自dmidecode)可能是相同的,因为VM可以被复制或移动。

有任何想法吗?

顺便说一下,对于在物理硬件上运行的Linux(而不是在VM上),如果用户更改内存,网卡等,UUID是否会更改?

提前致谢。

如果linux是裸机,它可以读取UUID(比如dmidecode命令)。 但是,如果它在虚拟机上,UUID(来自dmidecode)可能是相同的,因为VM可以被复制或移动。

VMware产品实际上并不是这样。 BIOS UUID(由dmidecode返回的那个)用作ESX主机和vCenter的清单UUID属性,并且不允许在同一个系统上复制UUID。 这意味着只有一台计算机可以具有每个vCenter的UUID,如果没有vCenter,则每台主机可以具有该UUID。 我以前用这个UUID作为标识符,成功了。

要多次运行程序,他们必须将其安装在单独主机上的虚拟机中,或者安装在完全不同的vCenter中。 运行多个程序所需的资源非常多,而且我认为这远远超出了许可执行的收益递减。

工作站使用与ESX / vCenter相同的数据布局,所以我期望它具有相同的限制。

如果您的UUID不需要绑定到特定的操作系统安装,只需使用uuid_generate和朋友为您的特定应用程序生成一个。 从目前为止你所写的内容来看,这听起来像是你的用例的一个很好的解决方案。

Linux的

root@vmtest:~#dmidecode | grep -i uuid | awk '{print $2}' | tr '[:upper:]' '[:lower:]' 564d7abb-2403-eb3b-2fde-81cd440fc49b 

在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"