VM に非ブートディスクをアタッチする


このページでは、既存の非ブートディスクを 1 つ以上の仮想マシン(VM)インスタンスにアタッチする方法について説明します。

VM のブートディスクを作成または変更するには、ブートディスクを作成するブートディスクを切断して再アタッチするをご覧ください。

新しいディスクを作成するには、新しい Persistent Disk ボリュームを作成する新しい Hyperdisk ボリュームを作成するをご覧ください。

必要なロールと権限

VM にディスクをアタッチするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールの付与を管理者に依頼します。

  • Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1
  • サービス アカウントとして実行できる VM インスタンスに接続する: サービス アカウント ユーザー(v1)(roles/iam.serviceAccountUser ロール)

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、ディスクを VM にアタッチするために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

ディスクを VM にアタッチするには、次の権限が必要です。

  • ディスクを VM にアタッチするには:
    • VM に対する compute.instances.attachDisk
    • VM に対する compute.instances.attachDisk
    • VM にアタッチするディスクに対する compute.disks.use
  • アタッチされたボリュームをフォーマットしてマウントするには: VM に対する compute.instances.setMetadata 権限

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

ディスク アタッチメント モード

ディスクを VM にアタッチするときに、ディスク アタッチメント モードを指定して、VM がディスク上のデータにアクセスする方法を指定します。読み取り専用モードまたは読み取り / 書き込みモードを選択できます。

デフォルトのモードは読み取り / 書き込みです。

VM 間でディスクを共有する

ディスクを各 VM にアタッチして、各 VM がディスクに同時にアクセスできるように、VM 間で同じディスクを共有できます。ディスクのタイプと VM のマシンタイプがサポートしている場合、ディスクを複数の VM にアタッチできます。

ディスクを複数の VM にアタッチするには、各 VM に対して VM に非ブートディスクをアタッチするの手順に沿って操作します。

ディスクをアタッチするすべての VM で同じディスク アタッチメント モードを使用する必要があります。たとえば、ディスクを読み取り / 書き込みモードで 1 つの VM にアタッチし、同時に読み取り専用モードで別の VM にアタッチすることはできません。

サポートされているディスクタイプなど、ディスクを複数の VM にアタッチする方法については、VM 間でディスクを共有するをご覧ください。

Hyperdisk ボリュームを複数の VM にアタッチする

Hyperdisk ボリュームを複数の VM にアタッチするには、ディスクのアクセスモードがユースケースに適した値に設定されていることを確認します。アクセスモードを設定する手順については、ディスクのアクセスモードを設定するをご覧ください。

Hyperdisk ボリュームを VM にアタッチする場合は、ディスクのアクセスモードと競合しないディスク アタッチメント モードを選択する必要があります。たとえば、シングルライター モードまたはマルチライター モードのディスクで読み取り専用アタッチモードを使用することはできません。

制限事項

ディスクを VM にアタッチする場合は、次の制限事項に注意してください。

  • VM には、最大 127 個のセカンダリで非ブートのゾーンディスクをアタッチできます。

  • VM の最大ディスク容量を超える場合、ディスクを VM にアタッチすることはできません。

  • 次のディスクタイプは読み取り専用モードをサポートしていません。

    • Hyperdisk Balanced
    • Hyperdisk Throughput
    • Hyperdisk Balanced の高可用性
    • Hyperdisk Extreme
  • ディスクを複数の VM にアタッチする場合は、すべての VM に同じディスク アタッチメント モードを使用する必要があります。

  • ディスクを複数の VM にアタッチする場合は、追加の制限が適用されます。読み取り専用モードマルチライター モードの VM 間でディスクを共有する場合の制限事項をご覧ください。

  • 複数の VM にアタッチされたディスクは自動削除をサポートしていません。つまり、VM の削除時に自動削除することはできません。

VM に非ブートディスクをアタッチする

ブートゾーン以外のディスクを VM にアタッチするには、Google Cloud コンソール、Google Cloud CLI、または REST を使用します。

ディスクを VM にアタッチする場合は、次の点に注意してください。

  • カスタム デバイス名を使用する: VM にディスクをアタッチするときに、カスタム デバイス名を指定することをおすすめします。指定した名前は、ゲスト OS でディスクのシンボリック リンクを生成するために使用されます。これにより、VM 上のディスクの識別と管理が容易になります。

  • 複数の VM にディスクをアタッチする: 複数の VM にディスクをアタッチするには、VM ごとにこのセクションの手順を繰り返します。ディスクをアタッチするすべての VM で同じディスク アタッチメント モードを使用する必要があります。

