複数のインスタンスへのボリュームのアタッチ

Oracle Cloud Infrastructure Block Volumeサービスでは、ブロック・ボリュームを複数のコンピュート・インスタンスにアタッチできます。

この機能を使用すると、読取り/書込みモードまたは読取り専用モードで、インスタンス間でブロック・ボリュームを共有できます。ブロック・ボリュームを読取り/書込みおよび共有可能としてアタッチすると、クラスタ対応ソリューションをデプロイおよび管理できます。

このトピックでは、ブロック・ボリュームを共有可能としてアタッチする方法と、この機能の制限事項および考慮事項について説明します。

使用可能なアクセス・タイプ・オプションの詳細は、ボリューム・アクセス・タイプを参照してください。単一インスタンスへのボリュームのアタッチについては、インスタンスへのブロック・ボリュームのアップロードを参照してください。

制限事項および考慮事項

  • ブロック・ボリューム・サービスは、複数のインスタンスにアタッチされたブロック・ボリュームに対する同時書込み操作の調整を提供しません。そのため、ブロック・ボリュームを読取り/書込みおよび共有可能として構成する場合は、共有ストレージの上にクラスタ対応システムまたはソリューションをデプロイする必要があります。読取り/書込みアクセスが可能な複数インスタンス・ボリュームのアタッチメントの構成を参照してください。

  • ブロック・ボリュームを読取り専用としてインスタンスにアタッチすると、これを他のインスタンスにアタッチできるのは、読取り専用としてのみです。ブロック・ボリュームを読取り/書込みとしてインスタンスにアタッチする場合は、ブロック・ボリュームをすべてのインスタンスからデタッチしてから、ブロック・ボリュームをインスタンスに読取り/書込みとして再アタッチします。

  • ブロック・ボリュームが読取り/書込み共有不可としてインスタンスにすでにアタッチされている場合、1番目のインスタンスからデタッチするまでこれを別のインスタンスにアタッチすることはできません。その後、そのインスタンスを読取り/書込み共有可能として、1番目と2番目のインスタンスの両方に再アタッチできます。

  • ブロック・ボリュームは、アタッチされているすべてのインスタンスからデタッチされるまで削除できません。「ボリューム詳細」ページの「リソース」セクションから、ブロック・ボリュームにアタッチされているインスタンスを表示する場合、選択したコンパートメント内のインスタンスのみが表示されることに注意してください。コンパートメントを変更して、ボリュームにアタッチされた追加のインスタンスをリストすることが必要になる場合があります。

  • ボリュームがUltra High Performanceレベル用に構成されていない場合、共有ボリュームに最大32のインスタンスをアタッチできます

  • Ultra High Performanceレベルで構成されたボリュームには、マルチパス対応のアタッチメントが必要です。Ultra High Performance用に構成された共有ボリュームに対して、マルチパス対応のアタッチメントを持つ最大25のインスタンスをアタッチできます。25を超えるマルチパス対応の添付を追加で添付しようとすると、添付プロセスは失敗します。

  • 読取り専用としてアタッチされたブロック・ボリュームは、デフォルトで共有可能として構成されます。

  • ブロック・ボリューム・パフォーマンスで示されたパフォーマンスの特性はボリューム単位であるため、ブロック・ボリュームが複数インスタンスにアタッチされると、アタッチされたすべてのインスタンス間でパフォーマンスが共有されます。

  • 超高パフォーマンス・レベルで構成されたボリュームも複数のインスタンスにアタッチできますが、超高パフォーマンスおよび超高パフォーマンス以外で構成されたものを含め、すべてのアタッチメントの合計IOPSおよびスループットは、ボリュームの制限が上限となります。詳細は、「超高パフォーマンス」および「超高パフォーマンス・ボリュームのためのアタッチメントの構成」を参照してください。

読取り/書込みアクセス権を持つ複数インスタンスのボリューム・アタッチメントの構成

ブロック・ボリューム・サービスでは、複数のインスタンスにアタッチされたボリュームに対する同時書込み操作の調整は行われません。無制御の読取り/書込み操作によるデータ破損を防止するには、ボリュームを使用する前に、クラスタ対応システムまたはソリューション(Oracle Cluster File Systemバージョン2 (OCFS2)など)を共有ストレージ上にインストールして構成する必要があります。

