Carga de un VHD en Azure o copia de un disco administrado en otra región: CLI de Azure

Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles

En este artículo se explica cómo cargar un disco duro virtual de la máquina local a un disco administrado de Azure o copiar un disco administrado a otra región mediante AzCopy. Este proceso, la carga directa, permite cargar un disco duro virtual de hasta 32 TiB directamente en un disco administrado. Actualmente, la carga directa es compatible con los HDD estándar, la unidad de estado sólido estándar y los discos administrados SSD prémium. Aún no es compatible con Ultra Disks.

Si va a proporcionar una solución de copia de seguridad para las máquinas virtuales de IaaS en Azure, debería usar la carga directa para restaurar las copias de seguridad de clientes en discos administrados. Al cargar un disco duro virtual desde un origen externo en Azure, las velocidades dependen del ancho de banda local. Al cargar o copiar desde una máquina virtual de Azure, el ancho de banda sería el mismo que el de los HDD estándar.

Protección de cargas con Azure AD (versión preliminar)

Si usa Azure Active Directory (Azure AD) para controlar el acceso a los recursos, ahora puede usarlo para restringir la carga de discos administrados de Azure. Esta funcionalidad actualmente está en su versión preliminar. Cuando un usuario intenta cargar un disco, Azure valida la identidad del usuario solicitante en Azure AD y confirma que el usuario tiene los permisos necesarios. En un nivel superior, un administrador del sistema podría establecer una directiva en el nivel de cuenta o suscripción de Azure para asegurarse de que una identidad de Azure AD tiene los permisos necesarios antes de permitir que cargue un disco o una instantánea de disco. Si tiene alguna pregunta sobre la protección de las cargas con Azure AD, póngase en contacto con este correo electrónico: azuredisks@microsoft .com

Prerrequisitos

  • Instalación de la CLI de Azure.

  • Use el comando siguiente para habilitar la versión preliminar en la suscripción:

    az feature register --name AllowAADAuthForDataAccess --namespace Microsoft.Compute
    

    El registro de características puede tardar algún tiempo en completarse; puede confirmarlo con el siguiente comando:

    az feature show --name AllowAADAuthForDataAccess --namespace Microsoft.Compute --output table
    

Restricciones

  • Los discos duros virtuales no se pueden cargar en instantáneas vacías.

Asignación del rol RBAC

Para acceder a discos administrados protegidos con Azure AD, el usuario solicitante debe tener el rol operador de datos para Managed Disks o un rol personalizado con los permisos siguientes:

  • Microsoft.Compute/disks/download/action
  • Microsoft.Compute/disks/upload/action
  • Microsoft.Compute/snapshots/download/action
  • Microsoft.Compute/snapshots/upload/action

Para los pasos detallados sobre cómo asignar un rol, consulte Asignación de roles de Azure mediante la CLI de Azure. Para crear o actualizar un rol personalizado, consulte Creación o actualización de roles personalizados de Azure mediante la CLI de Azure.

Introducción

Si prefiere cargar discos a través de una interfaz gráfica de usuario, puede hacerlo mediante el Explorador de Azure Storage. Para obtener más detalles, consulte: Uso del Explorador de Azure Storage para administrar discos administrados de Azure

Requisitos previos

Para cargar un disco duro virtual en Azure, deberá crear un disco administrado vacío que esté configurado para este proceso de carga. Antes de crearlo, hay información adicional que debe saber acerca de estos discos.

Este tipo de disco administrado tiene dos estados únicos:

  • ReadToUpload, que significa que el disco está listo para recibir una carga pero no se ha generado ninguna firma de acceso seguro.
  • ActiveUpload, que significa que el disco está listo para recibir una carga y se ha generado la SAS.

Nota

Mientras esté en cualquiera de estos estados, el disco administrado se facturará al precio de un HDD estándar, independientemente del tipo real de disco. Por ejemplo, un P10 se facturará como un S10. Esto sucederá hasta que se llame a revoke-access en el disco administrado, que es necesario para conectar el disco a una máquina virtual.

Creación de un disco administrado vacío

Antes de que pueda crear un HDD estándar vacío para cargar, necesitará el tamaño de archivo del VHD que quiere cargar, en bytes. Para ello, puede usar wc -c <yourFileName>.vhd o ls -al <yourFileName>.vhd. Este valor se usa al especificar el parámetro - upload-size-bytes.

Cree un HDD estándar vacío para la carga mediante la especificación tanto del parámetro -–for-upload como del parámetro --upload-size-bytes en un cmdlet disk create:

Reemplace <yourdiskname>, <yourresourcegroupname>, <yourregion> por los valores de su elección. El parámetro --upload-size-bytes contiene un valor de ejemplo de 34359738880, reemplácelo por un valor adecuado.

Sugerencia

Si va a crear un disco del sistema operativo, agregue --hyper-v-generation <yourGeneration> a az disk create.

Si usa Azure AD para proteger las cargas de disco, agregue -dataAccessAuthmode 'AzureActiveDirectory'.

