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


このドキュメントでは、非ブート ゾーンディスクを VM にアタッチする方法について説明します。

仮想マシン(VM)インスタンス用のディスクを構成する場合、次の方法で非ブートディスクを作成できます。

  • VM の作成時にディスクを作成してアタッチする
  • ディスクを作成し、VM を作成してから、ディスクを VM にアタッチします。

このページでは、別途作成したディスクを VM にアタッチする方法について説明します。

ブートディスクの場合、OS イメージまたはディスク スナップショットからブートディスクを作成し、そのディスクを使用して VM を作成できます。詳細については、カスタマイズされたブートディスクを作成するをご覧ください。

必要なロールと権限

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 には、最大 127 個のセカンダリで非ブートのゾーンディスクをアタッチできます。
  • VM の最大ディスク容量を超える場合、ディスクを VM にアタッチすることはできません。

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

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

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

コンソール

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

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

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

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

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

  5. ディスク名を選択します。

  6. ディスクのアタッチメント モードと削除ルールを選択します。

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

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

gcloud

ディスクを VM にアタッチするには、gcloud compute instances attach-disk コマンドを使用します。

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

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

  • VM_NAME: 新しいゾーン永続ディスクを追加する VM の名前
  • DISK_NAME: VM にアタッチする新しいディスクの名前
  • DEVICE_NAME: オプション。ゲスト OS がディスクの識別に使用する名前

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 を指定します。

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
}

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

  • PROJECT_ID: プロジェクト ID
  • ZONE: VM とディスクが配置されているゾーン
  • VM_NAME: ディスクをアタッチする VM の名前
  • DISK_NAME: アタッチするディスクの名前
  • DEVICE_NAME: オプション。ゲスト OS がシンボリック リンクの作成に使用する名前。ディスクの識別に役立ちます。

ディスクを VM にアタッチした後、VM のゲスト オペレーティング システムが使用可能な保存容量を使用する前に、ディスクをフォーマットしてマウントする必要があります。

次のステップ