4.5. フィルターを使用した LVM デバイススキャンの制御
起動時に、
vgscan
コマンドが実行されて、システム上のブロックデバイスのスキャンによる LVM ラベルの確認、物理ボリュームの判別、メタデータの読み取り、およびボリュームグループの一覧の構築が行われます。物理ボリュームの名前はシステム内の各ノードのキャッシュファイル /etc/lvm/cache/.cache
に保存されます。それ以後のコマンドはそのファイルを読み込み、再スキャンを防止することになります。
lvm.conf
設定ファイル内にフィルターを設定することにより、LVM がスキャンするデバイスを制御することができます。lvm.conf
ファイル内のフィルターは、一連の簡単な正規表現で構成されており、これらは /dev
ディレクトリー内のデバイス名に適用されて、検出されるそれぞれのブロックデバイスを受理するか、または拒否するかの決定が行われます。
以下の例は、LVM がスキャンするデバイスを制御するフィルターの使用を示しています。正規表現は完全なパス名に対して自由にマッチングされるため、これらの例の一部は必ずしもベストプラクティスを示すものではないことに注意してください。たとえば、
a/loop/
は a/.*loop.*/
と同等であり、/dev/solooperation/lvol1
に一致します。
以下のフィルターは、検出されたすべてのデバイスを追加します。これは、設定ファイル内で設定されているフィルターはないため、デフォルトの動作になります。
filter = [ "a/.*/" ]
以下のフィルターは、ドライブにメディアが入っていない場合の遅延を回避するために cdrom デバイスを削除します。
filter = [ "r|/dev/cdrom|" ]
以下のフィルターはすべてのループを追加して、その他のすべてのブロックデバイスを削除します。
filter = [ "a/loop.*/", "r/.*/" ]
以下のフィルターはすべてのループと IDE を追加して、その他のすべてのブロックデバイスを削除します。
filter =[ "a|loop.*|", "a|/dev/hd.*|", "r|.*|" ]
以下のフィルターは 1 番目の IDE ドライブ上にパーティション 8 のみを追加して、その他のすべてのブロックデバイスを削除します。
filter = [ "a|^/dev/hda8$|", "r/.*/" ]
注記
lvmetad
デーモンの実行中は、/etc/lvm/lvm.conf
ファイルの filter =
設定は、pvscan --cache device
コマンドを実行する場合には適用されません。デバイスをフィルターするには、global_filter =
設定を使用する必要があります。グローバルフィルターに失敗するデバイスは LVM では開かれず、スキャンは一切実行されません。VM で LVM デバイスを使用する場合や、VM 内のデバイスのコンテンツを物理ホストでスキャンする必要がない場合などには、グローバルフィルターを使用する必要がある場合があります。