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

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

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

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

前提条件

  • アンダークラウドの正常なインストール。詳しくは、Installing the undercloud を参照してください。

手順

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

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

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

    parameter_defaults:
      LVMFilterEnabled: true

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

    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