永続ディスクをインスタンスに追加する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

空の永続ディスクを作成するか、データソースからディスクを作成できます。永続ディスクは、仮想マシン(VM)インスタンスのブートディスクとして使用できます。または、VM にアタッチするデータディスクとして使用することもできます。このドキュメントでは、次の操作を行う方法について説明します。

  • 空の非ブートゾーン永続ディスクを作成し、VM インスタンスにアタッチします。
  • このディスクはデータやファイル システムが存在しない状態で起動するため、フォーマットしてマウントします。

永続ディスクに関する一般的な情報と使用可能なディスクタイプについては、永続ディスクの概要をご覧ください。

始める前に

制限事項

  • インスタンスの作成時に、最大 127 個のセカンダリ(非ブート)ゾーン永続ディスクをアタッチできます。
  • 合計接続容量は 1 インスタンスあたり 257 TB です。大容量のボリュームでパフォーマンスを最大限に高める方法については、論理ボリューム サイズをご覧ください。

VM に非ブートディスクを追加する

Google Cloud コンソールGoogle Cloud CLI、または Compute Engine API を使用して、非ブート ゾーンディスクを作成してアタッチします。

Google Cloud コンソール でディスクを作成する場合、デフォルトのディスクタイプpd-balanced です。gcloud CLI または Compute Engine API を使用してディスクを作成する場合、デフォルトのディスクタイプは pd-standard です。

Console

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

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

  2. このチェックボックスをオンにして、ディスクを追加するインスタンス名をクリックします。

  3. [VM インスタンスの詳細] ページで、[編集] をクリックします。

  4. [追加ディスク] で、[新しいディスクを追加] をクリックします。

  5. ディスクの名前を指定して、ディスクのプロパティを構成し、[ソースの種類] として [空白] を選択します。

  6. [完了] をクリックしてディスクの構成を完了します。

  7. [保存] をクリックして変更をインスタンスに適用し、新しいディスクを追加します。

gcloud

  1. gcloud compute disks create コマンドを使用してゾーン永続ディスクを作成します。

    gcloud compute disks create DISK_NAME \
      --size DISK_SIZE \
      --type DISK_TYPE
    

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

    • DISK_NAME: 新しいディスクの名前。
    • DISK_SIZE: 新しいディスクのサイズ(ギガバイト単位)。使用できるサイズは、1 GB 単位で 10~65,536 GB の範囲です。
    • DISK_TYPE: 永続ディスクのタイプの完全な URL または部分的な URL例: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd
  2. ディスクを作成したら、実行中または停止しているインスタンスにアタッチします。gcloud compute instances attach-disk コマンドを使用します。

    gcloud compute instances attach-disk INSTANCE_NAME \
      --disk DISK_NAME
    

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

    • INSTANCE_NAME: 新しいゾーン永続ディスクを追加するインスタンスの名前。
    • DISK_NAME: インスタンスにアタッチする新しいディスクの名前。
  3. gcloud compute disks describe コマンドを使用して、ディスクの説明を表示します。

Terraform

ディスクを作成するには、google_compute_disk リソースを使用します。

resource "google_compute_disk" "default" {
  name = "disk-data"
  type = "pd-standard"
  zone = "us-west1-a"
  size = "5"
}

ディスクを 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
    }
  }
}

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

