ゾーン永続ディスクの追加またはサイズ変更


インスタンス上に新しいゾーン永続ディスクを追加してフォーマットする方法について説明します。また、このページでは、ゾーン永続ブートディスクとセカンダリ(非ブート)ゾーン永続ディスクの両方のサイズを変更する方法についても説明します。

ゾーン永続ディスクには、標準のハードディスク ドライブ(HDD)またはソリッド ステート ドライブ(SSD)が使用できます。ゾーン永続ディスクの概要と使用可能な永続ディスクの種類については、永続ディスクの概要を参照してください。ゾーン標準永続ディスクまたはゾーン SSD 永続ディスクのいずれかがパフォーマンスや柔軟性のすべての要件を満たしていない場合は、他のストレージ オプションをインスタンスに追加できます。

空のディスクを作成することも、ソースからディスクを作成することもできます。空のディスクを作成する場合、新しいゾーン永続ディスクはデータやファイル システムなしで作成します。これらのディスクは、インスタンスに接続した後に自分でフォーマットする必要があります。

次のソースから新しい永続ディスクを作成できます。

制限事項

  • ゾーン永続ディスクのサイズは大きくすることができますが、小さくすることはできません。ゾーン永続ディスクの背後で Compute Engine がハードウェアを管理しているため、ストライピングや冗長性を処理せずにディスクの追加やサイズ変更を行うことができます。予備ディスクとして大容量の 1 台を接続しておいて追加容量が必要になったときにサイズを変更することも、複数の小容量ディスクを接続してデータを複数のボリュームに分割することもできます。

  • 予期しないデータ損失を防ぐため、スナップショットを使用してディスクをバックアップすることをおすすめします。

始める前に

インスタンスへの空のゾーン永続ディスクの追加

ゾーン標準永続ディスクまたは SSD 永続ディスクを作成し、それを既存のインスタンスに追加します。インスタンスがない場合は、新しいインスタンスを作成して起動します。インスタンスの作成時に、最大 127 個のセカンダリ(非ブート)ゾーン永続ディスクを接続し、アプリケーション、データファイル、データベース、ログを別々のボリュームに保存できます。合計接続容量は 1 インスタンスあたり 257 TB です。大容量のボリュームでパフォーマンスを最大限に高める方法については、大容量論理ボリュームのパフォーマンスを参照してください。

ゾーン永続ディスクを作成して接続するには、Google Cloud Consolegcloud コマンドライン ツール、または Compute Engine API を使用します。

Console

Google Cloud Console でゾーン永続ディスクを作成して接続します。

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

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

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

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

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

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

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

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

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

gcloud

gcloud ツールでゾーン永続ディスクを作成して接続します。

  1. gcloud compute disks create コマンドを使用してゾーン永続ディスクを作成します。スループットや IOPS を上げるためにゾーン SSD 永続ディスクが必要な場合は、--type フラグで pd-ssd を指定します。

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

    以下を置き換えます。

    • DISK_NAME: 新しいディスクの名前。
    • DISK_SIZE: 新しいディスクのサイズ(ギガバイト単位)。使用できるサイズは、1 GB 単位で 10~65,536 GB の範囲です。
    • DISK_TYPE: 永続ディスクの種類。例: 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 コマンドを使用して、ディスクの説明を表示します。

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": "zones/ZONE/diskTypes/DISK_TYPE"
    }
    

    以下を置き換えます。

    • PROJECT_ID: プロジェクト ID。
    • ZONE: インスタンスと新しいディスクが配置されるゾーン。
    • DISK_NAME: 新しいディスクの名前。
    • DISK_SIZE: 新しいディスクのサイズ(ギガバイト単位)。使用できるサイズは、1 GB 単位で 10~65,536 GB の範囲です。
    • DISK_TYPE: 永続ディスクの種類。例: 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: 新しいディスクの名前

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

ゾーン永続ディスクのフォーマットとマウント

新しい空のゾーン永続ディスクはデータやファイル システムなしで作成します。このディスクは、インスタンスに接続した後に自分でフォーマットする必要があります。フォーマットのプロセスは Linux インスタンスと Windows インスタンスで異なります。

Linux インスタンス

