67.12. LVM デバイスの可視性および使用を制限する
論理ボリュームマネージャー (LVM) がスキャンできるデバイスを制御することにより、LVM で表示および使用できるデバイスを制限できます。
LVM デバイススキャンの設定を調整するには、/etc/lvm/lvm.conf
ファイルで LVM デバイスフィルター設定を編集します。lvm.conf
ファイル内のフィルターは、一連の単純な正規表現で構成されています。システムは、これらの式を /dev
ディレクトリー内の各デバイス名に適用して、検出された各ブロックデバイスを受け入れるか拒否するかを決定します。
67.12.1. LVM フィルタリング用の永続的な識別子
/dev/sda
などの従来の Linux デバイス名は、システム変更や再起動中に変更される可能性があります。World Wide Identifier (WWID)、汎用一意識別子 (UUID)、パス名などの永続的な命名属性 (PNA) は、ストレージデバイスの固有の特性に基づいており、ハードウェア設定の変更に対して耐久性があります。そのため、システムの再起動後もストレージデバイスがより安定し、予測可能になります。
LVM フィルタリングに永続的なデバイス識別子を実装すると、LVM 設定の安定性と信頼性が向上します。また、デバイス名が動的な性質を持つことによるシステム起動失敗のリスクも軽減されます。
関連情報
67.12.2. LVM デバイスフィルター
論理ボリュームマネージャー (LVM) デバイスフィルターは、デバイス名パターンのリストです。これを使用すると、システムがデバイスを評価して LVM での使用が有効であると認めるのに使用する一連の必須基準を指定できます。LVM デバイスフィルターを使用すると、LVM が使用するデバイスを制御できます。これは、偶発的なデータ損失やストレージデバイスへの不正アクセスを防ぐのに役立ちます。
67.12.2.1. LVM デバイスフィルターのパターンの特性
LVM デバイスフィルターのパターンは正規表現の形式です。正規表現は文字で区切られ、許可の場合は a
、拒否の場合は r
が前に付きます。デバイスに一致する最初の正規表現は、LVM が特定のデバイスを許可するか、拒否 (無視) するかを判断します。次に、LVM はデバイスのパスに一致する最初の正規表現をリスト内で検索します。LVM はこの正規表現を使用して、デバイスを a
の結果により承認するか、r
の結果により拒否するかを決定します。
単一のデバイスに複数のパス名がある場合、LVM はリストの順序に従ってこれらのパス名にアクセスします。r
パターンの前に、少なくとも 1 つのパス名が a
パターンと一致する場合、LVM はデバイスを許可します。しかし、a
パターンが見つかる前にすべてのパス名が r
パターンと一致した場合、デバイスは拒否されます。
パターンに一致しないパス名は、デバイスの許可ステータスに影響を与えません。デバイスのパターンに一致するパス名がまったくない場合も、LVM はデバイスを許可します。
システム上のデバイスごとに、udev
ルールは複数のシンボリックリンクを生成します。ディレクトリーには、システム上の各デバイスが複数のパス名を通じてアクセスできるように、/dev/disk/by-id/
、/dev/disk/by-uuid/
、/dev/disk/by-path/
などのシンボリックリンクが含まれています。
フィルター内のデバイスを拒否するには、その特定のデバイスに関連付けられたすべてのパス名が、対応する r
拒否表現と一致する必要があります。ただし、考えられる拒否対象のパス名をすべて特定するのは困難な場合があります。そのため、一連の特定の a
表現の後に 1 つの r|.*|
表現を使用して、特定のパスを明確に限定して許可し、その他のすべてを拒否するフィルターを作成することを推奨します。
フィルターで特定のデバイスを定義するときは、カーネル名の代わりにそのデバイスのシンボリックリンク名を使用します。/dev/sda
など、デバイスのカーネル名は変更される可能性がありますが、/dev/disk/by-id/wwn-*
などの特定のシンボリックリンク名は変更されません。
デフォルトのデバイスフィルターは、システムに接続されているすべてのデバイスを許可します。理想的なユーザー設定のデバイスフィルターは、1 つ以上のパターンを許可し、それ以外はすべて拒否します。たとえば、r|.*|
で終わるパターンリストなどが挙げられます。
LVM デバイスのフィルター設定は、lvm.conf
ファイルの devices/filter
および devices/global_filter
設定フィールドにあります。devices/filter
設定フィールドと devices/global_filter
設定フィールドは同等のものです。
関連情報
-
システム上の
lvm.conf(5)
man ページ
67.12.2.2. LVM デバイスフィルター設定の例
次の例は、LVM がスキャンして後で使用するデバイスを制御するためのフィルター設定を示しています。lvm.conf
ファイルでデバイスフィルターを設定するには、次を参照してください。
コピーまたはクローン作成された物理ボリューム (PV) を処理するときに、PV の重複に関する警告が表示される場合があります。これはフィルターをセットアップすることで解決できます。PV の重複警告を防ぐ LVM デバイスフィルターの例 のフィルター設定の例を参照してください。
すべてのデバイスをスキャンするには、次のように入力します。
filter = [ "a|.*|" ]
ドライブにメディアが含まれていない場合の遅延を避けるために
cdrom
デバイスを削除するには、次のように入力します。filter = [ "r|^/dev/cdrom$|" ]
すべてのループデバイスを追加し、他のすべてのデバイスを削除するには、次のように入力します。
filter = [ "a|loop|", "r|.*|" ]
すべてのループデバイスと SCSI デバイスを追加し、他のすべてのブロックデバイスを削除するには、次のように入力します。
filter = [ "a|loop|", "a|/dev/sd.*|", "r|.*|" ]
最初の SCSI ドライブにパーティション 8 のみを追加し、他のすべてのブロックデバイスを削除するには、次のように入力します。
filter = [ "a|^/dev/sda8$|", "r|.*|" ]
WWID によって識別される特定のデバイスおよびすべてのマルチパスデバイスからすべてのパーティションを追加するには、次のように入力します。
filter = [ "a|/dev/disk/by-id/<disk-id>.|", "a|/dev/mapper/mpath.|", "r|.*|" ]
また、このコマンドは、他のブロックデバイスを削除します。
関連情報
-
システム上の
lvm.conf(5)
man ページ
67.12.2.3. LVM デバイスフィルター設定の適用
lvm.conf
設定ファイル内にフィルターを設定することにより、LVM がどのデバイスをスキャンするかを制御できます。
前提条件
- 使用するデバイスフィルターパターンが準備されている。
手順
実際に
/etc/lvm/lvm.conf
ファイルを変更せずに、次のコマンドを使用してデバイスフィルターパターンをテストします。以下にフィルター設定の例を示します。# lvs --config 'devices{ filter = [ "a|/dev/emcpower.|", "r|.|" ] }'
/etc/lvm/lvm.conf
ファイルの設定セクションdevices
にデバイスフィルターパターンを追加します。filter = [ "a|/dev/emcpower.*|", "r|*.|" ]
再起動時に必要なデバイスのみをスキャンします。
# dracut --force --verbose
このコマンドによって、LVM が必要なデバイスのみを再起動時にスキャンするように
initramfs
ファイルシステムを再構築します。