Importar discos virtuales


Si tienes discos virtuales en tu entorno local con software y configuraciones que necesitas (a veces se denominan discos de referencia o imágenes de referencia), puedes ahorrar tiempo importando esos discos virtuales a Compute Engine y usando la imagen resultante para crear máquinas virtuales. La herramienta de importación de Migrate to Virtual Machines admite la mayoría de los formatos de archivo de disco virtual, incluidos VMDK y VHD.

Antes de empezar

Formatos admitidos

Puedes importar archivos de imagen de disco virtual en los siguientes formatos con Migrate to Virtual Machines:

  • Un único disco de máquina virtual (VMDK): es la opción recomendada. Los archivos VMDK se importan más rápido.
  • Copia durante la escritura de QEMU (QCOW)
  • QEMU copy-on-write 2 (QCOW2)
  • Formato de disco mejorado de QEMU (QED)
  • VPC
  • Imagen de disco virtual (VDI)
  • Disco duro virtual v2 (VHDX)
  • Disco duro virtual (VHD)

Además de estos formatos, también se admite un archivo sin procesar comprimido como .tar.gz. Comprueba que el archivo comprimido contenga un solo archivo llamado disk.raw.

Limitaciones

Puedes importar imágenes de disco con arquitectura Arm a las siguientes regiones:

Descripción de la región Nombre de la región
Jurong West (Singapur) asia-southeast1
Tokio (Japón) asia-northeast1
Sídney (Australia) australia-southeast1
Estocolmo (Suecia) europe-north2
Saint‑Ghislain (Bélgica) europe-west1
Londres (Inglaterra) europe-west2
Fráncfort (Alemania) europe-west3
Eemshaven (Países Bajos) europe-west4
París (Francia) europe-west9
Dammam (Arabia Saudí) me-central2
Tel Aviv (Israel) me-west1
Montreal (Quebec) northamerica-northeast1
Querétaro (México) northamerica-south1
São Paulo (Brasil) southamerica-east1
Iowa, Norteamérica us-central1
Carolina del Sur, Norteamérica us-east1
Virginia (Norteamérica) us-east4
Columbus (Norteamérica) us-east5
Dallas (Norteamérica) us-south1
Oregón (Norteamérica) us-west1
California (Norteamérica) us-west2
Utah, Norteamérica us-west3
Nevada (Norteamérica) us-west4

Proceso de importación de imágenes

Para importar una imagen de disco virtual a una imagen de Compute Engine con Migrate to Virtual Machines, sigue estos pasos:

  1. Preparar un archivo de imagen de disco virtual para importarlo
  2. Elegir un proyecto de destino
  3. Importar una imagen de disco virtual a Compute Engine

Preparar un archivo de disco virtual para importarlo

Para importar una imagen de disco virtual a una imagen de Compute Engine, primero debe preparar el archivo de imagen de disco virtual para la importación. En las secciones siguientes se analizan estas tareas en detalle.

Añade el archivo de imagen de disco virtual a Cloud Storage

Para importar una imagen de disco virtual a una imagen de Compute Engine, primero debes añadir el archivo de imagen de disco virtual a Cloud Storage. Para obtener más información, consulta Subir objetos desde un sistema de archivos. Para mejorar el rendimiento, te recomendamos que subas el archivo de imagen de disco virtual a un segmento de la misma región en la nube en la que quieras crear la imagen.

Concede los permisos necesarios

Para importar una imagen de disco virtual a una imagen de Compute Engine, concede los permisos que se describen en la siguiente tabla.

Rol Los permisos que requiere Descripción
Lector de objetos de Storage roles/storage.objectViewer Asigna el rol roles/storage.objectViewer a la cuenta de servicio predeterminada de Migrate to Virtual Machines del proyecto host (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) en el bucket donde se encuentra la imagen que quieres importar. Este permiso permite que Migrate to Virtual Machines acceda a la imagen de origen.
Administrador de VM Migration roles/vmmigration.admin En el proyecto host, concede a la cuenta de usuario que quieras usar para importar la imagen de origen el rol roles/vmmigration.admin.
Cuenta de servicio de migración de máquinas virtuales roles/vmmigration.serviceAgent Asigna el rol roles/vmmigration.serviceAgent a la cuenta de servicio predeterminada de Migrate to Virtual Machines en el proyecto host (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) del proyecto de destino. Por ejemplo, si service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com es la cuenta de servicio de Migrate to Virtual Machines en el proyecto host, debes concederle el rol roles/vmmigration.serviceAgent para poder crear la imagen en el proyecto de destino.

