仮想ディスクをインポートする


必要なソフトウェアと構成を備えた仮想ディスク(ゴールデン ディスクまたはゴールデン イメージと呼ばれることもあります)がオンプレミス環境にある場合、その仮想ディスクを Compute Engine にインポートし、そのイメージを使用して仮想マシンを作成することによって、時間を節約できます。Migrate to Virtual Machines インポート ツールは、VMDK や VHD などのほとんどの仮想ディスク ファイル形式をサポートしています。

始める前に

サポートされているファイル形式

Migrate to Virtual Machines を使用して、次の形式の仮想ディスク イメージ ファイルをインポートできます。

  • 仮想マシンディスク(VMDK)- 推奨オプション。VMDK ファイルはより高速にインポートされます。
  • QEMU copy-on-write(QCOW)
  • QEMU copy-on-write 2(QCOW2)
  • QEMU 拡張ディスク形式(QED)
  • VPC
  • 仮想ディスク イメージ(VDI)
  • 仮想ハードディスク v2(VHDX)
  • 仮想ハードディスク(VHD)

これらの形式に加えて、.tar.gz として圧縮された raw ファイルもサポートされています。圧縮ファイルには、disk.raw という名前のファイルが 1 つだけ含まれている必要があります。

イメージのインポート プロセス

Migrate to Virtual Machines を使用して仮想ディスク イメージを Compute Engine イメージにインポートするには、次の操作を行います。

  1. インポートする仮想ディスク イメージ ファイルを準備する
  2. ターゲット プロジェクトを選択する
  3. 仮想ディスク イメージを Compute Engine にインポートする

インポートする仮想ディスク ファイルを準備する

仮想ディスク イメージを Compute Engine イメージにインポートするには、まずインポートする仮想ディスク イメージ ファイルを準備する必要があります。以降のセクションでは、これらのタスクについて詳しく説明します。

仮想ディスク イメージ ファイルを Cloud Storage に追加する

仮想ディスク イメージを Compute Engine イメージにインポートするには、まず仮想ディスク イメージ ファイルを Cloud Storage に追加する必要があります。詳細については、ファイル システムからオブジェクトをアップロードするをご覧ください。パフォーマンスを向上させるため、イメージを作成するクラウド リージョン内のバケットに仮想ディスク イメージ ファイルをアップロードすることをおすすめします。

必要な権限を付与する

仮想ディスク イメージを Compute Engine イメージにインポートするには、次の表の説明に従って権限を付与します。

ロール 必要な権限 説明
ストレージ オブジェクト閲覧者 roles/storage.objectViewer ホスト プロジェクト(service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com)のデフォルトの Migrate to Virtual Machines サービス アカウントに、インポートするイメージが存在するバケットに対する roles/vmmigration.serviceAgent ロールを付与します。この権限により、Migrate to Virtual Machines がソースイメージにアクセスできるようになります。
VM Migration 管理者 roles/vmmigration.admin ホスト プロジェクトで、ソースイメージのインポートに使用するユーザー アカウントに roles/vmmigration.admin ロールを付与します。
VM Migration サービス アカウント roles/vmmigration.serviceAgent ホスト プロジェクト(service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com)のデフォルトの Migrate to Virtual Machines サービス アカウントに、ターゲット プロジェクトに対する roles/vmmigration.serviceAgent ロールを付与します。たとえば、service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com がホスト プロジェクトの Migrate to Virtual Machines サービス アカウントである場合、ターゲット プロジェクトでイメージを作成できるように、このサービス アカウントに roles/vmmigration.serviceAgent ロールを付与する必要があります。

ターゲット プロジェクトを選択する

Compute Engine イメージをホストするには、ターゲット プロジェクトを作成または選択する必要があります。ターゲット プロジェクトは、Compute Engine イメージの宛先プロジェクトを定義します。ターゲット プロジェクトの作成または選択の詳細については、ターゲット プロジェクトの追加をご覧ください。

仮想ディスク イメージを Compute Engine にインポートする

