ブロック・ボリューム管理プラグインの有効化

コンピュート・インスタンスでブロック・ボリューム管理プラグインを有効にします。

ブロック・ボリューム管理プラグインは、次のボリューム・アタッチメント・シナリオに必要です:

  • 超高パフォーマンス・レベルで構成されたiSCSIでアタッチされたボリューム。超高パフォーマンス・レベルではパフォーマンスを最適化することが可能ですが、それには、これらのボリューム・アタッチメントがマルチパス対応であることが必要です。

  • その他のパフォーマンス・レベルで構成され、自動的に接続するように構成されているiSCSIでアタッチされたボリューム。これらのボリュームは、「Oracle Cloud Agentを使用して、iSCSIでアタッチされたボリュームに自動的に接続します」オプションを選択してアタッチされており、LinuxおよびWindowsベースのインスタンスへのアタッチメントでサポートされます。次の表に、様々なオペレーティング・システムで使用可能なOracle Cloud Agentソフトウェアのバージョンを示します:

    オペレーティング・システムおよび対応するOracle Cloud Agentバージョン
    オペレーティングシステム Oracle Cloud Agentバージョン
    Oracle LinuxまたはOracle Linuxイメージに基づくカスタム・イメージ 1.23.0 以降
    WindowsまたはWindowsイメージに基づくカスタム・イメージ 1.24.0 以降
    Ubuntuイメージに基づいたUbuntuまたはカスタム・イメージ 1.35.0 以降

ブロック・ボリューム管理プラグインは、Oracle Cloud Agentソフトウェアによって管理され、次のアクションを実行します:

  1. インスタンスのメタデータで、超高パフォーマンス・ボリュームへのマルチパス対応アタッチメント、またはその他のパフォーマンス・レベルで構成されたボリュームに自動的に接続するように構成されたアタッチメントを確認します(ポーリング間隔は1分です)。

  2. device-mapper-multipath rpmをインストールし、マルチパス対応のアタッチメントがある場合にのみ"/etc/multipath.conf"を追加します。

  3. インスタンスのメタデータに、マルチパス対応アタッチメントまたは自動的に接続するよう構成されているアタッチメントがある場合、プラグインでは、そのボリューム・アタッチメントに対して、iSCSI loginバッチ・コマンドが実行されます。

前提条件

ブロック・ボリューム管理プラグインは、Oracle Autonomous LinuxイメージとOracle Linuxイメージ、およびそれらのイメージをベースとするカスタム・イメージでサポートされます。

ブロック・ボリューム管理プラグインには、次のステップが必要です。

  • サービス・ゲートウェイまたはパブリックIPアドレス: コンピュート・インスタンスがOracleサービスに接続するには、パブリックIPアドレスまたはサービス・ゲートウェイが必要です。

    インスタンスにパブリックIPアドレスがない場合は、仮想クラウド・ネットワーク(VCN)上にサービス・ゲートウェイを設定します。サービス・ゲートウェイを使用すると、データをパブリック・インターネットに公開することなく、Oracleサービスにプライベートにアクセスできます。次に、ブロック・ボリューム管理プラグインにサービス・ゲートウェイを設定する上での特記事項を示します:

    • サービス・ゲートウェイを作成する場合は、「Oracle Services Networkのすべての<region>サービス」というサービス・ラベルを有効にします。
    • インスタンスが含まれるサブネットのルーティングを設定する場合は、「ターゲット・タイプ」「サービス・ゲートウェイ」「宛先サービス」「Oracle Services Networkのすべての <region>サービス」に設定して、ルート・ルールを設定します。

    詳細な手順は、Oracleサービスへのアクセス: サービス・ゲートウェイに関する項を参照してください。

  • Oracle Cloud Agent: Oracle Cloud Agentソフトウェアをインスタンスにインストールする必要があります。Oracle Cloud Agentは、デフォルトで現在のプラットフォーム・イメージにインストールされます。Oracle Cloud Agentを古いイメージに手動でインストールするステップは、Oracle Cloud Agentソフトウェアのインストールを参照してください。更新するには、「Oracle Cloud Agentソフトウェアの更新」を参照してください。
    重要

    ボリュームに自動的に接続するシナリオをサポートするためにブロック・ボリューム管理プラグインを有効化する場合は、インスタンスで、バージョン1.23.0以上のOracle Cloud Agentソフトウェアを実行する必要があります。
  • 権限の構成: これらの権限により、インスタンスがOracle Cloud InfrastructureサービスにAPIコールを行うことが認可され、ブロック・ボリューム管理プラグインが、マルチパス対応のiSCSIアタッチメントのiSCSI設定の結果をレポートできるようになります。

    権限を構成するには:

    1. 動的グループの作成: 次のコード・サンプルの一致ルールを使用して動的グループを作成し、指定したコンパートメント内のすべてのインスタンスを追加します:

      ANY {instance.compartment.id = 'ocid1.tenancy.oc1..<tenancy_ID>', instance.compartment.id = 'ocid1.compartment.oc1..<compartment_OCID>'}
    2. 動的グループのポリシーの構成: 前のステップで作成した動的グループに権限を付与するポリシーを構成して、インスタンス・エージェントによるアクセスを可能にし、ブロック・ボリューム・サービスをコールして、アタッチメント構成を取得できるようにします。

      Allow dynamic-group InstantAgent to use instances in tenancy
      Allow dynamic-group InstantAgent to use volume-attachments in tenancy