Elige un proyecto de destino

Para alojar la imagen de Compute Engine, debe crear o elegir un proyecto de destino. Un proyecto de destino define el proyecto de destino de una imagen de Compute Engine. Para obtener más información sobre cómo crear o elegir un proyecto de destino, consulta el artículo Añadir un proyecto de destino.

Importar una imagen de disco virtual a Compute Engine

Puedes importar una imagen de disco virtual a Compute Engine mediante la consola deGoogle Cloud , la CLI de Google Cloud o los comandos de la API REST.

Consola

Para importar una imagen de disco virtual a Compute Engine mediante la consola de Google Cloud , sigue estos pasos.

  1. Abre la página Migrar a Virtual Machines en la Google Cloud consola.
    Ve a la página Migrate to Virtual Machines
  2. Selecciona la pestaña Importaciones de imágenes.
  3. Haz clic en Crear imagen.
  4. Define las características de la imagen. En la siguiente tabla se enumeran los parámetros que puedes definir para tu imagen.
    Título de sección Nombre del campo Descripción
    General Nombre El nombre de la imagen que quieres crear. Para obtener más información sobre las reglas de nomenclatura, consulta el artículo Convención de nomenclatura.
    ID de importación de imagen ID que representa el recurso de importación de imágenes. Cuando importas una imagen a Compute Engine, Migrate to Virtual Machines crea primero un recurso de importación de imágenes. El recurso de importación de imágenes representa el proceso de importación de imágenes. Puedes usar el ID de importación de imágenes para obtener el enlace a la imagen que se importó como parte del proceso de importación de imágenes.
    Archivo de Cloud Storage de origen El archivo del que quieres importar la imagen. Haga clic en Explorar para ver la lista de contenedores de su proyecto actual y seleccione el archivo del que quiera importar la imagen.
    Si quieres importar una imagen de un segmento de otro proyecto, debes introducir la ruta con el formato segmento/carpeta/archivo. Para obtener la ruta de un objeto dentro de un segmento, consulta Ver metadatos de objetos. Cuando copies la ruta, asegúrate de no copiar el prefijo gs://.
    Ten en cuenta que solo puedes importar imágenes de archivos .vmdk y .tar.gz.
    Región La región en la que quieres crear la imagen. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
    Proyecto de destino El proyecto de destino en el que quieres crear la imagen. Si aún no has añadido un proyecto de destino, hazlo siguiendo las instrucciones que se indican en Añadir un proyecto de destino.
    Familia (Opcional) Selecciona la familia de imágenes. Compute Engine proporciona familias de imágenes para ayudarte a asegurarte de que tus sistemas de automatización puedan hacer referencia a las imágenes más recientes. Como administrador, puedes agrupar un conjunto de imágenes en una familia de imágenes. Para obtener más información, consulta Familias de imágenes públicas.
    Descripción (Opcional) Añade una descripción de la imagen.
    Omitir adaptación del SO Para omitir la adaptación del SO, activa el interruptor Omitir adaptación del SO.
    Para que las máquinas virtuales creadas a partir de imágenes importadas funcionen correctamente en Google Cloud, es necesario realizar cambios en su configuración. Estos cambios se denominan adaptaciones del SO. Migrate to Virtual Machines adapta el SO automáticamente durante el proceso de importación de imágenes. Para obtener más información, consulta Adaptar instancias de VM para que se ejecuten en Google Cloud.
    Generalizar Para generalizar la imagen, activa el interruptor Generalizar. Cuando creas una instancia a partir de una imagen, Windows añade información única a la instancia. Generalizar es un proceso que elimina esta información para que puedas crear varias instancias a partir de la misma imagen.
    Licencias Tipo de licencia Compute Engine admite licencias de pago por uso (PAYG) y licencias adquiridas por el usuario (BYOL) para las VMs implementadas. Migrate to Virtual Machines asigna el tipo de licencia predeterminado de una máquina virtual migrada en función del sistema operativo migrado, tal como se describe en la sección Sistemas operativos compatibles.
    Si tu sistema operativo admite varios tipos de licencia, puedes anular el tipo de licencia predeterminado para especificar explícitamente un tipo de licencia de pago por uso o de trae tu propia licencia.
    Licencias adicionales Licencias adicionales Puede añadir hasta 10 licencias adicionales a la instancia de VM creada a partir de la imagen importada mediante un formato de URL válido. Por ejemplo, puede añadir licencias adicionales con el siguiente formato de URL:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    Etiquetas Para organizar tu proyecto, añade etiquetas como pares clave-valor a los recursos. Consulta Organizar recursos con etiquetas.
    Cifrado Google-managed encryption key Elige esta opción para usar Google-owned and Google-managed encryption keys para cifrar tus datos durante el proceso de importación. Para obtener más información, consulta cómo cifra los datos cuando están en reposo.
    Clave de cifrado gestionada por el cliente Elige esta opción para usar claves de cifrado gestionadas por el cliente (CMEK) para cifrar tus datos durante el proceso de importación y los datos de la imagen creada por el proceso de importación. Si tienes requisitos de cumplimiento o normativos específicos relacionados con las claves que protegen tus datos, puedes usar CMEK para encriptar y desencriptar tus datos. Tú creas, gestionas y tienes la propiedad de estas claves de cifrado. Para obtener más información, consulta el artículo Proteger recursos con claves de Cloud KMS.
    Cuando añadas una CMEK, debes conceder permisos tal como se describe en la siguiente tabla.
    Rol Los permisos que requiere Descripción
    Cuenta de servicio de Cloud VM Migration roles/vmmigration.serviceAgen Conceda este permiso a la cuenta de servicio de Compute Engine para cifrar los datos de la imagen creada durante el proceso de importación.
    Agente de servicio de Compute Engine roles/compute.serviceAgent Concede este permiso al agente de servicio de Migrate to Virtual Machines para cifrar los datos durante el proceso de importación.
  5. Selecciona Crear.