Oracle Cloud Infrastructureでの複数のインスタンスによるブロック・ボリュームのアタッチ機能を使用した共有ファイル・システムの作成で説明されているように、OCFS2を使用したシナリオのサンプル・ウォークスルーを確認できます。このシナリオに必要なステップのサマリーは次のとおりです:

  1. コンソール、CLIまたはAPIを使用して、ブロック・ボリュームを「読取り/書込み - 共有可能」としてインスタンスにアタッチします。

  2. OCFS2/O2CBクラスタ・ノードを設定します。

  3. OCFS2ファイル・システムおよびマウント・ポイントを作成します。

必須IAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限がない、または認可されていないというメッセージが表示された場合は、自分がどのタイプのアクセス権を持っているか、およびどのコンパートメントで作業するかを管理者に確認してください。

管理者用: ユーザーがコンピュート・インスタンスを起動するのポリシーで、既存のブロック・ボリュームをアタッチ/デタッチできることが指定されています。ボリューム管理者がブロック・ボリューム、バックアップおよびボリューム・グループを管理するのポリシーを使用すると、指定したグループはブロック・ボリュームおよびバックアップに関するすべての操作を実行できますが、インスタンスを起動することはできません。

ポリシーを初めて使用する場合は、ポリシーの開始共通ポリシーを参照してください。インスタンス、クラウド・ネットワークまたは他のCore Services APIリソースのポリシーの記述に関する参照資料については、Core Servicesの詳細を参照してください。

コンソールの使用

インスタンスの詳細ページからボリュームを複数のインスタンスにアタッチするには
  1. ナビゲーション・メニューを開き、「コンピュート」をクリックします。「コンピュート」で、「インスタンス」をクリックします。
  2. 「インスタンス」リストで、ボリュームをアタッチするインスタンスをクリックします。

  3. 「リソース」セクションで、「アタッチされたブロック・ボリューム」をクリックします。

  4. 「ブロック・ボリュームのアタッチ」をクリックします。

  5. ボリューム・アタッチメント・タイプとして「iSCSI」または「準仮想化」を選択します。

    詳細は、ボリューム・アタッチメント・タイプを参照してください。

  6. ボリューム・アクセス・タイプを選択します。複数のインスタンスに対する読取り/書込みアタッチメントを有効化する場合は「読取り/書込み - 共有可能」を、複数のインスタンスに対する読取り専用アタッチメントを有効化する場合は「読取り専用 - 共有可能」を選択します。

    詳細は、ボリューム・アクセス・タイプを参照してください。

  7. 「ブロック・ボリューム・コンパートメント」ドロップダウン・リストで、コンパートメントを選択します。

  8. アタッチするボリュームを指定します。ボリューム名を使用するには、「ボリュームの選択」を選択し、「ブロック・ボリューム」ドロップダウン・リストからボリュームを選択します。ボリュームOCIDを指定するには、「ボリュームOCIDの入力」を選択し、「ブロック・ボリュームOCID」フィールドにOCIDを入力します。

  9. インスタンスで一貫性のあるデバイス・パスがサポートされている場合は、アタッチ時に「デバイス・パス」ドロップダウン・リストからパスを選択します。これは必須であり、これにより、インスタンスの再起動後も一貫性を保つデバイス・パスをボリューム・アタッチメントに対して指定できます。

    この機能およびそれをサポートするインスタンスの詳細は、一貫性のあるデバイス・パスを使用したボリュームへの接続を参照してください

    ヒント

    コンソールからボリュームをアタッチする場合、デバイス・パスの選択はオプションではなく必須です。CLI、REST APIまたはSDKを使用してボリュームをアタッチする場合、デバイス・パスの指定はオプションです。
  10. 仮想マシン(VM)インスタンス上の準仮想化ボリューム・アタッチメントでは、オプションで、インスタンスとブロック・ボリューム・サービスのストレージ・サーバー間で転送されるデータを暗号化できます。これを行うには、「転送中暗号化の使用」チェック・ボックスを選択します。ボールト・サービスを使用して管理する暗号化キーを使用するようにボリュームを構成した場合、このキーが転送中暗号化に使用されます。それ以外の場合は、Oracle提供の暗号化キーが使用されます。

    転送中暗号化をサポートするベア・メタル・インスタンス上のiSCSIアタッチメントの場合、転送中暗号化はデフォルトで有効であり、構成はできません。

    転送中暗号化の詳細は、ブロック・ボリュームの暗号化を参照してください。

  11. 「アタッチ」をクリックします。

    ボリュームのアイコンに「アタッチ中」と表示されなくなった場合、アタッチメント・タイプが「準仮想化」であれば、そのボリュームを使用できます。アタッチメント・タイプが「iSCSI」の場合、まずボリュームに接続する必要があります。詳細は、ブロック・ボリュームへの接続を参照してください。

    Linuxベース・インスタンスで、インスタンスの起動時にブロック・ボリュームを自動的にマウントする場合は、/etc/fstabファイル内に特定のオプションを設定する必要があります。そうしない場合、インスタンスの起動に失敗することがあります。これは、iSCSIアタッチメント・タイプと準仮想化アタッチメント・タイプの両方に適用されます。一貫性のあるデバイス・パスを使用しているボリュームについては、一貫性のあるデバイス・パスを使用したブロック・ボリューム用のfstabオプションを参照してください。それ以外のすべてのボリュームについては、従来のfstabオプションを参照してください。