新規インスタンスでのブロック・ボリューム管理の有効化

新しいコンピュート・インスタンスでブロック・ボリューム管理を有効にするには、次のステップを実行します。

コンソールを使用して、新しいコンピュート・インスタンスでブロック・ボリューム管理を有効にするには
  1. 拡張オプションまで、インスタンスの作成のステップに従います。前提条件に説明されているように、インスタンスにパブリックIPアドレスまたはサービス・ゲートウェイがあることを確認します。
  2. 「拡張オプションの表示」をクリックします。
  3. 「Oracle Cloud Agent」タブで、「ブロック・ボリューム管理」チェック・ボックスを選択します。

  4. 「作成」をクリックします。

APIを使用して、新しいコンピュート・インスタンスでブロック・ボリューム管理を有効にするには
  1. Oracle Cloud Agentソフトウェアがまだインストールされていない場合は、インストールします。
  2. UpdateInstance操作を使用します。次のパラメータを含めます:

    #oci compute instance update --instance-id <New_Instance> --agent-config file:///agentUpdate.json
    agentUpdate.json
    {
        "is-agent-disabled": false,
        "plugins-config": [
            {"name": "Block Volume Management", "desiredState": "ENABLED" }
        ]
    }
  3. 前提条件に説明されているように、インスタンスにパブリックIPアドレスまたはサービス・ゲートウェイがあることを確認します。

既存のインスタンスでのブロック・ボリューム管理の有効化

既存のコンピュート・インスタンスでブロック・ボリューム管理を有効にするには、次のステップを実行します。

コンソールを使用して、既存のコンピュート・インスタンスでブロック・ボリューム管理を有効にするには
  1. Oracle Cloud Agentソフトウェアがまだインストールされていない場合は、インストールします。Oracle Cloud Agentに、現在および最新のプラットフォーム・イメージがすべてインストールされている必要があります。次のコマンドを実行して、すでにインストールされているかどうかを確認します:

    systemctl status oracle-cloud-agent

    結果が見つからない場合はソフトウェアをインストールし、それ以外の場合は次のステップに進みます。

  2. ブロック・ボリューム管理プラグインを有効にします
  3. プラグインがインスタンスで実行されていることを確認します
  4. 前提条件に説明されているように、インスタンスにパブリックIPアドレスまたはサービス・ゲートウェイがあることを確認します。
APIを使用して、既存のコンピュート・インスタンスでブロック・ボリューム管理を有効にするには
  1. Oracle Cloud Agentソフトウェアがまだインストールされていない場合は、インストールします。
  2. UpdateInstance操作を使用します。次のパラメータを含めます:

    #oci compute instance update --instance-id <New_Instance> --agent-config file:///agentUpdate.json
    agentUpdate.json
    {
        "is-agent-disabled": false,
        "plugins-config": [
            {"name": "Block Volume Management", "desiredState": "ENABLED" }
        ]
    }
  3. 前提条件に説明されているように、インスタンスにパブリックIPアドレスまたはサービス・ゲートウェイがあることを確認します。

インスタンスでのブロック・ボリューム管理の手動での有効化

CLIを使用して、コンピュート・インスタンスでブロック・ボリューム管理を手動で有効にできます。

この手順は、超高パフォーマンス・レベルをサポートするために更新されているのに、ブロック・ボリューム管理プラグインが/etc/oracle-cloud-agent/agent.ymlファイルで有効になっていないカスタム・イメージにのみ必要です。

この手順を実行する前に、「新規インスタンスでのブロック・ボリューム管理の有効化」または「既存のインスタンスでのブロック・ボリューム管理の有効化」で説明されているステップを完了する必要があります。

インスタンスでブロック・ボリューム管理プラグインを手動で有効にするには
  1. Oracle Cloud Agentソフトウェアがまだインストールされていない場合は、インスタンスにインストールします。
  2. インスタンスにログインします(「インスタンスへの接続」を参照してください)。
  3. 次のsedスクリプトを実行して、ブロック・ボリューム管理を有効にします:

    sed -i.saved -e '/^  oci-blockautoconfig:/,/^  [a-z]*:/{s/\(.*disabled:.*\)true/\1false/}' /etc/oracle-cloud-agent/agent.yml

    このスクリプトでは、/etc/oracle-cloud-agent/agent.ymloci-blockautoconfig構成のdisabledパラメータが、trueからfalseに更新されます。

  4. 次のコマンドを実行して、Oracle Cloud Agentサービスを再起動します:
    systemctl restart oracle-cloud-agent.service