仮想ディスク イメージを Compute Engine にインポートするには、Google Cloud コンソール、Google Cloud CLI、または REST API コマンドを使用します。

コンソール

Google Cloud コンソールを使用して仮想ディスク イメージを Compute Engine にインポートするには、次の操作を行います。

  1. Google Cloud コンソールで [Migrate to Virtual Machines] ページを開きます。
    [Migrate to Virtual Machines] ページに移動
  2. [イメージ インポート] タブを選択します。
  3. [イメージを作成] をクリックします。
  4. イメージの特性を定義します。次の表に、イメージに設定できるパラメータを示します。
    セクション タイトル フィールド名 説明
    全般 名前 作成するイメージの名前。命名ルールの詳細については、命名規則をご覧ください。
    イメージ インポート ID イメージ インポート リソースを表す ID。Compute Engine にイメージをインポートすると、Migrate to Virtual Machines はまずイメージ インポート リソースを作成します。イメージ インポート リソースはイメージ インポート プロセスを表します。イメージ インポート ID を使用して、イメージのインポート プロセスでインポートされたイメージへのリンクを取得できます。
    ソース Cloud Storage ファイル イメージのインポート元となるファイル。[参照] をクリックして現在のプロジェクト内のバケットのリストを表示し、イメージのインポート元となるファイルを選択します。
    別のプロジェクトのバケットからイメージをインポートする場合は、bucket/folder/file の形式でパスを入力する必要があります。バケット内のオブジェクトのパスを取得するには、オブジェクトのメタデータを表示するをご覧ください。パスをコピーする際は、gs:// 接頭辞をコピーしないでください。
    イメージは、.vmdk ファイルと .tar.gz ファイルからのみインポートできます。
    地域 イメージを作成するリージョン。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。
    ターゲット プロジェクト イメージを作成するターゲット プロジェクト。ターゲット プロジェクトをまだ追加していない場合は、ターゲット プロジェクトを追加するの手順に沿って追加してください。
    ファミリー (省略可)イメージ ファミリーを選択します。Compute Engine には、自動化システムが最新のイメージを参照できるようにするためのイメージ ファミリーが用意されています。管理者は、イメージのセットをイメージ ファミリーとしてグループ化できます。詳細については、公開イメージ ファミリーをご覧ください。
    説明 (省略可)イメージの説明を追加します。
    OS 適応をスキップ OS 適応をスキップするには、[OS 適応をスキップ] をクリックしてオンの位置に切り替えます。
    Google Cloud で正しく機能させるには、インポートしたイメージから作成された VM の構成を変更する必要があります。このような変更は OS 適応と呼ばれます。Migrate to Virtual Machines は、イメージのインポート プロセスで OS 適応を自動的に実行します。詳細については、Google Cloud で実行するように VM インスタンスを適応させるをご覧ください。
    一般化 イメージを一般化するには、[一般化] をオンの位置に切り替えます。イメージからインスタンスを作成すると、Windows によって一意の情報がインスタンスに追加されます。一般化は、この情報を削除して、同じイメージから複数のインスタンスを作成できるようにするプロセスです。
    ライセンス ライセンスの種類 Compute Engine は、デプロイ済み VM に従量課金制(PAYG)ライセンスとお客様所有ライセンスの使用(BYOL)をサポートしています。サポートされているオペレーティング システムで説明されているように、移行した VM のデフォルトのライセンス タイプは、移行したオペレーティング システムに基づいて Migrate to Virtual Machines によって割り当てられます。
    オペレーティング システムが複数のライセンス タイプをサポートしている場合は、デフォルトのライセンス タイプをオーバーライドして、PAYG または BYOL のライセンス タイプを明示的に指定できます。
    追加ライセンス 追加ライセンス インポートしたイメージから作成された VM インスタンスに、有効な URL 形式を使用して最大 10 個のライセンスを追加できます。たとえば、次の URL 形式を使用してライセンスを追加できます。
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    ラベル プロジェクトを整理するには、ラベルを Key-Value ペアとしてリソースに追加します。ラベルを使用してリソースを整理するをご覧ください。
    暗号化 Google が管理する暗号鍵 Google が管理する暗号鍵を使用してインポート プロセスでデータを暗号化するには、このオプションを選択します。詳細については、保存時にデータを暗号化するをご覧ください。
    顧客管理の暗号鍵 顧客管理の暗号鍵(CMEK)を使用して、インポート プロセス中のデータと、インポート プロセスによって作成されたイメージのデータを暗号化するには、このオプションを選択します。データを保護する鍵について特定のコンプライアンスや規制の要件がある場合、CMEK を使用してデータの暗号化と復号を行うことができます。これらの暗号鍵は、ユーザーによって作成、管理、所有されます。詳細については、Cloud KMS 鍵を使用してリソースを保護するをご覧ください。
    CMEK を追加する場合は、次の表に示す権限が必要になります。
    ロール 必要な権限 説明
    Cloud VM Migration サービス アカウント roles/vmmigration.serviceAgen インポート プロセス中に作成されたイメージのデータを暗号化するには、この権限を Compute Engine サービス アカウントに付与します。
    Compute Engine サービス エージェント roles/compute.serviceAgent インポート プロセスでデータを暗号化するには、この権限を Migrate to Virtual Machines サービス エージェントに付与します。
  5. [作成] を選択します。