Linux インスタンスで新しいディスクをフォーマットしてマウントします。パーティションのフォーマットや構成は任意ですが、パーティション テーブルのない単一の ext4 ファイル システムがおすすめです。追加のストレージ容量が必要な場合に、後からディスクのサイズ変更ができます。

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

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

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

  3. ターミナルで、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 が新しいゾーン永続ディスクのデバイス ID です。

  4. ディスクをフォーマットします。ファイル形式は任意ですが、パーティション テーブルのない単一の ext4 ファイル システムがおすすめです。こうすると、後でゾーン永続ディスクのサイズを変更する場合に、ディスク パーティションを変更することなく、ファイル システムのサイズを変更するだけで対応できます。

    mkfs ツールを使用してディスクをフォーマットします。このコマンドを実行すると、指定したディスクからすべてのデータが削除されます。正しいディスク デバイスを指定してください。ディスクのパフォーマンスを最大限に引き出すには、-E フラグで推奨フォーマット オプションを使用します。このセカンダリ ディスクではルート用に領域を確保する必要はありません。-m 0 を指定して、使用可能なディスク容量をすべて使用します。

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

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

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

    $ sudo mkdir -p /mnt/disks/MNT_DIR
    

    MNT_DIR は、ゾーン永続ディスクをマウントするディレクトリに置き換えます。

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

    $ sudo mount -o discard,defaults /dev/DEVICE_ID /mnt/disks/MNT_DIR
    

    以下を置き換えます。

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

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

    MNT_DIR は、ゾーン永続ディスクをマウントしたディレクトリに置き換えます。

    必要に応じて、ゾーン永続ディスクを /etc/fstab ファイルに追加して、インスタンスの再起動時にデバイスが自動的にマウントされるようにすることもできます。

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

    $ sudo cp /etc/fstab /etc/fstab.backup
    
  9. blkid コマンドを使用して、ゾーン永続ディスクの UUID を確認します。この UUID はディスクのフォーマット時にシステムによって生成されます。システム間でディスクを移動しても UUID は変更されないため、ゾーン永続ディスクのマウントには UUID を使用します。

    $ sudo blkid /dev/DEVICE_ID
    
    /dev/DEVICE_ID: UUID="UUID_VALUE" TYPE="ext4"
    

    以下を置き換えます。

    • DEVICE_ID: 自動マウントするゾーン永続ディスクのデバイス ID。ディスクにパーティション テーブルを作成した場合は、マウントするパーティションを指定します。
    • UUID_VALUE: /etc/fstab ファイルに含める必要があるゾーン永続ディスクの UUID。
  10. /etc/fstab ファイルをテキスト エディタで開き、UUID を含めたエントリを作成します。次に例を示します。

    UUID=UUID_VALUE /mnt/disks/MNT_DIR ext4 discard,defaults,NOFAIL_OPTION 0 2
    

    以下を置き換えます。

    • UUID_VALUE: /etc/fstab ファイルに含める必要があるゾーン永続ディスクの UUID。
    • MNT_DIR: ゾーン永続ディスクをマウントしたディレクトリ。
    • NOFAIL_OPTION: ブート時にゾーン永続ディスクをマウントできない場合のオペレーティング システムの動作を指定する変数。永続ディスクが利用できない場合でもシステムを起動できるようにするには、ほとんどのディストリビューションでは nofail オプション、Ubuntu 12.04 と Ubuntu 14.04 では nobootwait オプションを使用します。

    この手順は 1 つのコマンドで実行することもできます。たとえば次のコマンドは、エントリを /etc/fstab に作成し、その UUID を使用して /dev/sdb ゾーン永続ディスクを /mnt/disks/MNT_DIR にマウントします。

    $ echo UUID=`sudo blkid -s UUID -o value /dev/sdb` /mnt/disks/MNT_DIR ext4 discard,defaults,NOFAIL_OPTION 0 2 | sudo tee -a /etc/fstab
    
    UUID=c994cf26-1853-48ab-a6a5-9d7c0250fed4 /mnt/disks/MNT_DIR ext4 discard,defaults,NOFAIL_OPTION 0 2
    
    
  11. cat コマンドを使用して、/etc/fstab エントリが正しいことを確認します。

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

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

Windows インスタンス

Windows の [ディスクの管理] を使用して、Windows インスタンス上の新しいディスクをフォーマットしてマウントします。

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

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

  2. サイズを変更したディスクが含まれるインスタンスの横にある [RDP] ボタンをクリックします。ブラウザ上でインスタンスに対する RDP 接続が開きます。

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

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

  4. ゾーン永続ディスクがまだ初期化されていない場合、新しいディスクのパーティショニング スキームを選択するように求められます。[GPT] を選択して、[OK] をクリックします。

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

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

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

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

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

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

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

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

