【问题标题】:Is there a UUID type of value in Linux that can uniquely identify an instance of a VM?Linux 中是否存在可以唯一标识 VM 实例的 UUID 类型的值?
【发布时间】:2012-02-02 01:41:03
【问题描述】:

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

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

有什么想法吗?

顺便说一句,对于运行在物理硬件(而不是虚拟机)上的 Linux,如果用户更改内存、NIC 等,UUID 会改变吗?

提前致谢。

【问题讨论】:

    标签: linux virtual-machine virtualization uuid bios


    【解决方案1】:

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

    【讨论】:

    • 感谢约翰的想法。抱歉,我没有明确说明需求。这是 UUID 的预期用途。 -- 当其他人获得我的应用程序并在他的 PC 上尝试时这里需要的是系统生成的 UUID。更具体地说,应用程序将
    • 对不起,格式让我很生气。 “Enter”将导致消息被提交。又来了。感谢约翰的想法。抱歉,我没有明确说明需求。这是 UUID 的预期用途。 1)当用户获取我的应用程序并在他的 PC 上尝试时,此应用程序将提取 UUID 并要求他注册 2)当用户注册 UUID 并获得哈希时,他将使用哈希运行应用程序,然后应用程序会跑。这里 UUID 的目的是防止用户只进行一次注册并在多台 PC (linux) 上运行应用程序。
    【解决方案2】:

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

    VMware 产品实际上并非如此。 BIOS UUID(dmidecode 返回的那个)用作 ESX 主机和 vCenter 的清单 UUID 属性,并且在同一系统上不允许重复 UUID。这意味着每个 vCenter 或每个主机(如果没有 vCenter)只能有一台机器具有该 UUID。我过去曾成功使用此 UUID 作为标识符。

    要多次运行您的程序,他们必须将其安装在单独主机上的 VM 中,或者安装在完全不同的 vCenter 中。仅仅运行一个以上的程序就需要大量的资源,而且我认为这远远超出了许可证执行的收益递减。

    Workstation 使用与 ESX/vCenter 相同的数据布局,因此我希望它具有相同的限制。

    【讨论】:

    • 非常感谢埃文提供的信息。希望我能收到一封通知电子邮件。使用 UUID 的目的是防止用户获得程序的一个许可证(在 VM 中)并将 VM 复制到不同的硬件中以运行它。你是说Vmware中间件会根据实际硬件生成一个UUID,总是会生成不同的UUID?再次感谢。
    • VMware 生成特定范围内的 UUID,但它不依赖于硬件。实际上,用户可以在 .vmx 文件中或通过 API 更改 UUID。在单个 VMware 产品中不允许使用相同的 UUID - 对于 vCenter,这可能跨越其整个虚拟基础架构。在这种情况下,vCenter 将为您执行唯一 UUID,您不必担心。如果他们不使用 vCenter,他们可以将虚拟机复制到不同的主机硬件上,这样就可以了。要绕过可能比服务器便宜的许可证,这似乎还有很长的路要走。
    【解决方案3】:

    Linux

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

    在埃西

    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"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 2016-02-16
    • 2022-08-10
    • 1970-01-01
    相关资源
    最近更新 更多