検索

A.3. デバイスマッパーの udev デバイスマネージャーサポート

download PDF
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
一般的なデバイスマッパールールを格納し、/dev/mapper/dev/dm-N ターゲットでシンボリックリンクを作成します。ここで N は、カーネルによってデバイスに動的に割り当てられる数です(/dev/dm-N はノードです)。
注記: /dev/dm-N ノードは、デバイスにアクセスするスクリプトには 使用し ない でください。これは、N 番号が動的に割り当てられ、デバイスを有効にする順序が変わるためです。そのため、/dev/mapper ディレクトリーの true 名を使用する必要があります。このレイアウトは、ノード/シンボリックリンクの作成方法の udev 要件をサポートするためのものです。
11-dm-lvm.rules
LVM デバイス用に適用されるルールを格納し、ボリュームグループの論理ボリュームのシンボリックリンクを作成します。シンボリックリンクは、/dev/vgname ディレクトリーに、/dev/dm-N ターゲットを使用して作成されます。
注:デバイスマッパーサブシステムの今後のすべての名前付けの標準と一致するように、udev ルールは、11-dm-subsystem_name.rules の形式に従う必要があります。udev ルールを提供する libdevmapper ユーザーは、この標準に従う必要があります。
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: デバイスマッパーデバイスの UUID
  • DM_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 コマンド」 は、udev の統合をサポートする dmsetup コマンドの概要を示しています。
表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 ファイルのインラインコメントを参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.