ブロック・ボリューム管理プラグインのトラブルシューティング

インスタンスでブロック・ボリューム管理プラグインが正しく構成されていない場合、iSCSIアタッチメント・タイプを使用してボリュームをアタッチするときにエラーが発生することがあります。これらの問題については、このセクションのトラブルシューティングの推奨事項を参照してください。

ブロック・ボリューム管理プラグインのログのエラー: ボリューム・アタッチメントが認可されていないか見つからないエラー

ブロック・ボリューム管理プラグインで権限を正しく構成していない場合、ボリュームはインスタンスへのアタッチに失敗します。

詳細

ボリュームはコンソールにアタッチされているとおりに表示されず、ブロック・ボリューム管理プラグインのログにNotAuthorizedOrNotFoundというエラー・メッセージが表示されます。

ブロック・ボリューム管理プラグインのログは、次の場所にあります:

"/var/log/oracle-cloud-agent/plugins/oci-blockautoconfig/oci-blockautoconfig.log

次に示すのは、この問題のサンプルのエラー・ログ・エントリです:

2021/08/13 09:14:25.864932 compute_client_command.go:255: Updating volume attachment to the state LOGIN_SUCCEEDED ...
2021/08/13 09:14:26.155473 compute_client_command.go:260: Service error:NotAuthorizedOrNotFound.
volume attachment ocid1.volumeattachment.oc1.iad.<volume-attachment_ID> not found.
http status code: 404. Opc request id: <request_ID>

原因

ブロック・ボリューム管理プラグインに、iSCSIログイン・ステータス通知をサービスに送信するための十分な権限がありません。

解決方法

ブロック・ボリューム管理プラグインの権限を構成するには:

  1. 動的グループの作成: 次のコード・サンプルの一致ルールを使用して動的グループを作成し、指定したコンパートメント内のすべてのインスタンスを追加します:

    ANY {instance.compartment.id = 'ocid1.tenancy.oc1..<tenancy_ID>', instance.compartment.id = 'ocid1.compartment.oc1..<compartment_OCID>'
  2. 動的グループのポリシーの構成: 前のステップで作成した動的グループに権限を付与するポリシーを構成して、インスタンス・エージェントによるアクセスを可能にし、ブロック・ボリューム・サービスをコールして、アタッチメント構成を取得できるようにします。

    Allow dynamic-group InstantAgent to use instances in tenancy
    Allow dynamic-group InstantAgent to use volume-attachments in tenancy
ブロック・ボリューム管理プラグインのログのエラー: ユーザー・エージェントは空にできません

Oracleサービスに接続するには、コンピュート・インスタンスにパブリックIPアドレスまたはサービス・ゲートウェイが必要で、ない場合は、ボリュームのアタッチに失敗します。

詳細

ボリュームはコンソールにアタッチされているとおりに表示されず、ブロック・ボリューム管理プラグインのログにuser agent can not be blankというエラー・メッセージが表示されます。

ブロック・ボリューム管理プラグインのログは、次の場所にあります:

"/var/log/oracle-cloud-agent/plugins/oci-blockautoconfig/oci-blockautoconfig.log

次に示すのは、この問題のサンプルのエラー・ログ・エントリです:

2021/10/15 22:16:07.881953 compute_client_command.go:255: Updating volume attachment to the state LOGIN_SUCCEEDED ...
2021/10/15 22:16:07.882185 compute_client_command.go:260: user agent can not be blank
2021/10/15 22:16:07.882204 iscsi_commands_helper.go:302: user agent can not be blank
2021/10/15 22:16:07.882212 iscsi_commands_helper.go:310: user agent can not be blank

原因

ネットワーク構成が原因で、ブロック・ボリューム管理プラグインが、iSCSIログイン・ステータス通知をサービスに送信できません。

解決方法

インスタンスにパブリックIPアドレスがない場合は、仮想クラウド・ネットワーク(VCN)上にサービス・ゲートウェイを設定します。サービス・ゲートウェイを使用すると、データをパブリック・インターネットに公開することなく、Oracleサービスにプライベートにアクセスできます。次に、ブロック・ボリューム管理プラグインにサービス・ゲートウェイを設定する上での特記事項を示します:

  • サービス・ゲートウェイを作成する場合は、「Oracle Services Networkのすべての<region>サービス」というサービス・ラベルを有効にします。
  • インスタンスが含まれるサブネットのルーティングを設定する場合は、「ターゲット・タイプ」「サービス・ゲートウェイ」「宛先サービス」「Oracle Services Networkのすべての <region>サービス」に設定して、ルート・ルールを設定します。

詳細な手順は、Oracleサービスへのアクセス: サービス・ゲートウェイに関する項を参照してください。