gcloud

Google Cloud CLI を使用して仮想ディスク イメージを Compute Engine にインポートするには、次のリクエストを使用します。

gcloud migration vms image-imports create IMAGE_NAME \
--source-file=SOURCE_FILE \
--location=REGION_ID \
--target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT

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

  • IMAGE_NAME: 作成するイメージの名前。命名ルールの詳細については、命名規則をご覧ください。
  • SOURCE_FILE: イメージのインポート元となるファイル。パスは gs://bucket/folder/file の形式で入力します。バケット内のオブジェクトのパスを取得するには、オブジェクトのメタデータを表示するをご覧ください。イメージは、.vmdk ファイルと .tar.gz ファイルからのみインポートできます。
  • REGION_ID: イメージ インポート プロセスを実行するリージョン。イメージは最も近いマルチリージョンに作成されます。リージョンでイメージを作成する場合は、singleRegionStorage が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。
  • HOST_PROJECT_ID: 仮想ディスク イメージを移行するホスト プロジェクトの名前。
  • TARGET_PROJECT: イメージを作成するターゲット プロジェクト。ターゲット プロジェクトをまだ追加していない場合は、ターゲット プロジェクトを追加するの手順に沿って追加してください。

詳細については、gcloud migration vms image-imports をご覧ください。

REST

