このエントリーをはてなブックマークに追加


UUIDの基本

UUIDは様々な用途で利用される識別子(ID)のアーキテクチャです。
何らかの外部システムによる統制が不要でありながら、それぞれが重複しない、
ユニークであることが保証されたIDとして広く使われています。

UUIDは128bitの数値であり、以下のように16進数化した文字列での表現で一般的に利用されています。

8c89a40b-328b-44e2-849b-de7668c64f32

ディスクやユーザ管理上のアカウントなどどんなデータであっても、
UUIDを識別子として利用することで、全世界・過去未来のいかなる時点においても
そのデータを個別に識別することが可能となります。


スポンサーリンク

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のパッケージ

uuidgenは、Ubuntuではパッケージuuid-runtimeに含まれています。

CentOS5ではパッケージe2fsprogsに含まれています。

CentOS6ではパッケージutil-linux-ngに含まれています。

UUIDの種別

UUIDには内部的な生成方法の種別として、いくつかのバージョンを持っています。
一般的に利用されるのは、識別子の生成を実行するマシンのネットワークインターフェイスの
MACアドレスと時間をベースとしたVersion 1と、疑似乱数をベースとしたVersion4です。

その中でも通常は疑似乱数のVersion4が利用されます
(実際の利用にあたってバージョンによる機能の差異などはありません)。

バージョンを指定しての生成

uuidgenコマンドでも、Versionをオプションで指定して生成することができます。

  • Version 1 (オプション: -t)
    % uuidgen -t
    07eb7bbc-f4ce-11e2-86e1-0800272a2ce7
    % uuidgen -t
    077f3a6a-f4ce-11e2-9267-0800272a2ce7
  • Version 4 (オプション: -r、もしくはオプションなし)
    % uuidgen -r
    4fcc7254-322a-45e3-a3e6-ca3baefef71b
    % uuidgen
    08d5ee35-d0d8-4fbd-ab78-c8255fb5c2ea

Version 1ではハイフンで区切られた最後の文字列が同じになっていますが、
これがMACアドレスから生成した部分です。
Version 4は基本的にはすべて乱数なので同じ文字列になる部分がありません。

バージョンの見分け方

そのUUIDがVersion 1か、Version 4かを見分けるには、
ハイフン区切りの3つめの先頭の数字に着目します。
それぞれがバージョンの数字を示しています。

  • Version 1
    07eb7bbc-f4ce-11e2-86e1-0800272a2ce7
    077f3a6a-f4ce-11e2-9267-0800272a2ce7
  • Version 4
    4fcc7254-322a-45e3-a3e6-ca3baefef71b
    08d5ee35-d0d8-4fbd-ab78-c8255fb5c2ea

以上、UUIDをコマンドラインから生成する方法についてでした。


スポンサーリンク


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:28:22 (1306d)