UUIDは様々な用途で利用される識別子(ID)のアーキテクチャです。
何らかの外部システムによる統制が不要でありながら、それぞれが重複しない、
ユニークであることが保証されたIDとして広く使われています。
UUIDは128bitの数値であり、以下のように16進数化した文字列での表現で一般的に利用されています。
8c89a40b-328b-44e2-849b-de7668c64f32
ディスクやユーザ管理上のアカウントなどどんなデータであっても、
UUIDを識別子として利用することで、全世界・過去未来のいかなる時点においても
そのデータを個別に識別することが可能となります。
通常UUIDはシステムが内部的に生成するものであって、
利用者が直接生成することはあまりありませんが、
以下のようにuuidgenコマンドで生成することが可能です。
% uuidgen 42573ba6-0f22-4ada-a3c9-b3800d6c355c
用途としては、Xenやkvm(qemu)の設定ファイルを(virt-cloneなどを使わずに)コピーして使う場合に、
内部で記述されているUUIDを別のものに置き換える場合などがあります。
<domain type='kvm'> <name>centos5_0</name> <uuid>88f03b2d-539c-8d4a-0aa0-e5beccd0d0f0</uuid> <memory>524288</memory> <currentMemory>524288</currentMemory> <vcpu>2</vcpu> ...
その他、UUIDは広く利用されているので、システムを設定・変更する場合などに、生成が必要となる局面があるでしょう。
uuidgenは、Ubuntuではパッケージuuid-runtimeに含まれています。
CentOS5ではパッケージe2fsprogsに含まれています。
CentOS6ではパッケージutil-linux-ngに含まれています。
UUIDには内部的な生成方法の種別として、いくつかのバージョンを持っています。
一般的に利用されるのは、識別子の生成を実行するマシンのネットワークインターフェイスの
MACアドレスと時間をベースとしたVersion 1と、疑似乱数をベースとしたVersion4です。
その中でも通常は疑似乱数のVersion4が利用されます
(実際の利用にあたってバージョンによる機能の差異などはありません)。
uuidgenコマンドでも、Versionをオプションで指定して生成することができます。
% uuidgen -t 07eb7bbc-f4ce-11e2-86e1-0800272a2ce7 % uuidgen -t 077f3a6a-f4ce-11e2-9267-0800272a2ce7
% uuidgen -r 4fcc7254-322a-45e3-a3e6-ca3baefef71b % uuidgen 08d5ee35-d0d8-4fbd-ab78-c8255fb5c2ea
Version 1ではハイフンで区切られた最後の文字列が同じになっていますが、
これがMACアドレスから生成した部分です。
Version 4は基本的にはすべて乱数なので同じ文字列になる部分がありません。
そのUUIDがVersion 1か、Version 4かを見分けるには、
ハイフン区切りの3つめの先頭の数字に着目します。
それぞれがバージョンの数字を示しています。
以上、UUIDをコマンドラインから生成する方法についてでした。