API

  1. API で、disks.insert メソッドを使用して POST リクエストを作成し、ゾーン永続ディスクを作成します。namesizeGbtype プロパティを含めます。このディスクを空のフォーマットされていない非ブートディスクとして作成する場合、ソースイメージやソース スナップショットを指定しないでください。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
     "name": "DISK_NAME",
     "sizeGb": "DISK_SIZE",
     "type": "DISK_TYPE"
    }
    

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

    • PROJECT_ID: プロジェクト ID。
    • ZONE: インスタンスと新しいディスクが配置されるゾーン。
    • DISK_NAME: 新しいディスクの名前。
    • DISK_SIZE: 新しいディスクのサイズ(ギガバイト単位)。使用できるサイズは、1 GB 単位で 10~65,536 GB の範囲です。
    • DISK_TYPE: 永続ディスクのタイプの完全な URL または部分的な URL例: https://www.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE/diskTypes/pd-ssd
  2. compute.instances.attachDisk メソッドに対する POST リクエストを作成し、作成したゾーン永続ディスクへの URL をリクエスト本文に含めます。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
    
    {
     "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
    

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

    • PROJECT_ID: プロジェクト ID
    • ZONE: インスタンスと新しいディスクが配置されるゾーン。
    • INSTANCE_NAME: 新しい永続ディスクを追加するインスタンスの名前。
    • DISK_NAME: 新しいディスクの名前

新しいディスクを作成して VM にアタッチしたら、ディスクをフォーマットしてマウントする必要があります。この操作を行うことで、オペレーティング システムが保存容量を使用できるようになります。

Linux VM に非ブートディスクをフォーマットしてマウントする

VM への接続

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

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

  2. 新たにディスクをアタッチしたインスタンスの横にある [SSH] ボタンをクリックします。ブラウザが開き、インスタンスに対するターミナル接続が表示されます。

ディスクのフォーマット

  1. ターミナルで、lsblk コマンドを使用してインスタンスにアタッチされているディスクを一覧表示し、フォーマットしてマウントするディスクを探します。

      $ sudo lsblk
      
      NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda      8:0    0   10G  0 disk
      └─sda1   8:1    0   10G  0 part /
      sdb      8:16   0  250G  0 disk
      

    この例では、sdb が新しい空の永続ディスクのデバイス名です。

  2. mkfs ツールを使用してディスクをフォーマットします。このコマンドを実行すると、指定したディスクからすべてのデータが削除されます。正しいディスク デバイスを指定してください。

    ファイル形式は任意ですが、パーティション分割テーブルのない単一の ext4 ファイル システムがおすすめです。ディスク パーティションを変更しなくても、後でディスクのサイズを増やすことができます。

    ディスクのパフォーマンスを最大限に引き出すには、-E フラグで推奨フォーマット オプションを使用します。このセカンダリ ディスクではルート ボリューム用に領域を確保する必要はありません。-m 0 を指定して、使用可能なディスク容量をすべて使用します。

     $ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/DEVICE_NAME
     

    DEVICE_NAME をフォーマットするディスクのデバイス名に置き換えます。この例では、sdb を指定し、パーティション分割テーブルを作成せずにディスク全体をフォーマットします。

ディスクのマウント

  1. VM 上の新しいディスクのマウント ポイントにするディレクトリを作成します。任意のディレクトリを使用できます。次の例では、/mnt/disks/ の下にディレクトリを作成します。

    $ sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR は、ディスクをマウントするディレクトリに置き換えます。

  2. mount ツールを使用してインスタンスにディスクをマウントし、discard オプションを有効にします。

    $ sudo mount -o discard,defaults /dev/DEVICE_NAME /mnt/disks/MOUNT_DIR
    

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

    • DEVICE_NAME: マウントするディスクのデバイス名。
    • MOUNT_DIR: ディスクをマウントするディレクトリ。
  3. ディスクに読み取り権限と書き込み権限を構成します。この例では、ディスクへの書き込みアクセス権をすべてのユーザーに付与します。

    $ sudo chmod a+w /mnt/disks/MOUNT_DIR
    

    MOUNT_DIR は、ディスクをマウントしたディレクトリに置き換えます。

VM 再起動時に自動マウントを構成する

ディスクを /etc/fstab ファイルに追加して、VM の再起動時にディスクが自動的にマウントされるようにします。Linux オペレーティング システムでは、再起動するたびにデバイス名が変わることがありますが、ディスクをシステム間で移動してもデバイス UUID は常に同じボリュームを指します。このため、デバイス名の代わりにデバイスの UUID を使用して、VM の再起動時に自動マウントを構成することをおすすめします。

  1. 現在の /etc/fstab ファイルのバックアップを作成します。

    $ sudo cp /etc/fstab /etc/fstab.backup
    
  2. blkid コマンドを使用して、ディスクの UUID を一覧表示します。

    $ sudo blkid /dev/DEVICE_NAME
    

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

    • DEVICE_NAME: 自動的にマウントするディスクのデバイス名。ディスクにパーティション分割テーブルを作成した場合は、デバイス名に接尾辞を追加して、マウントするパーティションを指定します。たとえば、sdb がディスクのデバイス名の場合、sdb1 はパーティションの名前です。
  3. /etc/fstab ファイルをテキスト エディタで開き、UUID を含むエントリを作成します。次に例を示します。

    UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

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

    • UUID_VALUE: 前の手順の出力に示されているディスクの UUID
    • MOUNT_DIR: ディスクをマウントしたディレクトリ
    • MOUNT_OPTION: ブート時にゾーン永続ディスクをマウントできない場合のオペレーティング システムの動作を指定します。有効な値については、Linux fstab のドキュメント4 番目のフィールドをご覧ください。ディスクが使用できない場合でもシステムを起動できるようにするには、nofail マウント オプションを使用します。
  4. cat コマンドを使用して、/etc/fstab エントリが正しいことを確認します。

    $ cat /etc/fstab
    
    LABEL=cloudimg-rootfs   /        ext4   defaults        0 0
    UUID=d761bdc5-7e2a-4529-a393-b9aefdb623b6 /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    
    

このディスクを切断する場合、またはこの VM のブートディスクからスナップショットを作成する場合は、/etc/fstab ファイルを編集して、このディスクのエントリを削除します。MOUNT_OPTIONnofail または nobootwait に設定されている場合でも、VM に接続されているデバイスとの /etc/fstab ファイルの同期を維持してください。ブートディスクのスナップショットを作成する前、またはディスクを切断する前に、これらのエントリを削除してください。

Windows VM に非ブートディスクをフォーマットしてマウントする

Windows ディスク管理ユーティリティを使用して、Windows VM 上の新しいディスクをフォーマットしてマウントします。

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

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

  2. 新しい空のディスクがアタッチされている VM の横にある [RDP] ボタンをクリックします。ブラウザ上でインスタンスに対する RDP 接続が開きます。

  3. Windows [スタート] ボタンを右クリックして [ディスクの管理] を選択します。

    Windows の [スタート] ボタンを右クリックして、[ディスクの管理] を選択します。

  4. 新しいディスクのパーティショニング スキームを選択するように求められます。[GPT] を選択して、[OK] をクリックします。

    ディスク初期化ウィンドウでパーティション化スキームを選択します。

  5. ディスクが初期化されたら、未割り当てディスク領域を右クリックして、[新しいシンプル ボリューム] を選択します。

    アタッチしたディスクで新しいシンプル ボリュームを作成します。

  6. 新しいシンプル ボリューム ウィザードの指示に従って新しいボリュームを構成します。任意のパーティション形式を使用できますが、この例では NTFS を選択します。[クイック フォーマットする] にもチェックを入れて、フォーマット処理を高速化します。必要に応じて、[アロケーション ユニット サイズ] フィールドでクラスタのサイズを設定します。クラスタのサイズによってパーティションの最大サイズが制限されます。ゾーン永続ディスクとこのパーティションのサイズを後で変更するのであれば、この点に注意してください。

    [新しいシンプル ボリューム ウィザード] でパーティションのフォーマット タイプを選択します。

  7. ウィザードが完了してボリュームのフォーマットが終了したら、接続されたディスクのリストで Status 列を調べて、新しいディスクが Healthy ステータスとなっていることを確認します。

    ディスクが正常なステータスでオンラインであることを確認します。

これで、ディスクにファイルを書き込むことができます。

次のステップ