ブロック・ボリュームの詳細ページからボリュームを複数のインスタンスにアタッチするには
  1. ナビゲーション・メニューを開き、「ストレージ」をクリックします。「ブロック・ストレージ」で、「ブロック・ボリューム」をクリックします
  2. 「ブロック・ボリューム」リストで、インスタンスにアタッチするブロック・ボリュームをクリックします。

  3. 「リソース」セクションで、「アタッチされたインスタンス」をクリックします。

  4. 「インスタンスにアタッチ」をクリックします。

  5. ボリューム・アタッチメント・タイプとして「iSCSI」または「準仮想化」を選択します。

    詳細は、ボリューム・アタッチメント・タイプを参照してください。

  6. ボリューム・アクセス・タイプを選択します。複数のインスタンスに対する読取り/書込みアタッチメントを有効化する場合は「読取り/書込み - 共有可能」を、複数のインスタンスに対する読取り専用アタッチメントを有効化する場合は「読取り専用 - 共有可能」を選択します。

    詳細は、ボリューム・アクセス・タイプを参照してください。

  7. 「インスタンスの選択」ドロップダウン・リストで、インスタンスを選択します。インスタンスがリストされたデフォルトのコンパートメントとは異なるコンパートメントにある場合は、「コンパートメントの変更」をクリックします。OCIDを使用してインスタンスを指定する場合、ENTER INSTANCE OCIDオプションを選択し、テキストボックスにOCIDをコピーします。

  8. インスタンスで一貫性のあるデバイス・パスがサポートされている場合は、アタッチ時に「デバイス・パス」ドロップダウン・リストからパスを選択します。これは必須であり、これにより、インスタンスの再起動後も一貫性を保つデバイス・パスをボリューム・アタッチメントに対して指定できます。

    この機能およびそれをサポートするインスタンスの詳細は、一貫性のあるデバイス・パスを使用したボリュームへの接続を参照してください

    ヒント

    コンソールからボリュームをアタッチする場合、デバイス・パスの選択はオプションではなく必須です。CLI、REST APIまたはSDKを使用してボリュームをアタッチする場合、デバイス・パスの指定はオプションです。
  9. 仮想マシン(VM)インスタンス上の準仮想化ボリューム・アタッチメントでは、オプションで、インスタンスとブロック・ボリューム・サービスのストレージ・サーバー間で転送されるデータを暗号化できます。これを行うには、「転送中暗号化の使用」チェック・ボックスを選択します。ボールト・サービスを使用して管理する暗号化キーを使用するようにボリュームを構成した場合、このキーが転送中暗号化に使用されます。それ以外の場合は、Oracle提供の暗号化キーが使用されます。

    転送中暗号化をサポートするベア・メタル・インスタンス上のiSCSIアタッチメントの場合、転送中暗号化はデフォルトで有効であり、構成はできません。

    転送中暗号化の詳細は、ブロック・ボリュームの暗号化を参照してください。

  10. 「アタッチ」をクリックします。

    ボリュームのアイコンに「アタッチ中」と表示されなくなった場合、アタッチメント・タイプが「準仮想化」であれば、そのボリュームを使用できます。アタッチメント・タイプが「iSCSI」の場合、まずボリュームに接続する必要があります。詳細は、ブロック・ボリュームへの接続を参照してください。

    Linuxベース・インスタンスで、インスタンスの起動時にブロック・ボリュームを自動的にマウントする場合は、/etc/fstabファイル内に特定のオプションを設定する必要があります。そうしない場合、インスタンスの起動に失敗することがあります。これは、iSCSIアタッチメント・タイプと準仮想化アタッチメント・タイプの両方に適用されます。一貫性のあるデバイス・パスを使用しているボリュームについては、一貫性のあるデバイス・パスを使用したブロック・ボリューム用のfstabオプションを参照してください。それ以外のすべてのボリュームについては、従来のfstabオプションを参照してください。

