Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
A.3. デバイスマッパーの udev デバイスマネージャーサポート
udev
デバイスマネージャーの主なロールは、/dev
ディレクトリー内でノードを設定する動的な方法を提供することです。これらのノードの作成は、ユーザー空間で udev
ルールを適用することによって指示されます。これらのルールは、特定のデバイスの追加、削除、または変更の結果として、カーネルから直接送信される udev
イベント上で処理されます。これはホットプラグサポートの便利な中央メカニズムを提供します。
udev
デバイスマネージャーは、実際のノードを作成するだけでなく、名前を付けることができるシンボリックリンクを作成できます。これにより、必要に応じて、独自のカスタマイズされた命名とディレクトリー構造を/dev
ディレクトリーで選択できるようになります。
各
udev
イベントには、処理されるデバイスに関する基本情報が含まれます。これには、処理されるデバイスの名前、デバイスが属するサブシステム、デバイスのタイプ、使用されるメジャーおよびマイナー番号、イベントのタイプなどが含まれます。udev
ルール内でもアクセスできる /sys
ディレクトリーにあるすべての情報にアクセスできることを考慮すると、この情報に基づく単純なフィルターを利用し、この情報に基づいて条件付きでルールを実行することができます。
udev
デバイスマネージャーは、ノードのパーミッションを設定する一元化された方法も提供します。ユーザーはカスタマイズされたルールセットを簡単に追加し、イベント処理中に入手可能な情報のいずれかのビットで指定する、任意のデバイスのパーミッションを定義することができます。
udev
ルールにプログラムのフックを直接追加することもできます。udev
デバイスマネージャーは、これらのプログラムを呼び出して、イベントを処理するために必要な追加処理を提供できます。さらにプログラムは、この処理の結果として、環境変数をエクスポートすることもできます。追加の情報源として、任意の結果をルール内で追加で使用することが可能です。
udev
ライブラリーを使用するソフトウェアは、使用可能なすべての情報とともに udev
イベントを受信し、処理することができます。そのため、処理は udev
デーモンのみにバインドされません。
A.3.1. udev のデバイスマッパーとの統合
デバイスマッパーは、
udev
の統合を直接サポートします。これにより、LVM デバイスを含むデバイスマッパーデバイスに関連するすべての udev
処理とデバイスマッパーが同期されます。udev
デーモンのルールアプリケーションは、デバイスの変更ソースであるプログラム( dmsetup
や LVM など)を使用した並列処理であるため、同期が必要です。このサポートがないと、以前の変更イベントの結果として、引き続き開いていて udev
ルールで処理されたデバイスの削除を試みる際に一般的な問題がありました。これは、そのデバイスへの変更の間に短い時間がかかった場合に特に一般的でした。
Red Hat Enterprise Linux は、一般的なデバイスマッパーデバイスおよび LVM 用の
udev
ルールを正式にサポートしています。表A.1「デバイスマッパーデバイス向けの udev ルール」 では、これらのルールは /lib/udev/rules.d
にインストールされます。
表A.1 デバイスマッパーデバイス向けの udev ルール
ファイル名 | 説明 | ||
---|---|---|---|
10-dm.rules |
| ||
11-dm-lvm.rules |
| ||
13-dm-disk.rules | すべてのデバイスマッパーデバイスに適用されるルールが含まれ、/dev/disk/by-id ディレクトリーおよび /dev/disk/by-uuid ディレクトリーにシンボリックリンクを作成します。 | ||
95-dm-notify.rules | libdevmapper を使用して待機プロセスに通知するルールが含まれます(LVM および dmsetup と同様に)。udev 処理が完了しているように、以前のすべてのルールが適用された後に通知が実行されます。通知されたプロセスは、その後で再開します。 | ||
69-dm-lvm-metad.rules | システムに新たに表示されるブロックデバイスで LVM スキャンをトリガーするためのフックが含まれ、可能な場合は LVM の自動アクティブ化を実行します。これは、lvm.conf ファイルの use_ lvmetad =1 で設定される lvmetad デーモンに対応します。クラスター環境では、lvmetad デーモンと自動アクティブ化はサポートされません。 |
12-dm-permissions.rules ファイルを使用して、カスタマイズされたパーミッションルール
をさらに追加できます。このファイルは、/lib/udev/rules
ディレクトリーにインストールされ ません。/usr/share/doc/device-mapper-バージョン
ディレクトリーにあります。12 -dm-permissions.rules
ファイルは、パーミッションの設定方法のヒントが含まれたテンプレートで、一例として示されるマッチングルールの一部に基づいています。このファイルには、一般的な状況の例が含まれています。このファイルを編集して、/etc/udev/rules.d
ディレクトリーに手動で配置すると、更新後も存続するため、設定がそのまま残ります。
これらのルールは、イベントの処理中に、他のルールによっても使用可能なすべての基本的な変数を設定します。
以下の変数は、10 -
dm.rules で設定されています。
DM_NAME
: デバイスマッパーデバイス名DM_UUID
: デバイスマッパーデバイスの UUIDDM_SUSPENDED
: デバイスマッパーデバイスの一時停止状態DM_UDEV_RULES_VSN
:udev
ルールバージョン(主に、前述の変数が公式のデバイスマッパールールによって直接設定されていることを確認するための他のすべてのルールを対象としています)
以下の変数は、
11-dm-lvm.rules で設定されています。
DM_LV_NAME
: 論理ボリューム名DM_VG_NAME
: ボリュームグループ名DM_LV_LAYER
: LVM レイヤー名
12-dm-permissions.rules ファイルに記載されているように、これらのすべての変数を 12-dm-permissions.rules
ファイルで使用すると、特定のデバイスマッパーデバイスの パーミッション
を定義することができます。
A.3.2. udev をサポートするコマンドとインターフェイス
表A.2 udev をサポートする dmsetup コマンド
Command | 説明 |
---|---|
dmsetup udevcomplete | udev がルールの処理を完了し、( 95-dm-notify.rules の udev ルール内から)待機プロセスのロックを解除していることを udev が通知するために使用されます。 |
dmsetup udevcomplete_all | デバッグの目的で使用され、待機中の全プロセスのロックを手動で解除します。 |
dmsetup udevcookies | デバッグの目的で使用され、既存のすべての Cookie (システム全体のセマフォ) を表示します。 |
dmsetup udevcreatecookie | Cookie (セマフォ) を手動で作成するのに使用されます。これは、単一の同期リソース下で、より多くのプロセスを実行するのに役立ちます。 |
dmsetup udevreleasecookie | 1 つの同期クッキーの下にあるすべてのプロセスに関連するすべての udev 処理を待機するために使用されます。 |
udev
の統合に対応する dmsetup オプションは次のとおりです。
--udevcookie
udev
トランザクションに追加するすべてのdmsetup
プロセスに対して定義する必要があります。これは udevcreatecookie および udevreleasecookie と組み合わせて使用されます。COOKIE=$(dmsetup udevcreatecookie) dmsetup command --udevcookie $COOKIE .... dmsetup command --udevcookie $COOKIE .... .... dmsetup command --udevcookie $COOKIE .... dmsetup udevreleasecookie --udevcookie $COOKIE
--udevcookie
オプションを使用する以外には、プロセスの環境に変数を単にエクスポートできます。export DM_UDEV_COOKIE=$(dmsetup udevcreatecookie) dmsetup command ... dmsetup command ... ... dmsetup command ...
--noudevrules
udev
ルールを無効にします。ノード/シンボリックリンクはlibdevmapper
自体によって作成されます(古い方法)。このオプションは、udev
が正常に機能しない場合にデバッグを目的としています。--noudevsync
udev
の同期を無効にします。これもデバッグを目的としています。
dmsetup コマンドとそのオプションの詳細は、dmsetup(8)の man ページを参照してください。
LVM コマンドは、
udev
の統合をサポートする以下のオプションをサポートします。
--noudevrules
: dmsetup コマンドのように、udev
ルールを無効にします。--noudevsync
: dmsetup コマンドのように、udev
の同期を無効にします。
lvm.conf
ファイルには、udev
の統合をサポートする以下のオプションが含まれます。
udev_rules
: すべての LVM2 コマンドのudev_rules
をグローバルに有効または無効にします。udev_sync
: すべての LVM コマンドのudev
の同期をグローバルに有効または無効にします。
lvm.conf
ファイルオプションの詳細は、lvm.conf
ファイルのインラインコメントを参照してください。