ソースディスクから永続ディスクのクローンを作成

既存の永続ディスクが VM インスタンスに接続されている場合でも、既存の永続ディスクから新しい永続ディスクのクローンを作成できます。ソースディスクのクローンを作成した後、クローンが削除されるリスクなしにソースディスクを削除できます。

ディスク クローンは、VM をスケールアウトし、データベース バックアップ検証用のレプリカを作成しながら、本番環境に悪影響を与えたり、ディスクを複製したりせずに、デバッグする本番環境データを複製する場合に便利です。また、ディスク クローンを使用して、ブートディスク以外のディスクデータを新しいプロジェクトに移動することもできます。バックアップや障害復旧などの復元力を高めるためにデータ保護が必要な場合は、ディスク クローンではなくスナップショットを使用することをおすすめします。

制限事項

  • クローンのゾーン、リージョン、ディスクタイプ(pd-standard または pd-ssd)は、ソースディスクと同じにする必要があります。
  • リージョン ディスクからゾーンディスクのクローンを作成することはできません。ゾーンディスクからリージョン ディスクのクローンを作成することはできません。
  • クローンのサイズは、ソースディスクのサイズ以上にする必要があります。Google Cloud Console を使用してクローンを作成する場合、ディスクサイズを指定できません。また、クローンはソースディスクと同じサイズになります。
  • 顧客指定の暗号鍵または顧客管理の暗号鍵を使用してソースディスクを暗号化する場合は、同じ鍵を使用してクローンを暗号化する必要があります。詳細については、暗号化されたソースディスクのクローンの作成をご覧ください。
  • 特定のソースディスクのクローンは 30 秒ごとに 1 つだけ作成できます。
  • 特定のソースディスクで作成できるディスク クローンは合計 1000 個までです。この上限を超えると、internalError が返されます。

ディスクのクローンの作成

Console

  1. Google Cloud Console で [ディスク] ページに移動し、プロジェクト内のゾーン永続ディスクのリストを表示します。

    [ディスク] に移動

  2. クローンを作成するディスクを探します。

  3. [アクション] のメニューボタンをクリックし、[ディスクのクローン作成] を選択します。

クローンを作成します。

  1. [ディスクのクローン作成] パネルで、新しいディスクの名前を指定します。
  2. [プロパティ] で、新しいディスクのその他の詳細を確認します。
  3. [保存] をクリックします。

gcloud

gcloud ツールで disks create コマンドを実行して、--source-disk を指定します。次の例では、ソースディスクのクローンを作成して、別のプロジェクトの新しいディスクに保存します。


gcloud compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME /
--description="cloned disk" --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME

API

API で、compute.disks.insert メソッドに対して POST リクエストを作成します。リクエストの本文で、name パラメータと sourceDisk パラメータを指定します。クローンは、ソースディスクから省略されたすべてのプロパティを継承します。次の例では、ソースディスクのクローンを作成して、別のプロジェクトの新しいディスクに保存します。


POST https://compute.googleapis.com/compute/v1/projects/TARGET_PROJECT_ID/zones/ZONE/disks

{
  "name": "TARGET_DISK_NAME"
  "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME"
}

暗号化されたソースディスクのクローンを作成

顧客指定の暗号鍵を使用してソースディスクを暗号化する場合は、同じ鍵を使用してクローンを暗号化する必要があります。

Console

[復号と暗号化] で、ソースディスクの暗号鍵を指定します。

gcloud

ディスク クローンを作成するときに、--csek-key-file フラグを使用してソースディスクの暗号鍵を指定します。RSA でラップされた鍵を使用している場合は、gcloud beta コンポーネントを使用します。


gcloud beta compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME /
--description="cloned disk" --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME
--csek-key-file example-key-file.json

API

diskEncryptionKey プロパティを使用してソースディスクの暗号鍵を指定します。


POST https://compute.googleapis.com/compute/beta/projects/TARGET_PROJECT_ID/zones/ZONE/disks

