Red Hat Training

A Red Hat training course is available for RHEL 8

第13章 LVM デバイスの可視性および使用を制限する

論理ボリュームマネージャー (LVM) がスキャンできるデバイスを制御することにより、LVM で表示および使用できるデバイスを制限できます。

LVM デバイススキャンの設定を調整するには、/etc/lvm/lvm.conf ファイルで LVM デバイスフィルター設定を編集します。lvm.conf ファイル内のフィルターは、一連の単純な正規表現で設定されています。システムは、これらの式を /dev ディレクトリー内の各デバイス名に適用して、検出された各ブロックデバイスを受け入れるか拒否するかを決定します。

13.1. LVM デバイスフィルター

論理ボリュームマネージャー (LVM) デバイスフィルターは、デバイス名パターンのリストです。これを使用して、システムがデバイスを評価して LVM で使用できるように考慮できる一連の必須基準を指定できます。LVM デバイスフィルターを使用すると、LVM が使用するデバイスを制御できます。これは、誤ってデータの損失やストレージデバイスへの不正アクセスを防ぐのに役立ちます。

13.1.1. LVM デバイスフィルターパターンの特徴

LVM デバイスフィルターのパターンは、正規表現の形式になります。正規表現に 文字とそれより制限を解除し、受け入れには 付け、拒否の場合は r を付けます。デバイスに一致する最初の正規表現は、LVM が特定のデバイスを許可するか、拒否 (無視) するかを判断します。次に、LVM は、デバイスのパスに一致するリストで最初の正規表現を検索します。LVM はこの正規表現を使用して、デバイスを結果で承認するか、または r の結果で拒否する必要があるかどうかを判断します。

1 つのデバイスに複数のパス名がある場合、LVM は一覧表示の順序に従ってこれらのパス名にアクセスします。r パターンの前に、少なくとも 1 つのパス名がパターンと一致 する 場合、LVM はデバイスを承認します。ただし、パターンが見つかる前にすべてのパス名が r パターンと一致し いる場合は、デバイスは拒否されます。

パターンに一致しないパス名は、デバイスの承認ステータスには影響しません。デバイスのパターンに対応するパス名がない場合、LVM はそのデバイスを承認します。

udev ルールは、システム上のデバイスごとに複数のシンボリックリンクを生成します。ディレクトリーには、システム上の各デバイスに複数のパス名からアクセスできるように、/dev/disk/by-id//dev/disk/by-uuid//dev/disk/by-path/ などのシンボリックリンクが含まれます。

フィルター内のデバイスを拒否するには、その特定のデバイスに関連付けられているすべてのパス名が、対応する reject r 式と一致する必要があります。ただし、拒否可能なすべてのパス名を特定するのは困難です。このため、特定のパスを受け入れ、他のすべてのパスを拒否するフィルターを作成することが推奨されます。これは、一連の特定の式とそれに続く 1 つの r|.*| 式を使用して、その他のパスをすべて拒否します。

フィルターで特定のデバイスを定義する際に、カーネル名の代わりにそのデバイスのシンボリックリンク名を使用します。デバイスのカーネル名( /dev/sda など)は変更でき、特定のシンボリックリンク名は /dev/disk/by-id/wwn-* などのように変更されません。

デフォルトのデバイスフィルターは、システムに接続されているすべてのデバイスを受け入れます。理想的なユーザー設定のデバイスフィルターは、1 つ以上のパターンを受け入れ、それ以外はすべて拒否します。たとえば、r|.*| で終わるパターンリストです。

lvm.conf ファイルの devices/filter フィールドと devices/global_filter フィールドで、LVM デバイスのフィルター設定を見つけることができます。devices/filter および devices/global_filter 設定フィールドは同等です。

関連情報

  • lvm.conf(5) man ページ

13.1.2. LVM デバイスフィルター設定の例

以下の例は、LVM がスキャンして後で使用するデバイスを制御するフィルター設定を示しています。lvm.conf ファイルでデバイスフィルターを設定するには、LVM デバイスフィルター設定の適用 を参照してください。

注記

LVM フィルターの設定によっては、重複した物理ボリューム(PV)の警告が発生する可能性があります。この問題を回避するために、PV の重複警告を防ぐ LVM デバイスフィルターの例 のフィルター設定の例を参照してください。

  • すべてのデバイスをスキャンするには、次のコマンドを実行します。

    filter = [ "|a.*|" ]
  • ドライブにメディアが含まれていない場合に遅延を回避するために cdrom デバイスを削除するには、次のコマンドを実行します。

    filter = [ "r|^/dev/cdrom$|" ]
  • すべてのループデバイスを追加し、他のすべてのデバイスを削除するには、次のコマンドを実行します。

    filter = [ "a|loop|", "r|.*|" ]
  • すべてのループおよび統合開発環境(IDE)デバイスを追加し、他のすべてのブロックデバイスを削除するには、次のコマンドを実行します。

    filter = [ "a|loop|", "a|/dev/hd.*|", "r|.*|" ]
  • 最初の IDE ドライブにパーティション 8 のみを追加して、その他のブロックデバイスをすべて削除するには、次のコマンドを実行します。

    filter = [ "a|^/dev/hda8$|", "r|.*|" ]

13.1.3. LVM デバイスフィルター設定の適用

lvm.conf 設定ファイル内にフィルターを設定することにより、LVM がスキャンするデバイスを制御することができます。

前提条件

  • 使用するデバイスフィルターパターンを準備している。

手順

  1. 以下のコマンドを使用して、/etc/lvm/lvm.conf ファイルを実際に変更せずに、デバイスフィルターパターンをテストします。以下は、フィルター設定の例を示しています。

    # lvs --config 'devices{ filter = [ "a|/dev/emcpower.|", "r|.|" ] }'
  2. /etc/lvm/lvm.conf ファイルの設定セクションに、デバイス フィルターパターンを追加します。

    filter = [ "a|/dev/emcpower.*|", "r|*.|" ]
  3. 物理ボリュームとボリュームグループがそれぞれ見つからないことを確認します。

    # pvscan -v
    # vgscan -v
  4. 再起動時に必要なデバイスのみをスキャンします。

    # dracut --force --verbose

    このコマンドは initramfs ファイルシステムを再構築し、再起動時に LVM が必要なデバイスのみをスキャンできるようにします。