gcloud

Para importar una imagen de disco virtual a Compute Engine mediante la CLI de Google Cloud, usa la siguiente solicitud.

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

Haz los cambios siguientes:

  • IMAGE_NAME: el nombre de la imagen que quieras crear. Para obtener más información sobre las reglas de nomenclatura, consulta el artículo Convención de nomenclatura.
  • SOURCE_FILE: el archivo del que quieres importar la imagen. Introduce la ruta con el formato gs://bucket/folder/file. Para obtener la ruta de un objeto dentro de un segmento, consulta Ver metadatos de objetos. Ten en cuenta que solo puedes importar imágenes de archivos .vmdk y .tar.gz.
  • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de imágenes. La imagen se crea en la multirregión más cercana. Si quieres que la imagen se cree en una región, asegúrate de que singleRegionStorage tenga el valor true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
  • HOST_PROJECT_ID: el nombre del proyecto host del que quieres migrar la imagen del disco virtual.
  • TARGET_PROJECT: el proyecto de destino en el que quieres crear la imagen. Si aún no has añadido un proyecto de destino, hazlo siguiendo las instrucciones que se indican en Añadir un proyecto de destino.

Para obtener más información, consulta gcloud compute migration image-imports.

REST

Para importar una imagen de disco virtual a Compute Engine mediante la API REST, sigue estos pasos.

  1. Crea un recurso de importación de imágenes con la siguiente solicitud.

    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",
    ...
    }
    }
    

    Haz los cambios siguientes:

    • HOST_PROJECT_ID: el nombre del proyecto host del que quieres migrar la imagen del disco virtual.
    • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de imágenes. La imagen se crea en la multirregión más cercana. Si quieres que la imagen se cree en una región, asegúrate de que singleRegionStorage tenga el valor true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
    • SOURCE_FILE: el archivo del que quieres importar la imagen. Introduce la ruta con el formato gs://bucket/folder/file. Para obtener la ruta de un objeto dentro de un segmento, consulta Ver metadatos de objetos. Ten en cuenta que solo puedes importar imágenes de archivos .vmdk y .tar.gz.
    • IMAGE_NAME: el nombre de la imagen que quieras crear. Para obtener más información sobre las reglas de nomenclatura, consulta el artículo Convención de nomenclatura.
    • TARGET_PROJECT: el proyecto de destino en el que quieres crear la imagen. Si aún no has añadido un proyecto de destino, hazlo siguiendo las instrucciones que se indican en Añadir un proyecto de destino.

    En este ejemplo, IMPORT_NAME es un ID que representa el recurso de importación de imágenes. Cuando importas una imagen a Compute Engine, Migrate to Virtual Machines crea primero un recurso de importación de imágenes. El recurso de importación de imágenes representa el proceso de importación de imágenes. Puedes usar IMPORT_NAME para obtener el enlace a la imagen que se ha importado como parte del proceso de importación de imágenes.

    Consulta la siguiente tabla para ver la lista completa de campos admitidos de la solicitud de creación de importación de imágenes.

    Nombre del campo Descripción
    cloudStorageUri string
    Ruta del archivo desde el que quieres importar la imagen. Introduce la ruta con el formato gs://bucket/folder/file. Para obtener la ruta de un objeto de un contenedor, consulta Ver metadatos de un objeto.
    Ten en cuenta que solo puedes importar imágenes de archivos .vmdk y .tar.gz.
    diskImageTargetDefaults.targetProject cadena
    Ruta del TargetProject. El proyecto de destino en el que quieres crear la imagen. Para obtener más información, consulta la referencia de la API del proyecto de destino. Por ejemplo:
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    En el ejemplo, sustituya lo siguiente:
    • HOST_PROJECT_ID: el nombre del proyecto host del que quieres migrar la imagen del disco virtual.
    • TARGET_PROJECT: el proyecto de destino en el que quieres crear la imagen.
    diskImageTargetDefaults.imageName cadena
    Nombre de la imagen que se va a crear. Para obtener más información sobre las reglas de nomenclatura, consulta el artículo Convenciones para asignar nombres de recursos.
    diskImageTargetDefaults.description string
    (Opcional) Descripción de la imagen.
    diskImageTargetDefaults.familyName string
    (Opcional) Selecciona la familia de imágenes. Compute Engine proporciona familias de imágenes para ayudarte a asegurarte de que tus sistemas de automatización puedan hacer referencia a las imágenes más recientes. Como administrador, puedes agrupar un conjunto de imágenes en una familia de imágenes. Para obtener más información, consulta Familias de imágenes públicas. Para obtener más información, consulta Familias de imágenes públicas.
    diskImageTargetDefaults.labels map (clave: cadena, valor: cadena)
    Para organizar tu proyecto, añade etiquetas como pares clave-valor a tus recursos. Consulta Etiquetar recursos.
    diskImageTargetDefaults.additionalLicenses string[]
    Puede añadir hasta 10 licencias adicionales a la instancia de VM creada a partir de la imagen importada mediante un formato de URL válido. Por ejemplo, puede añadir licencias adicionales con el siguiente formato de URL:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    diskImageTargetDefaults.singleRegionStorage booleano
    Define esta marca como true si quieres que la imagen storageLocations sea una región. Si asignas el valor "false" a esta marca, se seleccionará la multirregión más cercana.
    diskImageTargetDefaults.dataDiskImageImport booleano
    Define este valor como true si quieres omitir la adaptación del SO.
    Para que funcionen correctamente en Google Cloud, las VMs creadas a partir de imágenes importadas requieren que se hagan cambios en su configuración. Estos cambios se denominan adaptaciones del SO. Migrate to Virtual Machines adapta el SO automáticamente durante el proceso de importación de imágenes. Para obtener más información, consulta Adaptar instancias de VM para que se ejecuten en Google Cloud.
    diskImageTargetDefaults.osAdaptationParameters.licenseType string
    El tipo de licencia que quieres usar para tu imagen. Compute Engine admite licencias de pago por uso y licencias BYOL para las VMs que hayas desplegado. Migrate to Virtual Machines asigna el tipo de licencia predeterminado de una máquina virtual migrada en función del sistema operativo migrado, tal como se describe en la sección Sistemas operativos compatibles.
    Si tu sistema operativo admite varios tipos de licencia, puedes anular el tipo de licencia predeterminado para especificar explícitamente un tipo de licencia de pago por uso o trae tu propia licencia.
    diskImageTargetDefaults.osAdaptationParameters.generalize Booleano
    Define esta marca como true si quieres generalizar la imagen.
    Cuando creas una instancia a partir de una imagen, Windows añade información única a la instancia. Generalizar es un proceso que elimina esta información para que puedas crear varias instancias a partir de la misma imagen.
    diskImageTargetDefaults.encryption Cadena
    La Google-owned and Google-managed encryption key que quieres usar para encriptar tus datos durante el proceso de importación. Para obtener más información, consulta cómo se cifran los datos en reposo.
    encryption string
    Elige esta opción para usar claves de cifrado gestionadas por el cliente (CMEK) para cifrar tus datos durante el proceso de importación y los datos de la imagen creada durante el proceso de importación. Si tienes requisitos de cumplimiento o normativos específicos relacionados con las claves que protegen tus datos, puedes usar CMEK para encriptar y desencriptar tus datos. Tú creas, gestionas y tienes la propiedad de estas claves de cifrado. Para obtener más información, consulta Proteger recursos con claves de Cloud KMS.
    Cuando añadas una CMEK, debes conceder permisos tal como se describe en la siguiente tabla.
    Rol Los permisos que requiere Descripción
    Cuenta de servicio de Cloud VM Migration roles/vmmigration.serviceAgent Conceda este permiso a la cuenta de servicio de Compute Engine para cifrar los datos de la imagen creada durante el proceso de importación.
    Agente de servicio de Compute Engine roles/compute.serviceAgent Concede este permiso al agente de servicio de Migrate to Virtual Machines para cifrar los datos durante el proceso de importación.

    Deberías ver una respuesta similar a la siguiente.

    {
      "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. Comprueba si el trabajo de importación de imágenes se ha completado consultando la operación con el siguiente comando.

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

    Haz los cambios siguientes:

    • HOST_PROJECT_ID: el nombre del proyecto anfitrión desde el que vas a migrar la imagen del disco virtual.
    • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de imágenes. La imagen se crea en la multirregión más cercana. Si quieres que la imagen se cree en una región, asegúrate de que singleRegionStorage tenga el valor true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
    • OPERATION_ID: el ID de operación de la tarea de migración.

    Deberías ver una respuesta de finalización de la operación similar a la siguiente respuesta de ejemplo.

      {
        "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. Monitoriza el trabajo de importación de imágenes para comprobar si se ha completado con el siguiente comando.

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

    Haz los cambios siguientes:

    • HOST_PROJECT_ID: el nombre del proyecto anfitrión desde el que vas a migrar la imagen del disco virtual.
    • REGION_ID: la región en la que quieres que se ejecute el proceso de importación de imágenes. La imagen se crea en la multirregión más cercana. Si quieres que la imagen se cree en una región, asegúrate de que singleRegionStorage tenga el valor true. Para ver una lista de las regiones admitidas, consulta Regiones y zonas.
    • IMPORT_NAME: el ID que representa el recurso de importación de imágenes. Cuando importas una imagen a Compute Engine, Migrate to Virtual Machines crea primero un recurso de importación de imágenes. El recurso de importación de imágenes representa el proceso de importación de imágenes. Puedes usar IMPORT_NAME para obtener el enlace a la imagen que se ha importado como parte del proceso de importación de imágenes.

    Deberías ver una respuesta de finalización de la tarea similar a la siguiente.

    {
      "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"
    }