az disk create -n <yourdiskname> -g <yourresourcegroupname> -l <yourregion> --os-type Linux --for-upload --upload-size-bytes 34359738880 --sku standard_lrs

Si desea cargar un disco SSD prémium o un disco SSD estándar, reemplace standard_lrs por premium_LRS o standardssd_lrs. Los discos Ultra no se admiten por ahora.

(Opcional) Concesión de acceso al disco

Si usa Azure AD para proteger las cargas, deberá asignar permisos RBAC para conceder acceso al disco y generar una firma de acceso compartido grabable.

az role assignment create --assignee "{assignee}" \
--role "{Data Operator for Managed Disks}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{diskName}"

Generación de SAS grabables

Ahora que ha creado un disco administrado vacío que está configurado para el proceso de carga, puede cargar en él un VHD. Para cargar un disco duro virtual en ese disco, necesitará una SAS grabable, con el fin de que pueda hacer referencia a ella como el destino de la carga.

Para generar una SAS grabable de un disco administrado vacío, reemplace <yourdiskname> y <yourresourcegroupname>; después, use el siguiente comando:

az disk grant-access -n <yourdiskname> -g <yourresourcegroupname> --access-level Write --duration-in-seconds 86400

Valor devuelto de ejemplo:

{
  "accessSas": "https://md-impexp-t0rdsfgsdfg4.blob.core.windows.net/w2c3mj0ksfgl/abcd?sv=2017-04-17&sr=b&si=600a9281-d39e-4cc3-91d2-923c4a696537&sig=xXaT6mFgf139ycT87CADyFxb%2BnPXBElYirYRlbnJZbs%3D"
}

Carga de un disco duro virtual

Ahora que tiene una SAS para el disco administrado vacío, puede usarla para establecer el disco administrado como destino del comando de carga.

Use AzCopy V10 para cargar el archivo VHD local en un disco administrado, para lo que se especifica el identificador URI de SAS que ha generado.

Esta carga tiene el mismo rendimiento que el HDD estándar equivalente. Por ejemplo, si tiene un tamaño que equivale a S4, tendrá un rendimiento de hasta 60 MiB/s. Pero si tiene un tamaño que equivale a S70, tendrá un rendimiento de hasta 500 MiB/s.

AzCopy.exe copy "c:\somewhere\mydisk.vhd" "sas-URI" --blob-type PageBlob

Cuando finalice la carga y ya no necesite escribir más datos en el disco, revoque la SAS. Al revocar la SAS, cambiará el estado del disco administrado y podrá conectar el disco a una máquina virtual.

Reemplace <yourdiskname> y <yourresourcegroupname> y, a continuación, use el siguiente comando para que se pueda usar el disco:

az disk revoke-access -n <yourdiskname> -g <yourresourcegroupname>

Copia de un disco administrado

La carga directa también simplifica el proceso de copia de un disco administrado. Puede copiar dentro de la misma región o entre regiones (a otra región).

El script siguiente lo hace automáticamente; el proceso es similar a los pasos descritos anteriormente, con algunas diferencias, ya que está trabajando con un disco existente.

Importante

Debe agregar un desplazamiento de 512 cuando proporcione el tamaño de disco en bytes de un disco administrado de Azure. Esto se debe a que Azure omite el pie de página al devolver el tamaño del disco. Si no lo hace, se producirá un error en la copia. El siguiente script ya lo hace automáticamente.

Reemplace los <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere> y <yourTargetLocationHere> (un ejemplo de un valor de ubicación sería uswest2) con sus valores y, a continuación, ejecute el siguiente script para copiar un disco administrado.

Sugerencia

Si va a crear un disco del sistema operativo, agregue --hyper-v-generation <yourGeneration> a az disk create.

sourceDiskName=<sourceDiskNameHere>
sourceRG=<sourceResourceGroupHere>
targetDiskName=<targetDiskNameHere>
targetRG=<targetResourceGroupHere>
targetLocation=<yourTargetLocationHere>
#Expected value for OS is either "Windows" or "Linux"
targetOS=<yourOSTypeHere>

sourceDiskSizeBytes=$(az disk show -g $sourceRG -n $sourceDiskName --query '[diskSizeBytes]' -o tsv)

az disk create -g $targetRG -n $targetDiskName -l $targetLocation --os-type $targetOS --for-upload --upload-size-bytes $(($sourceDiskSizeBytes+512)) --sku standard_lrs

targetSASURI=$(az disk grant-access -n $targetDiskName -g $targetRG  --access-level Write --duration-in-seconds 86400 -o tsv)

sourceSASURI=$(az disk grant-access -n $sourceDiskName -g $sourceRG --duration-in-seconds 86400 --query [accessSas] -o tsv)

azcopy copy $sourceSASURI $targetSASURI --blob-type PageBlob

az disk revoke-access -n $sourceDiskName -g $sourceRG

az disk revoke-access -n $targetDiskName -g $targetRG

Pasos siguientes

Ahora que ha cargado correctamente un disco duro virtual en un disco administrado, puede conectar el disco como disco de datos a una máquina virtual ya existente o conectarlo como disco del sistema operativo para crear una nueva máquina virtual.