仮想マシンといた仮想環境が出てきまして、
仮想マシンを気軽に、コピーや複製が出来るようになりました。
この仮想マシンのコピーや複製をした時に、時々問題になったりするUUIDについて紹介します。
レジュメ
UUIDとは?
UUIDとは、「Universally Unique IDentifier」の略です。
一般的には「Windowsの場合」とか関係なしに、
全世界で2つ以上同じ値を持つことのないユニークなID
を意味します。
この一般的なUUIDの定義が、Windowsの至る所で使われています(レジストリとにもよく見かけますよね)。
- UUIDは128ビット(16バイト)の値
- UUIDの作成方法のバージョンが1から5までの5種類ある
- バージョン番号に6ビットを用いるため、固有の識別情報は122ビット
仮想マシン(VMwareとかHyper-V)で登場するUUIDとは
VMwareとかHyper-Vの仮想マシンで登場するUUIDとは、
ハードウェア(マザーボード)の中のBIOSに記録されているUUID
を示します。
簡単に言いますと、マシンハードウェアの一意のIDをUUIDと言います。
BIOS内のデータ構造(SMBIOS)とは?
SMBIOSとは、「System Managemant BIOS」の略になり、
BIOS内のデータ構造の配置(およびそのアクセスメソッド)に関する仕様でです。
このBIOSデータ構造仕様の中に、「UUID」という値があります。
詳しくは、マイクロソフトのSMBIOS3.0のフィールド情報をみてみてください。
Windows OSからUUID確認方法
仮想マシンのUUIDは、マシンハードウェアの中にありますが、
このUUIDをWindows OS上でも取得できるので、UUIDを使用しているアプリケーション等が時々あります。
そのため仮想マシンのコピーや展開方法(UUIDをコピーするか、作成しなおすか)を間違えると、思わぬトラブルに遭遇します。
また、この特性上、
物理マシンでもマザーボードを交換するとUUIDが変わるという事象が起こりえます。
方法1,コマンドプロンプトのwmicコマンド
コマンドプロンプトで
wmic csproduct get /value
を実行しますと、UUIDが表示されます。
UUID以外にも、
- どこのベンダーのマシンハードウェア(Vendor)か、
- なんていうハードウェア機種(Name)か
といった情報も、Windows OS上からわかったりします。
UUIDだけを知りたい場合は、以下のコマンドオプションになります。
wmic csproduct get uuid
方法2,PowerShellでUUIDを確認するコマンド
PowerShellにて、
(Get-CimInstance -Class Win32_ComputerSystemProduct).UUID
を実行すると、UUIDが確認できます。
Windows GUIでUUIDは確認できない?
Windows GUIでUUIDを確認する方法を探しました。
■ msinfo32
最もシステム情報がある「msinfo32」上でUUIDを探しましたが、
SMBIOSバージョン情報はありましたが、残念ながらUUID情報は見当たりませんでした。
■ レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\HardwareConfig
に、UUID情報が入っていました。
UUIDを変更する方法は?
以下に、何環境下でのUUIDを変更する方法のリンクを紹介します。
ポイントとして、仮想マシンをインポートやリストアするタイミングで、
UUIDを変更することが出来ます。