ボリュームの詳細ページから、ボリュームにアタッチされているインスタンスを表示するには
  1. ナビゲーション・メニューを開き、「ストレージ」をクリックします。「ブロック・ストレージ」で、「ブロック・ボリューム」をクリックします
  2. 「ブロック・ボリューム」リストで、アタッチされたインスタンスを表示するブロック・ボリュームをクリックします。

  3. 「リソース」セクションで、「アタッチされたインスタンス」をクリックします。

選択したコンパートメントにアタッチされたすべてのインスタンスがリストに表示されます。他のコンパートメントにアタッチされたインスタンスを表示するには、「COMPARTMENT」ドロップダウン・リストでコンパートメントを変更します。

インスタンスの詳細ページからインスタンスにアタッチされたボリュームを表示するには
  1. ナビゲーション・メニューを開き、「コンピュート」をクリックします。「コンピュート」で、「インスタンス」をクリックします。
  2. 「インスタンス」リストで、アタッチされたボリュームを表示するインスタンスをクリックします。

  3. 「リソース」セクションで、「アタッチされたブロック・ボリューム」をクリックします。

インスタンスにアタッチされたすべてのブロック・ボリュームが、ブロック・ボリュームが含まれるコンパートメントに関係なくリストに表示されます。

CLIの使用

CLIの使用の詳細は、コマンド・ライン・インタフェース(CLI)を参照してください。

ボリュームを共有可能な読取り/書込みとしてインスタンスにアタッチするには

コマンド・プロンプトを開き、次を実行します:

oci compute volume-attachment attach --instance-id <instance_ID> --type <attachment_type> --volume-id <volume_ID>  --read-only true/false  --is-shareable true

例:

oci compute volume-attachment attach --instance-id ocid1.instance.oc1..<unique_ID> --type iscsi --volume-id ocid1.volume.oc1..<unique_ID> --read-only false --is-shareable true
ボリュームにアタッチされているすべてのインスタンスをリストするには

コマンド・プロンプトを開き、次を実行します:

oci compute volume-attachment list --compartment-id <compartment_ID> --volume-id <volume_ID>

例:

oci compute volume-attachment attach --compartment-id ocid1.compartment.oc1..<unique_ID> --volume-id ocid1.volume.oc1..<unique_ID>
ノート

この操作では、指定されたコンパートメントにあるアタッチ済インスタンスのみが返されます。指定されたボリュームにアタッチされたインスタンスを含む各コンパートメントに対してこの操作を実行する必要があります。

APIの使用

次のAPIを使用して、ボリュームをアタッチし、ボリューム・アタッチメントをインスタンスに使用します:

  • AttachVolume

    AttachVolumeDetailsisShareable属性をtrueに設定します。

  • GetVolumeAttachment
  • ListVolumeAttachments

    ListVolumeAttachments操作は、指定したコンパートメントにあるアタッチ済インスタンスのみを返します。指定されたボリュームにアタッチされたインスタンスを含む各コンパートメントに対してこの操作を実行する必要があります。

APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。

その他のリソース

Oracle Cloud Infrastructureでの共有ファイル・システムのデプロイメント例は、次のリンクを参照してください。

  • BeeGFS: oci-beegfsの自動化されたterraformデプロイメント用のGitHubプロジェクト

  • Lustre: oci-lustreの自動化されたterraformデプロイメント用のGitHubプロジェクト

  • Oracle Cloud Infrastructure: oci-ibm-spectrum-scaleでのIBM Spectrum Scale (GPFS)分散パラレル・ファイル・システムの自動化されたterraformデプロイメント用のGitHubプロジェクト