永続ディスクのサイズを増やす


仮想マシン(VM)インスタンスで追加の保存容量やパフォーマンスの上限の引き上げが必要な場合に、Persistent Disk のサイズを増やすことができます。ディスクが実行中の VM にアタッチされているかどうかにかかわらず、いつでもディスクサイズを増やすことができます。

このページでは、Persistent Disk のサイズを増やす方法について説明します。Google Cloud Hyperdisk ボリュームのサイズを増やすには、Hyperdisk の設定を変更するをご覧ください。

ディスクサイズの拡張のみを行うことができ、縮小することはできません。ディスクサイズを縮小するには、小さいサイズの新しいディスクを作成する必要があります。サイズの大きい元のディスクを削除するまで、両方のディスクに対して課金されます。

カスタム Linux イメージまたはカスタム Windows イメージを作成する場合は、ブートディスクと非ブートディスクのサイズを手動で増やす必要があります。公開イメージを使用している場合、Compute Engine によってブートディスクのサイズが自動的に変更されます。

ディスクのサイズを増やしても、ディスクデータの削除や変更は行われません。ファイル システムやパーティションを変更する前に、いつもスナップショットを作成してディスクをバックアップすることをお勧めします。

永続ディスクの裏では Compute Engine がハードウェアを管理しているため、ストライピングや冗長化を扱うことなくディスクの追加やサイズ変更を行えます。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud のサービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      詳細については Set up authentication for a local development environment をご覧ください。

      REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロールと権限

Persistent Disk のサイズ変更に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

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

この事前定義ロールには、Persistent Disk のサイズ変更に必要な compute.disks.update 権限が含まれています。

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

ディスクのサイズを増やす

ブートディスクまたは非ブートディスクのディスクのサイズを増やすには、次の手順を使用します。

コンソール

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] に移動

  2. プロジェクトの永続ディスクのリストで、サイズを変更するディスクの名前をクリックします。

  3. ディスク詳細ページで、[編集] をクリックします。必要に応じて、 [その他の操作] メニューの [編集] をクリックします。

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

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

ディスクのリストに新しいディスクサイズが表示されます。

gcloud

gcloud compute disks resize コマンドを使用して、--size フラグを指定し、新しいディスクサイズをギガバイト(GiB)単位で設定します。

gcloud compute disks resize DISK_NAME \
    --size DISK_SIZE \
    --zone=ZONE

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

  • DISK_NAME: サイズ変更するディスクの名前
  • DISK_SIZE: ディスクの新しいサイズ(ギビバイト(GiB)単位)。MBR パーティション テーブルがあるディスクのサイズは、最大 2 TB にまでしか変更できません。
  • ZONE: ゾーン Persistent Disk の場合は、ディスクが配置されているゾーンを指定します。

    リージョン Persistent Disk の場合は、代わりに --region=REGION フラグを使用して、リージョン ディスクが配置されているリージョンを指定します。

Terraform

ゾーンディスクまたはリージョン Persistent Disk のサイズを変更するには、次のいずれかのオプションを選択します。

ゾーンディスク

Persistent Disk のサイズを変更するには、google_compute_disk リソースsize パラメータを使用します。

# Using pd-standard because it's the default for Compute Engine

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

size パラメータを image パラメータまたは snapshot パラメータとともに指定する場合、size の値はイメージまたはスナップショットのサイズ以上にする必要があります。

image パラメータと snapshot パラメータを省略した場合、size パラメータは既存のディスクサイズよりも小さく設定できます。この操作を行うと、Terraform によってディスクが破棄され、新しい空の Persistent Disk が作成されます。

リージョン Persistent Disk

リージョン Persistent Disk のサイズを変更するには、google_compute_region_disk リソースsize パラメータを使用します。

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

size パラメータを image パラメータまたは snapshot パラメータとともに指定する場合、size の値はイメージまたはスナップショットのサイズ以上にする必要があります。

image パラメータと snapshot パラメータを省略した場合、size パラメータは既存のディスクサイズよりも小さく設定できます。この操作を行うと、Terraform によってディスクが破棄され、新しい空の RegionalPersistent Disk が作成されます。

REST

Persistent Disk のサイズを変更するには、compute.disks.resize メソッドPOST リクエストを作成します。

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

リージョン Persistent Disk のサイズを変更するには、compute.regionDisks.resize メソッドに対する POST リクエストを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize
{
   "sizeGb": "DISK_SIZE"
}

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

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

ファイル システムとパーティションのサイズの変更

ディスクのサイズを増やした後、ファイル システムとパーティションのサイズ変更が必要になることがあります。次のリストは、ブートディスクと非ブートディスクの追加情報を示しています。

  • ブートディスク: カスタム Linux イメージまたはカスタム Windows イメージを使用している場合は、ルート パーティションとファイル システムを手動でサイズ変更する必要があります。公開イメージを持つ VM の場合、ブートディスクのサイズを増やして VM を再起動すると、Compute Engine によってルート パーティションとファイル システムのサイズが自動的に変更されます。

  • 非ブートディスク: ディスクのサイズを増やした後、追加した容量を使用するためにディスク上のファイル システムを拡張する必要があります。