コンソール

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. ディスクを追加する VM の名前をクリックします。

  3. 詳細ページで [編集] をクリックします。

  4. [ストレージ] セクションの [追加ディスク] で、[+ 既存のディスクを接続] をクリックします。

  5. [ディスク] リストで、アタッチするディスクを選択します。ディスクがリストにない場合は、VM と同じ場所にあることを確認します。ゾーンディスクの場合は同じゾーン、リージョン ディスクの場合は同じリージョンにあることを確認します。

  6. [ディスク アタッチメント モード] で [読み取り専用] を選択して、VM にディスクからの読み取りのみを許可します。VM の読み取り / 書き込みアクセスを許可するには、[読み取り / 書き込み] を選択します。

  7. [削除ルール] で、VM の削除時にディスクを削除するかどうかを指定します。VM の削除時にディスクを保持するには、[ディスクを維持] を選択します。VM の削除時にディスクを削除するには、[ディスクを削除] を選択します。ディスクを複数の VM にアタッチする場合は、[ディスクを維持] を選択する必要があります。

  8. オプション: [デバイス名] という見出しで、[カスタム デバイス名を使用する] オプションを選択します。入力した名前は、ディスクのシンボリック リンクを生成するために使用されます。これにより、ディスクを識別しやすくなります。

  9. ディスクに変更を適用するには、[完了] をクリックします。

  10. [保存] をクリックして変更を適用し、ディスクを VM にアタッチします。

gcloud

ディスクを VM にアタッチするには、gcloud compute instances attach-disk コマンドを使用します。ディスク アタッチメント モードを指定するには、mode フラグを使用します。

gcloud compute instances attach-disk VM_NAME \
    --disk DISK_NAME --device-name=DEVICE_NAME
    --mode DISK_ATTACHMENT_MODE

次のように置き換えます。

  • VM_NAME: 新しいゾーン永続ディスクを追加する VM の名前
  • DISK_NAME: VM にアタッチする新しいディスクの名前
  • DEVICE_NAME: オプション。ゲスト OS がディスクの識別に使用する名前
  • DISK_ATTACHMENT_MODE: 省略可。ディスクを VM にアタッチする方法。読み取り専用モードの場合は、ro に設定します。読み取り / 書き込みモードの場合は、rw に設定するか、このフラグを省略します(rw がデフォルトです)。

Terraform

ディスクを VM にアタッチするには、google_compute_instance リソースを使用します。

resource "google_compute_instance" "test_node" {
  name         = "test-node"
  machine_type = "f1-micro"
  zone         = "us-west1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  attached_disk {
    source      = google_compute_disk.default.id
    device_name = google_compute_disk.default.name
  }

  network_interface {
    network = "default"
    access_config {
      # Ephemeral IP
    }
  }

  # Ignore changes for persistent disk attachments
  lifecycle {
    ignore_changes = [attached_disk]
  }


}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

REST

ディスクを VM にアタッチするには、compute.instances.attachDisk メソッドに対して POST リクエストを作成し、アタッチするディスクへの URL を指定します。

ディスクのアタッチメント モードを指定するには、mode パラメータを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk

{
   "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME",
   "deviceName": DEVICE_NAME,
   "mode" : "DISK_ATTACHMENT_MODE"
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • ZONE: VM とディスクが配置されているゾーン
  • VM_NAME: ディスクをアタッチする VM の名前
  • DISK_NAME: アタッチするディスクの名前
  • DEVICE_NAME: オプション。ゲスト OS がシンボリック リンクの作成に使用する名前。ディスクの識別に役立ちます。
  • DISK_ATTACHMENT_MODE: 省略可。ディスクを VM にアタッチする方法。読み取り専用モードの場合は、READ_ONLY を使用します。読み取り / 書き込みモードの場合は、READ_WRITE に設定します。READ_WRITE はデフォルトであるため、省略することもできます。

ディスクを VM にアタッチしたら、VM に接続し、VM のオペレーティング システム(OS)でディスクを使用できるようにします。

  • 空のディスクをアタッチした場合は、ディスクをフォーマットしてマウントします。
  • 空ではないディスクをアタッチした場合は、ディスクをマウントします。

Linux VM または Windows VM で新しいディスクをフォーマットしてマウントする方法をご確認ください。

次のステップ