3

Linux で動作するアプリがあります。それぞれが OS から UUID を取得し、中央サーバーに報告しようとします。すべてのインスタンスがグローバルに一意の UUID で実行されていることを確認したいと考えています。

Linux がベア メタル上にある場合、UUID を読み取ることができます (たとえば、dmidecode コマンドから)。ただし、VM 上にある場合、VM はコピーまたは移動できるため、(dmidecode からの) UUID は潜在的に等しい可能性があります。

何か案は?

ところで、(VM ではなく) 物理ハードウェア上で実行されている Linux の場合、ユーザーがメモリ、NIC などを変更すると、UUID は変更されますか?

前もって感謝します。

4

3 に答える 3

2

Linuxがベアメタル上にある場合は、UUIDを読み取ることができます(たとえば、dmidecodeコマンドから)。ただし、VM上にある場合は、VMをコピーまたは移動できるため、(dmidecodeからの)UUIDが等しくなる可能性があります。

これは、VMware製品には実際には当てはまりません。BIOS UUID(dmidecodeによって返されるもの)は、ESXホストとvCenterのインベントリUUIDプロパティとして使用され、同じシステムでUUIDを複製することはできません。つまり、vCenterごと、またはvCenterがない場合はホストごとに、1台のマシンのみがそのUUIDを持つことができます。私は過去にこのUUIDを識別子として使用して成功しました。

プログラムを複数回実行するには、プログラムを別のホストのVMにインストールするか、まったく別のvCenterにインストールする必要があります。これは、複数のプログラムを実行するためだけに必要な非常に多くのリソースであり、ライセンス施行の収穫逓減をはるかに超えていると思います。

ワークステーションはESX/vCenterと同じデータレイアウトを使用するため、同じ制限があると思います。

于 2012-01-09T18:54:33.807 に答える
2

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"
于 2015-11-13T11:47:44.600 に答える
2

UUID を特定の OS インストールに結び付ける必要がない場合は、uuid_generateとその仲間を使用して、特定のアプリケーション用に UUID を生成してください。これまでに書いたことから、これはユースケースの優れたソリューションになる可能性があるようです。

于 2012-01-04T04:41:33.677 に答える