REST API を使用して仮想ディスク イメージを Compute Engine にインポートするには、次の操作を行います。

  1. 次のリクエストを使用して、イメージ インポート リソースを作成します。

    POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME
    {
    "cloudStorageUri": "SOURCE_FILE",
    "diskImageTargetDefaults": {
    "imageName": "IMAGE_NAME",
    "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT",
    ...
    }
    }
    

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

    • HOST_PROJECT_ID: 仮想ディスク イメージを移行するホスト プロジェクトの名前。
    • REGION_ID: イメージ インポート プロセスを実行するリージョン。イメージは最も近いマルチリージョンに作成されます。リージョンでイメージを作成する場合は、singleRegionStorage が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。
    • SOURCE_FILE: イメージのインポート元となるファイル。パスは gs://bucket/folder/file の形式で入力します。バケット内のオブジェクトのパスを取得するには、オブジェクトのメタデータを表示するをご覧ください。イメージは、.vmdk ファイルと .tar.gz ファイルからのみインポートできます。
    • IMAGE_NAME: 作成するイメージの名前。命名ルールの詳細については、命名規則をご覧ください。
    • TARGET_PROJECT: イメージを作成するターゲット プロジェクト。ターゲット プロジェクトをまだ追加していない場合は、ターゲット プロジェクトを追加するの手順に沿って追加してください。

    この例の IMPORT_NAME は、イメージ インポート リソースを表す ID です。Compute Engine にイメージをインポートすると、Migrate to Virtual Machines はまずイメージ インポート リソースを作成します。イメージ インポート リソースはイメージ インポート プロセスを表します。IMPORT_NAME を使用すると、イメージ インポート プロセスの一環としてインポートされたイメージへのリンクを取得できます。

    サポートされているイメージ インポート作成リクエストのフィールドについては、次の表をご覧ください。

    フィールド名 説明
    cloudStorageUri 文字列
    イメージのインポート元となるファイルのパス。パスは gs://bucket/folder/file の形式で入力します。バケット内のオブジェクトのパスを取得するには、オブジェクトのメタデータを表示するをご覧ください。
    イメージは、.vmdk ファイルと .tar.gz ファイルからのみインポートできます。
    diskImageTargetDefaults.targetProject 文字列
    TargetProject のパス。イメージを作成するターゲット プロジェクト。詳細については、ターゲット プロジェクトの API リファレンスをご覧ください。例:
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    この例では、次のように置き換えます。
    • HOST_PROJECT_ID: 仮想ディスク イメージを移行するホスト プロジェクトの名前。
    • TARGET_PROJECT: イメージを作成するターゲット プロジェクト。
    diskImageTargetDefaults.imageName 文字列
    作成されるイメージの名前。命名規則について詳しくは、リソースの命名規則をご覧ください。
    diskImageTargetDefaults.description 文字列
    (省略可)イメージの説明。
    diskImageTargetDefaults.familyName 文字列
    (省略可)イメージ ファミリーを選択します。Compute Engine には、自動化システムが最新のイメージを参照できるようにするためのイメージ ファミリーが用意されています。管理者は、イメージのセットをイメージ ファミリーとしてグループ化できます。詳細については、公開イメージ ファミリーをご覧ください。詳細については、公開イメージ ファミリーをご覧ください。
    diskImageTargetDefaults.labels マップ(キー: 文字列, 値: 文字列)
    プロジェクトを整理するには、ラベルを Key-Value ペアとしてリソースに追加します。リソースのラベル付けをご覧ください。
    diskImageTargetDefaults.additionalLicenses 文字列[]
    有効な URL 形式を使用して、インポートしたイメージから作成された VM インスタンスに、最大 10 個のライセンスを追加できます。たとえば、次の URL 形式を使用してライセンスを追加できます。
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    diskImageTargetDefaults.singleRegionStorage ブール値
    イメージ storageLocations をリージョンにする場合は、このフラグを true に設定します。このフラグを false に設定すると、最も近いマルチリージョンが選択されます。
    diskImageTargetDefaults.dataDiskImageImport ブール値
    OS 適応をスキップする場合は、このフラグを true に設定します。
    Google Cloud で正しく機能させるには、インポートしたイメージから作成された VM の構成を変更する必要があります。このような変更は OS 適応と呼ばれます。Migrate to Virtual Machines は、イメージのインポート プロセスで OS 適応を自動的に実行します。詳細については、Google Cloud で実行するように VM インスタンスを適応させるをご覧ください。
    diskImageTargetDefaults.osAdaptationParameters.licenseType 文字列
    イメージに使用するライセンスの種類。Compute Engine は、デプロイ済み VM に従量課金制(PAYG)ライセンスとお客様所有ライセンスの使用(BYOL)をサポートしています。サポートされているオペレーティング システムで説明されているように、移行した VM のデフォルトのライセンス タイプは、移行したオペレーティング システムに基づいて Migrate to Virtual Machines によって割り当てられます。
    オペレーティング システムが複数のライセンス タイプをサポートしている場合は、デフォルトのライセンス タイプをオーバーライドして、PAYG または BYOL のライセンス タイプを明示的に指定できます。
    diskImageTargetDefaults.osAdaptationParameters.generalize ブール値
    イメージを一般化する場合は、このフラグを true に設定します。
    イメージからインスタンスを作成すると、Windows によって一意の情報がインスタンスに追加されます。一般化は、この情報を削除して、同じイメージから複数のインスタンスを作成できるようにするプロセスです。
    diskImageTargetDefaults.encryption 文字列
    インポート プロセスでデータの暗号化に使用する Google 管理の暗号鍵。詳細については、保存時にデータを暗号化するをご覧ください。
    encryption 文字列
    顧客管理の暗号鍵(CMEK)を使用して、インポート プロセス中のデータと、インポート プロセスによって作成されたイメージのデータを暗号化するには、このオプションを選択します。データを保護する鍵について特定のコンプライアンスや規制の要件がある場合、CMEK を使用してデータの暗号化と復号を行うことができます。これらの暗号鍵は、ユーザーによって作成、管理、所有されます。詳細については、Cloud KMS 鍵を使用してリソースを保護するをご覧ください。
    CMEK を追加する場合は、次の表に示す権限が必要になります。
    ロール 必要な権限 説明
    Cloud VM Migration サービス アカウント roles/vmmigration.serviceAgent インポート プロセス中に作成されたイメージのデータを暗号化するには、この権限を Compute Engine サービス アカウントに付与します。
    Compute Engine サービス エージェント roles/compute.serviceAgent インポート プロセスでデータを暗号化するには、この権限を Migrate to Virtual Machines サービス エージェントに付与します。

    次のサンプルのようなレスポンスが表示されます。

    {
      "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
      "metadata": {
        "createTime": "2023-10-31T09:12:26.94928636Z",
        "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
        "verb": "create",
        "apiVersion": "v1",
        "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
      }
    }
    
  2. 次のコマンドを使用してオペレーションをポーリングし、イメージ インポート ジョブが完了したかどうかを確認します。

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
    

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

    • HOST_PROJECT_ID: 仮想ディスク イメージの移行元のホスト プロジェクトの名前。
    • REGION_ID: イメージ インポート プロセスを実行するリージョン。イメージは最も近いマルチリージョンに作成されます。リージョンでイメージを作成する場合は、singleRegionStorage が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。
    • OPERATION_ID: 移行ジョブのオペレーション ID。

    次のサンプルのようなオペレーション完了レスポンスが表示されます。

      {
        "done": true,
        "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
        "response": {
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport",
          "name": "projects/<HOST_PROJECT_ID>/locations/us-central1/imageImports/IMPORT_NAME",
          "cloudStorageUri": "SOURCE_FILE",
          "createTime": "2023-10-31T09:04:04.413664947Z",
          "diskImageTargetDefaults": {
            "imageName": "IMAGE_NAME",
            "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
          },
          "recentImageImportJobs": [
            {
              "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
              "diskImageTargetDetails": {
               "imageName": "IMAGE_NAME",
               "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
            },
             "state": "PENDING"
           }
          ]
        },
        "metadata": {
          "createTime": "2023-10-31T09:04:04.416740716Z",
          "endTime": "2023-10-31T09:05:36.79987142Z",
          "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "verb": "create",
          "apiVersion": "v1",
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
        }
      }
    
  3. 次のコマンドを使用して、イメージ インポート ジョブの完了をモニタリングします。

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
    

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

    • HOST_PROJECT_ID: 仮想ディスク イメージの移行元のホスト プロジェクトの名前。
    • REGION_ID: イメージ インポート プロセスを実行するリージョン。イメージは最も近いマルチリージョンに作成されます。リージョンでイメージを作成する場合は、singleRegionStorage が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。
    • IMPORT_NAME: イメージ インポート リソースを表す ID。Compute Engine にイメージをインポートすると、Migrate to Virtual Machines はまずイメージ インポート リソースを作成します。イメージ インポート リソースはイメージ インポート プロセスを表します。IMPORT_NAME を使用すると、イメージ インポート プロセスの一環としてインポートされたイメージへのリンクを取得できます。

    次のサンプルのようなジョブ完了レスポンスが表示されます。

    {
      "createTime":"2023-10-31T09:12:27.053788394Z",
      "createdResources":[
        "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME"
      ],
      "diskImageTargetDetails": {
        "imageName":"IMAGE_NAME",
        "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
      },
      "endTime":"2023-10-31T09:16:50.224865783Z",
      "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
      "state":"SUCCEEDED"
    }