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 にインストールされます。
| ファイル名 | 説明 | ||
|---|---|---|---|
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 をサポートするコマンドとインターフェイス リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| 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 オプションは次のとおりです。
--udevcookieudevトランザクションに追加するすべての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 ...--noudevrulesudevルールを無効にします。ノード/シンボリックリンクはlibdevmapper自体によって作成されます(古い方法)。このオプションは、udevが正常に機能しない場合にデバッグを目的としています。--noudevsyncudevの同期を無効にします。これもデバッグを目的としています。
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 ファイルのインラインコメントを参照してください。