Menu Close

2.3.17. オーバークラウドノードでの LVM2 フィルターの有効化

特定のBlockStorage Service (cinder) バックエンドでLVM2 (Logical Volume Management) ボリュームを使用する場合、Red Hat OpenStack Platform (RHOSP) ゲスト内で作成したボリュームが、cinder-volume または nova-compute をホストするオーバークラウドノードに表示される場合があります。この場合、ホスト上の LVM2 ツールは、OpenStack ゲストが作成する LVM2 ボリュームをスキャンします。これにより、コンピュートノードまたはコントローラノードで次の問題が 1 つ以上発生する可能性があります。

  • LVM がゲストからのボリュームグループを表示するように見える
  • LVM が重複するボリュームグループ名を報告する
  • LVM がストレージにアクセスしているため、ボリュームの切り離しが失敗する
  • LVM の問題が原因でゲストがブートに失敗する
  • ゲストマシン上の LVM は、実際に存在するディスクが見つからないため、部分的な状態にある
  • LVM を持つデバイスで Block Storage サービス (cinder) のアクションが失敗する
  • Block Storage サービス (cinder) のスナップショットが正しく削除されない
  • ライブマイグレーション中のエラー: /etc/multipath.conf が存在しない

この誤ったスキャンを防ぎ、ゲスト LVM2 ボリュームをホストノードから分離するために、オーバークラウドのデプロイまたは更新時にLVMFilterEnabled heat パラメーターを使用してフィルターを有効にし、設定できます。このフィルターは、アクティブな LVM2 ボリュームをホストする物理デバイスの一覧から計算されます。LVMFilterAllowlist および LVMFilterDenylist パラメーターを使用して、ブロックデバイスを明示的に許可および拒否することもできます。このフィルタリングは、グローバルに、特定のノードロールに、または特定のデバイスに適用できます。

注記

この機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト目的のみでご利用いただく機能で、実稼働環境にデプロイすべきではありません。テクノロジープレビュー機能についての詳しい情報は、「対象範囲の詳細」を参照してください。

前提条件

手順

  1. アンダークラウドホストに stack ユーザーとしてログインします。
  2. source コマンドでアンダークラウドの認証情報ファイルを読み込みます。

    $ source ~/stackrc
  3. 新しい環境ファイルを作成するか、既存の環境ファイルを変更します。この例では、新しいファイル lvm2-filtering.yaml を作成します。

    $ touch ~/lvm2-filtering.yaml
  4. 環境ファイルに以下のパラメーターを追加します。

    parameter_defaults:
      LVMFilterEnabled: true

    LVM2 フィルターの実装はさらにカスタマイズできます。たとえば、コンピュートノードでのみフィルタリングを有効にするには、次の設定を使用します。

    parameter_defaults:
      ComputeParameters:
        LVMFilterEnabled: true

    これらのパラメーターは、正規表現もサポートしています。計算ノードでのみフィルタリングを有効にし、/dev/sdで始まるすべてのデバイスを無視するには、次の設定を使用します。

    parameter_defaults:
      ComputeParameters:
        LVMFilterEnabled: true
        LVMFilterDenylist:
          - /dev/sd.*
  5. openstack overcloud deploy コマンドを実行し、LVM2フィルタリング構成を含む環境ファイルと、オーバークラウドデプロイメントに関連するその他の環境ファイルを含めます。

    $ openstack overcloud deploy --templates \
    <environment-files> \
    -e lvm2-filtering.yaml