我需要能够重复地、非随机地、唯一地标识一个服务器主机,它可以被任意虚拟化并且我无法控制。
- MAC 地址不起作用,因为在某些虚拟化环境中,网络接口没有硬件地址。
- 生成状态文件并将其保存到磁盘不起作用,因为可能会克隆虚拟机,从而复制文件。
- 服务器的 SSH 主机密钥可能是候选者。它们可以像状态文件一样被克隆,但在实践中它们通常不会被克隆,因为这是一个安全问题,它是一个不常犯的错误。
- 还有 /var/lib/dbus/machine-id,但这取决于 dbus。(感谢 Preetam)。
- 有一个 cpuid 但显然已弃用。(感谢 Twitter 上的 Bruno Aguirre)。
- 主机名值得考虑。像 Chef 这样的许多系统已经需要唯一的主机名。(感谢阿尔菲约翰)
我希望该解决方案能够持续很长时间,并且肯定会在服务器重新启动和软件重新启动时持续存在。最终,我也知道我的软件的用户会弃用主机并希望用另一个主机替换它,但要保持与之关联的数据的连续性,因此从长远来看,UUID 可能被认为是可变的,但我不这样做'不特别希望主机开始认为自己是未知的并无缘无故地重新注册自己。
主机是否有任何替代的持久唯一标识符?