【发布时间】:2013-08-19 14:36:00
【问题描述】:
我需要能够重复地、非随机地、唯一地标识一个服务器主机,它可以被任意虚拟化并且我无法控制。
- MAC 地址不起作用,因为在某些虚拟化环境中,网络接口没有硬件地址。
- 无法生成状态文件并将其保存到磁盘,因为可能会克隆虚拟机,从而复制文件。
- 服务器的 SSH 主机密钥可能是候选者。它们可以像状态文件一样被克隆,但实际上它们通常不会被克隆,因为这是一个安全问题,因此很少犯错误。
- 还有 /var/lib/dbus/machine-id,但这取决于 dbus。 (感谢 Preetam)。
- 有一个 cpuid,但显然已弃用。 (感谢 Twitter 上的 Bruno Aguirre)。
- 主机名值得考虑。像 Chef 这样的许多系统已经需要唯一的主机名。 (感谢 Alfie John)
我希望该解决方案能够持续很长时间,并且肯定会在服务器重新启动和软件重新启动时持续存在。最终,我也知道我的软件的用户会弃用主机并希望将其替换为另一个主机,但要保持与之关联的数据的连续性,因此从长远来看,UUID 可能被认为是可变的,但我不这样做'不特别希望主机开始认为自己是未知的并无缘无故地重新注册自己。
主机是否有任何替代的持久唯一标识符?
【问题讨论】:
-
解决这个问题的逻辑相当困难。例如,如果您关闭虚拟机,将其所有文件(虚拟 HD 等)复制到两台新机器上并保持不变,那么它们中的哪一个会被标记为原始主机?
-
持久化所需的持续时间是多少?
-
还有
/var/lib/dbus/machine-id,不过这要依赖于dbus。 -
我已经(我希望)进一步澄清了要求。
-
这是来自社交网络上另一个人的评论:我们选择在 [...] 中使用 SSH 密钥,如果不可用,则回退到 MAC 地址。也许你也想要一些适用于 Windows 的东西,为此我们选择了 Windows 域 SID,它“有点稳定”(如果服务器移动域,它会重新编译)。多年来,我们一直在寻找比这更好的解决方案, 就是没有。 特别是以跨平台的方式..
标签: virtualization uuid mac-address