このドキュメントでは、ディスク クローンの仕組みとディスク クローンの作成方法について説明します。ディスク クローンを使用すると、既存のディスクの複製をすぐに作成できます。ディスク クローンは、以下のように VM にすぐにアタッチできる既存ディスクのコピーを作成する場合に作成します。
- 本番環境に影響を与えることなくデバッグするために、本番環境データを複製してステージング環境を作成する
- データベースのバックアップ検証用のコピーを作成する
- ブートディスク以外のデータを新しいプロジェクトに移動する
- VM をスケールアウトするときにディスクを複製する
障害復旧を保護するには、ディスク クローンを使用する代わりに、標準スナップショットを使用してディスクをバックアップします。新しいディスクを作成せずに定期的にディスクの内容をキャプチャするには、インスタント スナップショットを使用します。これは、クローンよりもストレージ効率が高いためです。その他のディスク保護オプションについては、データ保護オプションをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
Terraform
このページの Terraform サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
Go
このページの Go サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
Java
このページの Java サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
Python
このページの Python サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
ディスク クローニングの仕組み
ディスクのクローンを作成すると、ソースディスク内のすべてのデータを含む新しいディスクが作成されます。既存のディスクが VM インスタンスにアタッチされている場合でも、ディスクのクローンを作成できます。
クローンのディスクタイプはソースディスクと同じにする必要があります。ただし、ディスクサイズなどのクローンのプロパティは変更できます。クローンを削除せずにソースディスクを削除することもできます。
サポートされているディスクタイプ
ディスク クローンは、次のディスクタイプに対してのみ作成できます。
- Persistent Disk: すべてのタイプの Persistent Disk
- Google Cloud Hyperdisk: Hyperdisk Balanced、Hyperdisk Extreme、Hyperdisk Throughput
制限事項
ディスクの種類に応じて、ディスクのクローンには次の制限があります。
一般的な制限事項
すべてのディスクタイプのクローンに次の制限が適用されます。
- クローンのディスクタイプはソースディスクと同じにする必要があります。
- 別のゾーンにあるゾーンディスクのクローンを作成することはできません。
- クローンのサイズは、ソースディスクのサイズ以上にする必要があります。Google Cloud コンソールを使用してクローンを作成する場合、ディスクサイズを指定できません。また、クローンはソースディスクと同じサイズになります。
- 顧客指定の暗号鍵または顧客管理の暗号鍵を使用してソースディスクを暗号化する場合は、同じ鍵を使用してクローンを暗号化する必要があります。詳細については、暗号化されたソースディスクのクローンの作成をご覧ください。
- クローンの作成中にソースディスクを削除することはできません。
- クローンを作成している間、ソースディスクがアタッチされているコンピューティング インスタンスは、パワーオンにできません。
- ソースディスクがアタッチされている VM とともに削除されるようにマークされている場合、クローンの作成中に VM を削除することはできません。
- 特定のソースディスクのクローン(またはそのクローン)は 30 秒ごとに 1 つだけ作成できます。
- 特定のソースディスクまたはそのクローンのディスク クローンは 1,000 個まで持てます。この上限を超えると、
internalError
が返されます。ただし、ディスク クローンを作成して後で削除する場合は、削除したディスク クローンはこの制限に含まれません。 - ディスクのクローンを作成すると、そのディスクの後続のクローン(またはそのクローン)は、元のソースディスクの同時ディスク クローン数の上限の 1,000 件に対してカウントされ、30 秒ごとに最大 1 つのクローンを作成するという制限に対してカウントされます。
- ディスクのクローン作成時に使用できる容量は限られています。15 分ごとに最大 1 TB のクローン ディスクを作成できますが、バースト リクエストは 257 TB に制限されています。
Persistent Disk クローンの制限事項
Persistent Disk のディスク クローンには、次の制限があります。
- リージョン ディスクからゾーンディスクのクローンを作成することはできません。
- ゾーンのソースディスクからリージョン ディスクのクローンを作成するには、リージョン ディスク クローンのレプリカゾーンのいずれかがソースディスクのゾーンと一致している必要があります。
- 作成後、リージョン ディスクのクローンは平均で 3 分以内に使用できるようになります。ただし、ディスクが完全に複製され、目標復旧時点(RPO)がゼロに近い状態になるまでに、数十分かかる場合があります。
Google Cloud Hyperdisk クローンの制限事項
ディスクのクローンを作成できるのは、Hyperdisk Balanced、Hyperdisk Extreme、Hyperdisk Throughput のボリュームに限られます。
エラー メッセージ
クローン作成頻度の上限を超えると、次のエラーが発生してリクエストが失敗します。
RATE LIMIT: ERROR: (gcloud.compute.disks.create) Could not fetch resource: - Operation rate exceeded for resource RESOURCE. Too frequent operations from the source resource.
ディスクのクローンを作成する
このセクションでは、既存のディスクを複製してディスクのクローンを作成する方法について説明します。
詳細な手順については、ディスクのクローン作成のタイプに応じて、このドキュメントの次のいずれかのセクションをご覧ください。
ゾーンディスクのクローンを作成する
ソースディスクと同じゾーンに既存ディスクのゾーンディスクのクローンを作成するには、Google Cloud コンソール、Google Cloud CLI、または REST を使用します。
コンソール
Google Cloud コンソールで、[ディスク] ページに移動します。
ディスクのリストで、クローンを作成するディスクまで移動します。
[アクション] 列で、
メニューボタンをクリックし、[ディスクのクローン作成] を選択します。表示された [ディスクのクローン作成] パネルで、次の操作を行います。
- [名前] フィールドに、クローンを作成するディスクの名前を指定します。
- [ロケーション] で [シングルゾーン] が選択されていることを確認します。
- [プロパティ] で、クローンを作成するディスクのその他の詳細を確認します。
- クローン ディスクの作成を完了するには、[作成] をクリックします。
gcloud
ゾーンのソースディスクのクローンを作成して新しいゾーンディスクを作成するには、disks create
コマンドを実行して --source-disk
フラグを指定します。
gcloud compute disks create TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME
次のように置き換えます。
TARGET_DISK_NAME
: 新しいディスクの名前PROJECT_ID
: ディスクのクローンを作成するプロジェクト ID。ZONE
: ソースディスクと新しいディスクのゾーンSOURCE_DISK_NAME
: ソースディスクの名前。
Terraform
ディスクのクローンを作成するには、google_compute_disk
リソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Go
Go
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Go の設定手順に沿って操作します。詳細については、Compute Engine Go API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
Java
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Java の設定手順に沿って操作します。詳細については、Compute Engine Java API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Python
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Python の設定手順に沿って操作します。詳細については、Compute Engine Python API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
REST
ゾーンのソースディスクをクローニングして新しいゾーンディスクを作成するには、compute.disks.insert
メソッドに POST
リクエストを送信します。リクエストの本文で、name
パラメータと sourceDisk
パラメータを指定します。ディスク クローンは、省略されたプロパティをすべてソースディスクから継承します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" }
次のように置き換えます。
PROJECT_ID
: ディスクのクローンを作成するプロジェクト ID。ZONE
: ソースディスクと新しいディスクのゾーンTARGET_DISK_NAME
: 新しいディスクの名前SOURCE_DISK_NAME
: ソースディスクの名前。
ゾーンディスクからリージョン ディスクのクローンを作成する
既存のゾーン Persistent Disk ボリュームのクローンを作成して、新しいリージョン Persistent Disk ディスクを作成できます。ゾーンディスクをリージョン ディスクに移行する場合は、ゾーンディスクのスナップショットを作成して新しいリージョン ディスクに復元する代わりに、このオプションを使用することをおすすめします。
コンソール
Google Cloud コンソールで、[ディスク] ページに移動します。
ディスクのリストで、クローンを作成するゾーンの Persistent Disk ボリュームに移動します。
[アクション] 列で、
メニューボタンをクリックし、[ディスクのクローン作成] を選択します。表示された [ディスクのクローン作成] パネルで、次の操作を行います。
- [名前] フィールドに、クローンを作成するディスクの名前を指定します。
- [ロケーション] で [リージョン] を選択し、新しいリージョン クローン ディスクのセカンダリ レプリカのゾーンを選択します。
- [プロパティ] で、クローンを作成するディスクのその他の詳細を確認します。
- クローン ディスクの作成を完了するには、[作成] をクリックします。
gcloud
ゾーンディスクからリージョン ディスクのクローンを作成するには、gcloud compute disks create
コマンドを実行し、--region
パラメータと --replica-zones
パラメータを指定します。
gcloud compute disks create TARGET_DISK_NAME \ --description="zonal to regional cloned disk" \ --region=CLONED_REGION \ --source-disk=SOURCE_DISK_NAME \ --source-disk-zone=SOURCE_DISK_ZONE \ --replica-zones=SOURCE_DISK_ZONE,REPLICA_ZONE_2 \ --project=PROJECT_ID
次のように置き換えます。
TARGET_DISK_NAME
: 新しいリージョン ディスク クローンの名前。CLONED_REGION
: ソースディスクとクローン ディスクのリージョン。SOURCE_DISK_NAME
: クローンを作成するゾーンディスクの名前SOURCE_DISK_ZONE
: ソースディスクのゾーン。これは、リージョン ディスク クローンの最初のレプリカゾーンにもなります。REPLICA_ZONE_2
: 新しいリージョン ディスク クローンのセカンダリ レプリカゾーン。PROJECT_ID
: ディスクのクローンを作成するプロジェクト ID。
Terraform
ゾーンディスクからリージョン ディスクのクローンを作成するには、必要に応じてゾーンディスクのスナップショットを作成してから、そのスナップショットのクローンを作成します。これを行うには、次のリソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Go
Go
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Go の設定手順に沿って操作します。詳細については、Compute Engine Go API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
Java
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Java の設定手順に沿って操作します。詳細については、Compute Engine Java API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Python
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Python の設定手順に沿って操作します。詳細については、Compute Engine Python API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
REST
ゾーンディスクからリージョン ディスクのクローンを作成するには、compute.disks.insert
メソッドに POST
リクエストを送信し、sourceDisk
パラメータと replicaZone
パラメータを指定します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/CLONED_REGION/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME" "replicaZone": "SOURCE_DISK_ZONE,REPLICA_ZONE_2" }
次のように置き換えます。
PROJECT_ID
: ディスクのクローンを作成するプロジェクト ID。TARGET_DISK_NAME
: 新しいリージョン ディスク クローンの名前。CLONED_REGION
: ソースディスクとクローン ディスクのリージョン。SOURCE_DISK_NAME
: クローンを作成するゾーンディスクの名前SOURCE_DISK_ZONE
: ソースディスクのゾーン。これは、リージョン ディスク クローンの最初のレプリカゾーンにもなります。REPLICA_ZONE_2
: 新しいリージョン ディスク クローンのセカンダリ レプリカゾーン。
暗号化されたソースディスクのディスク クローンを作成する
顧客指定の暗号鍵(CSEK)または顧客管理の暗号鍵を使用してディスクを暗号化できます。
CSEK で暗号化されたディスクのディスク クローンを作成する
CSEK を使用してソースディスクを暗号化する場合は、同じ鍵を使用してクローンを暗号化する必要があります。
コンソール
Google Cloud コンソールで、[ディスク] ページに移動します。
ゾーン永続ディスクのリストで、クローンを作成するディスクを探します。
[アクション] 列で、
メニューボタンをクリックし、[ディスクのクローン作成] を選択します。表示された [ディスクのクローン作成] パネルで、次の操作を行います。
- [名前] フィールドに、クローンを作成するディスクの名前を指定します。
- [復号と暗号化] フィールドに、ソースディスクの暗号鍵を指定します。
- [プロパティ] で、クローンを作成するディスクのその他の詳細を確認します。
- クローン ディスクの作成を完了するには、[作成] をクリックします。
gcloud
CSEK で暗号化されたソースディスクのディスク クローンを作成するには、gcloud compute disks create
コマンドを実行し、--csek-key-file
フラグを使用してソースディスクの暗号鍵を指定します。RSA でラップされた鍵を使用している場合は、gcloud beta compute disks create
コマンドを使用します。
gcloud compute disks create TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \ --csek-key-file example-key-file.json
次のように置き換えます。
TARGET_DISK_NAME
: 新しいディスクの名前PROJECT_ID
: ディスクのクローンを作成するプロジェクト ID。ZONE
: ソースディスクと新しいディスクのゾーンSOURCE_DISK_NAME
: ソースディスクの名前。
Go
Go
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Go の設定手順に沿って操作します。詳細については、Compute Engine Go API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
Java
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Java の設定手順に沿って操作します。詳細については、Compute Engine Java API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Python
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Python の設定手順に沿って操作します。詳細については、Compute Engine Python API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
REST
CSEK で暗号化されたソースディスクのディスク クローンを作成するには、compute.disks.insert
メソッドに POST
リクエストを送信し、diskEncryptionKey
プロパティを使用してソースディスクの暗号鍵を指定します。RSA でラップされた鍵を使用している場合は、メソッドの beta
バージョンを使用します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, }
次のように置き換えます。
PROJECT_ID
: ディスクのクローンを作成するプロジェクト ID。ZONE
: ソースディスクと新しいディスクのゾーンTARGET_DISK_NAME
: 新しいディスクの名前SOURCE_DISK_NAME
: ソースディスクの名前。
CMEK で暗号化されたディスクのディスク クローンを作成する
CMEK を使用してソースディスクを暗号化する場合は、同じ鍵を使用してクローンを暗号化する必要があります。
コンソール
Compute Engine では、ソースディスク暗号鍵を使用してクローンが自動的に暗号化されます。
gcloud
CSEK で暗号化されたソースディスクのディスク クローンを作成するには、gcloud compute disks create
コマンドを実行し、--kms-key
フラグを使用してソースディスクの暗号鍵を指定します。RSA でラップされた鍵を使用している場合は、gcloud beta compute disks create
コマンドを使用します。
gcloud compute disks create TARGET_DISK_NAME \ --description="cloned disk" \ --source-disk=projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
次のように置き換えます。
Go
Go
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Go の設定手順に沿って操作します。詳細については、Compute Engine Go API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
Java
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Java の設定手順に沿って操作します。詳細については、Compute Engine Java API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Python
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Python の設定手順に沿って操作します。詳細については、Compute Engine Python API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
REST
CSEK で暗号化されたソースディスクのディスク クローンを作成するには、compute.disks.insert
メソッドに POST
リクエストを送信し、kmsKeyName
プロパティを使用してソースディスクの暗号鍵を指定します。RSA でラップされた鍵を使用している場合は、メソッドの beta
バージョンを使用します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "TARGET_DISK_NAME" "sourceDisk": "projects/PROJECT_ID/zones/ZONE/disks/SOURCE_DISK_NAME" "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY" }, }
次のように置き換えます。
次のステップ
- 予期しないデータ損失を防ぐため、定期的に標準スナップショットを使用してディスクをバックアップする方法を確認する。
- インスタント スナップショットを使用してディスクを所定の場所にバックアップする方法を確認する。
- 2 つのゾーン間の同期レプリケーションにリージョン永続ディスクを使用する方法を確認する。
- Persistent Disk 非同期レプリケーション(PD 非同期レプリケーション)について確認する。