{
  "name": "TARGET_DISK_NAME"
  "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME"
  "diskEncryptionKey": {
    "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  },
}

顧客管理の暗号鍵を使用してソースディスクを暗号化する場合は、同じ鍵を使用してクローンを暗号化する必要があります。

Console

Compute Engine では、ソースディスク暗号鍵を使用してクローンが自動的に暗号化されます。

gcloud

ディスク クローンを作成するときに、--kms-key フラグを使用してソースディスクの鍵を指定します。RSA でラップされた鍵を使用している場合は、gcloud beta コンポーネントを使用します。


gcloud beta compute disks create projects/TARGET_PROJECT_ID/zones/ZONE/disks/TARGET_DISK_NAME /
--description="cloned disk" --source-disk=projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME
--kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

API

ディスク クローンを作成するときに、kmsKeyName プロパティを使用してソースディスクの鍵を指定します。


POST https://compute.googleapis.com/compute/beta/projects/TARGET_PROJECT_ID/zones/ZONE/disks

{
  "name": "TARGET_DISK_NAME"
  "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME"
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
}

ゾーン永続ディスクのサイズ変更

インスタンスに追加のストレージ容量が必要な場合、ゾーン永続ディスクのサイズを変更できます。データを固有のパーティションに分割する必要がある場合にのみ、複数のセカンダリ ディスクを接続します。

実行中のインスタンスに接続しているかどうにかかわらず、いつでもサイズを変更できます。

ディスクのサイズを変更しても、ディスクデータの削除や変更は行われません。ただし、変更を加える前にディスクのスナップショットを作成しておくことをおすすめします。

Console

  1. [ディスク] ページに移動して、プロジェクトのゾーン永続ディスクのリストを表示します。

    [ディスク] ページに移動

  2. サイズを変更するディスクの名前をクリックします。

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

  4. [サイズ] フィールドに、ディスクの新しいサイズを入力します。MBR パーティション テーブルがあるブートディスクとセカンダリ ディスクのサイズは、最大 2 TB にまでしか変更できません。

  5. [保存] をクリックして、変更をディスクに適用します。

  6. ディスクをサイズ変更したら、オペレーティング システムが追加の容量にアクセスできるように、ファイル システムをサイズ変更する必要があります。

gcloud

gcloud ツールで、disks resize コマンドを使用して --size フラグを指定し、必要なディスクサイズをギガバイト単位で設定します。

gcloud compute disks resize DISK_NAME --size DISK_SIZE

以下を置き換えます。

  • DISK_NAME: サイズ変更するディスクの名前。
  • DISK_SIZE: ディスクの新しいサイズ(ギガバイト単位)。MBR パーティション テーブルがあるブートディスクとセカンダリ ディスクのサイズは、最大 2 TB にまでしか変更できません。

ディスクをサイズ変更したら、オペレーティング システムが追加の容量にアクセスできるように、ファイル システムをサイズ変更する必要があります。

API

API で、compute.disks.resize メソッドに対して POST リクエストを作成します。リクエストの本文で sizeGb パラメータを指定し、それをディスクサイズ(ギガバイト単位)に設定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/resize

{
 "sizeGb": "DISK_SIZE"
}

以下を置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • ZONE: ディスクが配置されているゾーン。
  • DISK_NAME: サイズを変更するディスクの名前。
  • DISK_SIZE: ディスクの新しいサイズ(ギガバイト単位)。MBR パーティション テーブルがあるブートディスクとセカンダリ ディスクのサイズは、最大 2 TB にまでしか変更できません。

ディスクをサイズ変更したら、オペレーティング システムが追加の容量にアクセスできるように、ファイル システムをサイズ変更する必要があります。

ゾーン永続ディスク上のファイル システムとパーティションのサイズを変更する

ゾーン永続ディスクのサイズを変更したら、追加のディスク容量を使用するようにディスク上のファイル システムを構成する必要があります。ディスクにブートディスクなどのパーティション テーブルがある場合は、パーティションを拡張し、そのパーティション上のファイル システムのサイズを変更する必要があります。ゾーン永続ディスクにファイル システムのみが含まれ、パーティション テーブルが存在しない場合は、ファイル システムのサイズを変更することしかできません。

代わりに、最新版の公開イメージを使用するインスタンスでは、システムの再起動後にパーティションとファイル システムのサイズを自動的に変更できます。この機能をサポートしていない公開イメージは、SUSE Linux Enterprise Server(SLES)公開イメージのみです。

ゾーン永続ディスク上のファイル システムを変更する前に、スナップショットを作成してください。

Linux インスタンス

Linux インスタンスでは、インスタンスに接続し、追加したディスク容量を使用するようにパーティションとファイル システムのサイズを手動で変更します。この手動によるプロセスの完了後にインスタンスを再起動する必要はありません。

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

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

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

  3. サイズを変更するファイル システムとパーティションがあるディスクを特定します。ディスクがすでにマウントされている場合、df コマンドと lsblk コマンドを使用してファイル システムのサイズを比較し、ディスク ID を特定します。この例において、/dev/sda1 パーティションは 20 GB にサイズが変更されたブートディスク上にありますが、パーティション分割テーブルとファイル システムによりオペレーティング システムに提供される容量は 9.7 GB のみです。さらに、/dev/sdb セカンダリ ディスクにはパーティション分割テーブルはありませんが、ディスク上のファイル システムはオペレーティング システムに 250 GB しか容量を提供していません。また、この例では、/mnt/disks/disk-1 がマウント ディレクトリです。

    $ sudo df -Th
    
    Filesystem      Type     Size   Used  Avail  Use%  Mounted on
    /dev/sda1       ext4     9.7G   1.2G   8.5G   12%  /
    /dev/sdb        ext4     250G    60M   250G    1%  /mnt/disks/disk-1
    
    
    $ sudo lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0    0   20G  0 disk
    └─sda1    8:1    0   10G  0 part /
    sdb       8:16   0  500G  0 disk /mnt/disks/disk-1
    
    

    この例では、df コマンドによって、/dev/sda1 パーティションがルートファイル システムとしてマウントされ、/dev/sdb ディスクが /mnt/disks/disk-1 セカンダリ ディスクとしてマウントされていることが示されています。

    ディスクにファイル システムが書き込まれていて、パーティション テーブルがない場合は、growpart ユーティリティのインストール方法とパーティションの拡張方法についてのステップ 4 をスキップできます。

  4. サイズを変更するディスクにパーティション テーブルがある場合は、ファイル システムのサイズを変更する前にパーティションを拡張する必要があります。growpart を使用してイメージ パーティションのサイズを変更します。

    1. Debian サーバーに growpart をインストールするには、次を実行します。

      $ sudo apt -y install cloud-guest-utils
    2. CentOS サーバーに growpart をインストールするには、次を実行します。

      $  sudo yum -y install cloud-utils-growpart

      インストール後のツールのヘルプについては、growpart -h を実行します。

    3. growpart ツールをインストールした後、パーティションを拡張できます。

      $ sudo growpart /dev/DEVICE_ID PARTITION_NUMBER

      以下を置き換えます。

      • DEVICE_ID: デバイス ID。
      • PARTITION_NUMBER: そのデバイスのパーティション番号。たとえば、sudo growpart /dev/sda 1 のように指定します。デバイス ID とパーティション番号の間にスペースが必要な点に注意してください。
  5. 追加された容量を使用するには、ディスク上またはパーティション上のファイル システムを拡張します。

    ext4 を使用している場合、resize2fs コマンドを実行します。ディスク上のパーティションを拡張した場合は、そのパーティションを指定します。ディスクにパーティション テーブルがない場合は、ディスク ID のみを指定します。

    $ sudo resize2fs /dev/DEVICE_IDPARTITION_NUMBER

    以下を置き換えます。

    • DEVICE_ID: デバイス ID。
    • PARTITION_NUMBER: ファイル システムのサイズを変更するデバイスのパーティション番号。たとえば、/dev/sda はディスクを指し、/dev/sda1 はそのディスクの最初のパーティションを指します。

    xfs を使用している場合は、xfs_growfs コマンドを使用してファイル システムを拡張し、デバイス ID の代わりにマウント ポイントを指定します。

    $ sudo xfs_growfs /mnt/disks/disk-1

    disk-1 はマウント ポイントです。

  6. 必要に応じて、df コマンドを使用してファイル システムのサイズが変更されていることを確認します。

    $ df -h /dev/DEVICE_ID
    
    Filesystem        Size  Used Avail Use% Mounted on
    /dev/DEVICE_ID  493G   70M  492G   1% /mnt/disks/disk-1
    

    DEVICE_ID は、ファイル システム構成を表示するディスクのデバイス ID に置き換えます。

Windows インスタンス

Windows インスタンスでは、Windows の [ディスクの管理] ツールを使用してパーティションのサイズを変更します。

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

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

  2. サイズを変更したディスクが含まれるインスタンスの横にある [RDP] ボタンをクリックします。ブラウザ上でインスタンスに対する RDP 接続が開きます。

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

    Windows の [スタート] ボタンの右クリック メニューから、Windows ディスク管理ツールを選択します。

  4. ディスク管理ツールを更新して、ゾーン永続ディスクの追加容量を認識できるようにします。[ディスクの管理] ウィンドウの上部にある [操作] をクリックして [最新の情報に更新] を選択します。

    [操作] メニューをクリックして [最新の情報に更新] を選択すると、ディスクの管理ツールでゾーン永続ディスク情報が更新されます。

  5. サイズを変更したディスクで、フォーマットされたパーティションを右クリックし、[ボリュームの拡張] を選択します。

    ディスクのフォーマットされたパーティションを右クリックし、[ボリュームの拡張] オプションを選択します。

  6. [ボリュームの拡張ウィザード] の指示に従って、追加のディスク容量を含むように既存のパーティションを拡張します。既存のパーティションが NTFS でフォーマットされている場合、パーティションの最大サイズはクラスタサイズの設定によって制限されます。

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

    Windows によって認識されたディスクのリストを表示し、インスタンスが [オンライン] で [正常] ステータスであることを確認します。

これで、拡張した永続ディスクの容量を使用してデータを保存できるようになります。

アクセスできないインスタンスや完全なブートディスクの復元

インスタンスのディスク容量が完全に不足している場合や、Linux ゲスト環境を実行していない場合には、ファイルシステムを構成する永続ディスクのサイズを増加させた後でも、インスタンスの起動時にルート ファイルシステムのサイズを自動的に変更することはできません。インスタンスに接続できない場合、あるいはブートディスクがいっぱいでサイズを変更できない場合は、新しいインスタンスを作成し、ブートディスクをスナップショットから再作成してサイズを変更します。

再作成するブートディスクのサイズを確認する必要があります。Compute Engine コンソールでディスクのサイズを確認します。

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

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

    1. インスタンス名をクリックして、[VM インスタンスの詳細] ページを開きます。
    2. [停止] をクリックします。
    3. [ブートディスク] セクションで、ブートディスクのサイズと名前をメモします。
  2. Google Cloud Console で、[スナップショット] ページに移動します。

    [スナップショット] ページに移動

    1. スナップショットの [名前] を入力します。
    2. [ソースディスク] プルダウン リストからブートディスクを選択します。
    3. [作成] をクリックします。
  3. [VM インスタンス] の作成ページに移動します。

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

  4. インスタンスの詳細を入力します。

  5. 古いブートディスクのスナップショットから新しいブートディスクを作成します。

    1. [ブートディスク] で [変更] を選択します。
    2. [スナップショット] を選択します。
    3. [スナップショット] プルダウン リストから古いブートディスクのスナップショットを選択します。
    4. [ブートディスクの種類] を選択します。
    5. ディスクの新しいサイズを入力します。
    6. [選択] をクリックして、ディスクのオプションを確認します。
  6. [作成] をクリックします。

  7. ディスクをマウントしてフォーマットします。

ゾーン永続ディスクの自動削除状態を設定する

読み取り / 書き込み可能なゾーン永続ディスクは、接続されている VM インスタンスの削除時に自動的に削除できます。この動作は、特定の接続されているゾーン永続ディスクの VM インスタンスの autoDelete プロパティによって制御され、いつでも更新できます。同様に、autoDelete 値を false にすることで、ゾーン永続ディスクの削除を防ぐことが可能です。

Console

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

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

  2. 接続されているディスクを含むインスタンスの横にあるチェックボックスをオンにします。

  3. インスタンス名をクリックします。

  4. [VM インスタンスの詳細] ページが表示されます。

  5. [編集] をクリックします。

  6. [追加ディスク] までスクロールします。

  7. 鉛筆アイコンをクリックして、ディスクの [削除ルール] を編集します。

  8. [完了] をクリックして変更を保存します。

  9. [保存] をクリックしてインスタンスを更新します。

gcloud

ゾーン永続ディスクの自動削除状態を設定するには、gcloud compute instances set-disk-auto-delete コマンドを使用します。

gcloud compute instances set-disk-auto-delete example-instance \
  [--auto-delete|--no-auto-delete] \
  --disk example-disk

API

API を使用する場合は、次の URI に POST リクエストを送信します。

https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/example-instance/setDiskAutoDelete?deviceName=deviceName,autoDelete=true

クライアント ライブラリを使用している場合は、instances().setDiskAutoDelete メソッドを使います。

def setAutoDelete(gce_service, auth_http):
  request = gce_service.instances().setDiskAutoDelete(project=example-project, zone=us-central1-f, deviceName=my-new-device, instance=example-instance, autoDelete=True)
  response = request.execute(http=auth_http)

  print response

複数インスタンス間でゾーン永続ディスクを共有する

非ブート永続ディスクを複数の仮想マシン インスタンスに読み取り専用モードでアタッチし、複数インスタンス間で静的データを共有できます。1 つの永続ディスクの静的データを複数インスタンスで共有することは、個別インスタンス固有のディスクにデータをレプリケートするよりもコストがかかりません。

永続ディスクを複数のインスタンスにアタッチする場合、すべてのインスタンスが永続ディスクを読み取り専用モードでアタッチする必要があります。複数のインスタンスに読み取り / 書き込みモードで永続ディスクをアタッチすることはできません。複数のインスタンスで動的記憶領域を共有する必要がある場合は、次のいずれかのオプションを使用できます。

複数のインスタンスで共有したいデータを含む永続ディスクがある場合は、読み取り / 書き込みインスタンスとのアタッチを切断し、1 つ以上のインスタンスと読み取り専用モードでアタッチします。

Console

  1. [ VM インスタンス] ページに移動して、プロジェクト内のインスタンスのリストを表示します。

    インスタンス ページに移動

  2. [名前] 列で、ディスクを接続するインスタンスの名前をクリックします。[VM インスタンスの詳細] ページが開きます。

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

  4. [追加ディスク] セクションで、次のいずれかをクリックします。

    1. ディスクを追加でディスクを読み取り専用モードでインスタンスに追加します。
    2. [既存のディスクを接続] で既存のディスクを選択し、読み取り専用モードでインスタンスに接続します。
  5. ディスクのその他のオプションを指定します。

  6. [完了] をクリックして変更を適用します。

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

  8. インスタンスに接続して、ディスクをマウントします。

  9. このプロセスを繰り返して、他のインスタンスに読み取り専用モードでディスクを追加します。

gcloud

gcloud ツールで compute instances attach-disk コマンドを実行し、ro オプションで --mode フラグを指定します。

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

以下を置き換えます。

  • INSTANCE_NAME: ゾーン永続ディスクを接続するインスタンスの名前
  • DISK_NAME: 接続するディスクの名前

ディスクを接続した後、インスタンスに接続してディスクをマウントします。

読み取り専用モードでディスクを追加するインスタンスごとに、このコマンドを繰り返します。

API

API で、compute.instances.attachDisk メソッドに対して POST リクエストを作成します。リクエストの本文で、mode パラメータに READ_ONLY を指定します。

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

{
 "source": "zones/ZONE/disks/DISK_NAME",
 "mode": "READ_ONLY"
}

以下を置き換えます。

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

ディスクを接続した後、インスタンスに接続してディスクをマウントします。

読み取り専用モードでディスクを追加するインスタンスごとに、このリクエストを繰り返します。

永続ディスクの種類を変更する

永続ディスクの料金パフォーマンスは、永続ディスクの種類によって異なります。永続ディスクの種類を変更するにはスナップショットを使用します。たとえば、標準永続ディスクを SSD 永続ディスクに変更するには、次のプロセスに従います。

Console

  1. 標準永続ディスクのスナップショットを作成します。
  2. スナップショットに基づく新しい永続ディスクを作成します。[タイプ] プルダウン リストから [SSD 永続ディスク] を選択します。

gcloud

  1. 標準永続ディスクのスナップショットを作成します。
  2. スナップショットに基づく新しい永続ディスクを作成します。--type フラグを追加し、pd-ssd を指定します。

API

  1. 標準永続ディスクのスナップショットを作成します。
  2. スナップショットに基づく新しい永続ディスクを作成します。type フィールドに "zones/ZONE/diskTypes/pd-ssd" を指定します。ZONE は、インスタンスと新しいディスクが配置されるゾーンに置き換えます。

次のステップ