A.3. デバイスマッパーの udev デバイスマネージャサポート
The primary role of the
udev device manager is to provide a dynamic way of setting up nodes in the /dev directory. The creation of these nodes is directed by the application of udev rules in user space. These rules are processed on udev events sent from the kernel directly as a result of adding, removing or changing particular devices. This provides a convenient and central mechanism for hotplugging support.
udev デバイスマネージャは、実際のノードを作成するだけでなく、ユーザーによる名前付けが可能なシンボリックリンクも作成できます。これにより、ユーザーは独自のカスタマイズされた命名および /dev ディレクトリ内のディレクトリ構造を必要に応じて自由に選択できるようになります。
各
udev イベントには、処理中のデバイスに関する基本情報が格納されています。これには、そのデバイスの名前、属するサブシステム、デバイスのタイプ、使用されているメジャーとマイナーの番号、イベントのタイプなどが含まれます。udev ルール内でもアクセス可能な /sys ディレクトリ内にあるすべての情報にアクセスする可能性があることを考慮すると、ユーザーはこの情報に基づいてシンプルなフィルターを利用し、この情報に基づいて条件付きでルールを実行することができます。
udev デバイスマネージャは、ノードのアクセス権設定の一元化された方法も提供します。ユーザーはカスタマイズされたルールセットを用意に追加し、イベント処理中に入手可能な情報のいずれかのビットによって指定されている任意のデバイスのアクセス権を定義することができます。
udev ルール内に直接プログラムのフックを追加することも可能です。udev デバイスマネージャは、これらのプログラムを呼び出して、イベントを処理するにあたって必要とされる更なる処理を提供することが可能です。また、プログラムは、この処理の結果として、環境変数をエクスポートすることもできます。追加の情報源として、任意の結果を更にルール内で使用することが可能です。
udev ライブラリを使用するソフトウェアは、入手可能なすべての情報とともに、udev イベントを受信および処理することが可能です。このため、処理は、udev デーモンのみにバインドされません。
A.3.1. udev のデバイスマッパーとの統合 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux 6 では、デバイスマッパーは
udev 統合に対して直接のサポートを提供します。これによって、デバイスマッパーは、LVM デバイスを含むデバイスマッパーデバイスに関連したすべての udev 処理と同期します。udev デーモンにルールを適用する方式は、デバイスの変更元であるプログラム (dmsetup や LVM など) を使用した並列処理であるため、同期が必要です。このサポートがなかったため、前回の変更イベントの結果、引き続きオープンな udev ルールで処理されたデバイスをユーザーが削除しようとする問題が頻繁に発生していました。この問題は、デバイスに対する変更の間隔が短い場合に特に多く発生していました。
Red Hat Enterprise Linux 6 リリースは、一般的なデバイスマッパーデバイスおよび 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、および /dev/disk/by-uuidのディレクトリ内にシンボリックリンクを作成します。 | ||
95-dm-notify.rules | libdevmapper を使用する待機中のプロセスを通知するルールを格納します。(LVM や dmsetup と同様)。以前の全ルールが適用された後で通知が行われ、udev 処理が確実に完了するようにします。通知されたプロセスは、その後で再開します。 | ||
69-dm-lvm-metad.rules | Contains a hook to trigger an LVM scan on any newly appeared block device in the system and do any LVM autoactivation if possible. This supports the lvmetad daemon, which is set with use_lvmetad=1 in the lvm.conf file. The lvmeetad daemon and autoactivation are not supported in a clustered environment. |
12-dm-permissions.rules ファイルを用いて、さらなるカスタマイズされたアクセス権ルールを追加することができます。このファイルは/lib/udev/rules ディレクトリにはインストール されず、/usr/share/doc/device-mapper-version ディレクトリにあります。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 ファイル内で使用して、特定のデバイスマッパーデバイスのアクセス権を定義することができます。