次の例では、ブートディスクのルート パーティションとファイル システムのサイズを手動で変更する方法と、パーティション分割テーブルがない非ブート データディスクのファイル システムのサイズを手動で変更する方法を示します。この例では、ディスクが SCSI を使用して接続され、すでにフォーマットされ、マウントされていることを前提としています。

Persistent Disk が NVMe を使用して接続されている場合は、NVMe に接続されたディスクの出力の例については、ファイル システムとパーティションのサイズを変更するをご覧ください。

Linux VM

  1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

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

  3. df コマンドと lsblk コマンドを使用して、ファイル システムのサイズを一覧表示し、ディスクのデバイス名を確認します。

    $ 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
    
    

    この例には、次のディスクが含まれています。

    • ブートディスク: /dev/sda1 パーティションが、20 GB にサイズ変更されたブートディスク上にあります。パーティション分割テーブルとファイル システムは、オペレーティング システムに 9.7 GB だけ提供しています。
    • 非ブート データディスク: /dev/sdb の非ブートデータディスクにパーティション分割テーブルはありませんが、このディスクのファイル システムはオペレーティング システムに 250 GB だけ容量を提供しています。このディスクのマウント ディレクトリは /mnt/disks/disk-1 です。

    df コマンドにより、/dev/sda1 パーティションがルート ファイル システムとしてマウントされ、/dev/sdb ディスクが /mnt/disks/disk-1 の非ブート データディスクとしてマウントされていることが示されます。[タイプ] 列をメモします。これは、ディスクが ext4 ファイル システムを使用しているのか、あるいは xfs ファイル システムを使用しているのかを示しています。

  4. パーティション タイプを確認します。

    sudo parted -l
    
    特定のディスクに関する情報のみを表示するには:
    sudo parted -l /dev/DEVICE_NAME
    
    [パーティション テーブル] フィールドを探します。値が msdos の場合、ディスクのタイプは MBR パーティションです。つまり、このようなディスクの最大サイズは 2 TB になります。

  5. ブートディスクのルート パーティションとファイル システムのサイズを変更します。この例では、VM イメージがルート パーティショニングとファイル システムの自動サイズ変更をサポートしていないことを前提としています。

    1. parted を使用してルート パーティションのサイズを変更します。たとえば、次のコマンドは、/dev/sda のパーティション 1 を可能な最大サイズに拡張します。

      1. /dev/sda パーティションで parted を開きます。

        sudo parted /dev/sda
      2. (parted) プロンプトで、次のように入力します。

        resizepart
      3. Partition number? プロンプトで、次のように入力します。

        1
      4. Warning: Partition /dev/sda1 is being used. Are you sure you want to continue? プロンプトで、次のように入力します。

        Yes
      5. End? プロンプトで、次のコマンドを入力します。

        100%
      6. (parted) プロンプトで、次のように入力します。

        quit
    2. partprobe を使用して新しいパーティション テーブルを読み取ります。

      sudo partprobe /dev/sda
      
    3. ファイル システムを拡張します。

      • ext4 を使用している場合、resize2fs コマンドを使用します。

        sudo resize2fs /dev/sda1
        
      • xfs を使用している場合、xfs_growfs コマンドを使用します。

        sudo xfs_growfs -d /
        
      • btrfs を使用している場合は、btrfs コマンドを使用します。

        sudo btrfs filesystem resize max /
        
  6. 非ブート データディスク上のファイル システムのサイズを変更します。

    • ext4 を使用している場合は、resize2fs コマンドを使用してファイル システムを拡張します。

      sudo resize2fs /dev/DEVICE_NAME
      

      DEVICE_NAME は、ディスクのデバイス名に置き換えます。この例では、/dev/sdb がデバイス名です。

    • xfs を使用している場合は、xfs_growfs コマンドを使用してファイル システムを拡張します。

      sudo xfs_growfs MOUNT_DIR
      

      MOUNT_DIR は、デバイスのマウント ポイントに置き換えます。マウント ポイントは、lsblk コマンドの出力の MOUNTPOINT 列に表示されます。

    • btrfs を使用している場合は、btrfs コマンドを使用してファイル システムを拡張します。

      sudo btrfs filesystem resize max MOUNT_DIR
      

      MOUNT_DIR は、デバイスのマウント ポイントに置き換えます。マウント ポイントは、lsblk コマンドの出力の MOUNTPOINT 列に表示されます。

  7. df コマンドを使用して、ファイル システムが拡張されたことを確認します。次に例を示します。

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

Windows VM

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

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

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

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

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

  4. Powershell を実行して、ディスク パーティション タイプを表示します。

    Get-Disk
    
    [Partition Style] 列の値が [MBR] の場合、ディスクのタイプは MBR パーティションです。つまり、このようなディスクの最大サイズは 2 TB になります。

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

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

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

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

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

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

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

このプロセスの完了後に VM を再起動する必要はありません。これで、追加されたディスク容量をデータの保存に使用できます。

次のステップ