3 UUIDによるデバイスのマウント #
本項では、デバイス名(/dev/sda1
など)の代わりにUUID (Universally Unique Identifier)を使用してファイルシステムデバイスを識別する方法について説明します。SUSE Linux Enterprise Server 12から、ブートローダファイルと/etc/fstab
ファイルではデフォルトでUUIDが使用されています。
3.1 udevによる永続的なデバイス名 #
Linuxカーネル2.6以降、udev
によって、永続的なデバイス名を使用した動的な/dev
ディレクトリのユーザスペースソリューションが提供されます。システムに対してデバイスを追加または削除する場合は、ホットプラグシステムの一部としてudev
が実行されます。
ルールのリストが特定デバイス属性との比較に使用されます。udev
ルールのインフラストラクチャ(/etc/udev/rules.d
ディレクトリで定義)は、すべてのディスクデバイスに、それらの認識順序や当該デバイスに使用される接続に関わらず、安定した名前を提供します。udev
ツールは、カーネルが作成するすべての該当ブロックデバイスを調べ、一定のバス、ドライブタイプ、またはファイルシステムに基づいて、ネーミングルールを適用します。udev
用の独自ルールを定義する方法については、「Writing udev Rules」を参照してください。
動的なカーネル提供のデバイスノード名に加えて、udev
は、/dev/disk
ディレクトリ内のデバイスをポイントする永続的なシンボリックリンクのクラスを保持します。このディレクトリは、さらに、by-id
、by-label
、by-path
、およびby-uuid
の各サブディレクトリに分類されます。
udev
以外のプログラム(LVMやmd
など)も、UUIDを生成することがありますが、それらのUUIDは/dev/disk
にリストされません。
3.2 UUIDの理解 #
UUID (Universally Unique Identifier)は、ファイルシステムの128ビットの番号であり、ローカルシステムと他のシステム全体に渡る固有な識別子です。UUIDは、システムハードウェア情報とタイムスタンプをそのシードの一部として、ランダムに生成されます。UUIDは、通常、デバイスに固有なタグを付けるために使用されます。
非永続的な「従来の」デバイス名(/dev/sda1
など)を使用すると、ストレージを追加したときに、システムがブートできなくなる可能性があります。たとえば、root (/
)が/dev/sda1
に割り当てられている場合、SANを接続した後またはシステムにハードディスクを追加した後に、/dev/sdg1
に再割り当てされる可能性があります。この場合、ブートローダ設定と/etc/fstab
ファイルを調整する必要があり、そうしないとシステムは起動できなくなります。
この問題を回避する1つの方法は、ブートデバイスのブートローダファイルと/etc/fstab
ファイルでUUIDを使用することです。SUSE Linux Enterpriseのバージョン12以降は、これがデフォルトです。UUIDは、ファイルシステムのプロパティであり、ドライブを再フォーマットすれば変更できます。デバイス名のUUIDを使用することの代替案として、IDまたはラベルでデバイスを識別する方法があります。
UUIDは、ソフトウェアRAIDデバイスのアセンブルと起動の基準としても使用できます。RAIDが作成されると、md
ドライバは、デバイスのUUIDを生成し、その値をmd
スーパーブロックに保存します。
どのブロックデバイスのUUIDも、/dev/disk/by-uuid
ディレクトリ内で見つけることができます。たとえば、UUIDエントリは次のようになります。
tux >
ls -og /dev/disk/by-uuid/
lrwxrwxrwx 1 10 Dec 5 07:48 e014e482-1c2d-4d09-84ec-61b3aefde77a -> ../../sda1
3.3 追加情報 #
udev
によるデバイス管理の詳細については、第21章 「udevによる動的カーネルデバイス管理
」を参照してください。
udev
コマンドの詳細については、man 7 udev
を参照してください。