Compartir a través de


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

Se aplica a: ✔️ Máquinas virtuales Windows

En este artículo se explica cómo cargar un disco duro virtual de la máquina local en un disco administrado de Azure o cómo copiar un disco administrado en otra región mediante el módulo Azure PowerShell. El proceso de carga de un disco administrado, también conocido como carga directa, permite cargar un disco duro virtual de hasta 32 TiB de tamaño directamente en un disco administrado. Actualmente, la carga directa es compatible con discos Ultra, SSD prémium v2, SSD prémium, SSD estándar y HDD estándar.

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 Microsoft Entra ID

Si usa Microsoft Entra ID para controlar el acceso a los recursos, ahora puede usarlo para restringir la carga de discos administrados de Azure. Esta característica está disponible como una oferta de disponibilidad general en todas las regiones. Cuando un usuario intenta cargar un disco, Azure valida la identidad del usuario solicitante en Microsoft Entra ID y confirma que el usuario tiene los permisos necesarios. En un nivel superior, un administrador del sistema podría establecer una directiva a nivel de cuenta o suscripción de Azure para asegurarse de que una identidad de Microsoft Entra tenga 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 Microsoft Entra ID, póngase en contacto con este correo electrónico: azuredisks@microsoft.com

Requisitos previos

Restricciones

  • Los discos duros virtuales no se pueden cargar en instantáneas vacías.
  • Actualmente, Azure Backup no admite discos protegidos con Microsoft Entra ID.
  • Azure Site Recovery no admite actualmente discos protegidos con Microsoft Entra ID.

Asignación del rol RBAC

Para acceder a los discos administrados protegidos con Microsoft Entra ID, el usuario que realiza la solicitud debe tener el rol de Operador de datos para discos administrados o un rol personalizado con los siguientes permisos:

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

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

Introducción

Hay dos maneras de cargar un disco duro virtual con el módulo Azure PowerShell: puede usar el comando Add-AzVHD, que automatiza la mayor parte del proceso, o bien puede realizar la carga manualmente con AzCopy.

En el caso de SSD prémium, SSD estándar y HDD estándar, normalmente debe usar Add-AzVHD. Sin embargo, si va a realizar la carga en un disco Ultra o un SSD prémium v2, o si necesita cargar un disco duro virtual mayor que 50 GiB, debe cargar el VHD o VHDX manualmente con AzCopy. Los discos duros virtuales de 50 GiB y cargas más grandes y rápidas mediante AzCopy y Add-AzVhd no admiten actualmente la carga en un disco Ultra o en un SSD prémium v2.

Para obtener instrucciones sobre cómo copiar un disco administrado de una región en otra, vea Copia de un disco administrado.

Uso de Add-AzVHD

Requisitos previos

Carga de un disco duro virtual

(Opcional) Concesión de acceso al disco

Si se usa Microsoft Entra ID para aplicar restricciones de carga en una suscripción o a nivel de cuenta, Add-AzVHD solo tiene éxito si lo intenta un usuario que tiene el rol RBAC adecuado o los permisos necesarios. Deberá asignar permisos de RBAC para conceder acceso al disco y generar una firma de acceso compartido que se pueda escribir.

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName "Data Operator for Managed Disks" `
-Scope /subscriptions/<subscriptionId>

Uso de Add-AzVHD

En el ejemplo siguiente se carga un VHD desde la máquina local en un nuevo disco administrado de Azure mediante Add-AzVHD. Reemplace <your-filepath-here>, <your-resource-group-name>, <desired-region> y <desired-managed-disk-name> por sus parámetros:

Nota:

Si usa Microsoft Entra ID para aplicar restricciones de carga, agregue DataAccessAuthMode 'AzureActiveDirectory' al final del comando Add-AzVhd.

# Required parameters
$path = <your-filepath-here>.vhd
$resourceGroup = <your-resource-group-name>
$location = <desired-region>
$name = <desired-managed-disk-name>

# Optional parameters
# $Zone = <desired-zone>
# $sku=<desired-SKU>
# -DataAccessAuthMode 'AzureActiveDirectory'
# -DiskHyperVGeneration = V1 or V2. This applies only to OS disks.

# To use $Zone or #sku, add -Zone or -DiskSKU parameters to the command
Add-AzVhd -LocalFilePath $path -ResourceGroupName $resourceGroup -Location $location -DiskName $name

Carga manual

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. El código de ejemplo lo recibirá, pero para hacerlo usted puede usar: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Este valor se usa al especificar el parámetro -UploadSizeInBytes.

Ahora, en el shell local, cree un HDD estándar vacío para la carga mediante la especificación del valor Upload en el parámetro -CreateOption, así como el parámetro -UploadSizeInBytes del cmdlet New-AzDiskConfig. Después, llame a New-AzDisk para crear el disco.

Reemplace <yourdiskname>, <yourresourcegroupname> y <yourregion>; luego, ejecute los siguientes comandos:

Importante

Si va a crear un disco del sistema operativo, agregue -HyperVGeneration '<yourGeneration>' a New-AzDiskConfig.

Si usa Microsoft Entra ID para proteger las cargas, agregue -dataAccessAuthMode 'AzureActiveDirectory' a New-AzDiskConfig.
Al cargar en un disco Ultra o SSD prémium v2, debe seleccionar el tamaño de sector correcto del disco de destino. Si usa un archivo VHDX con un tamaño de sector lógico de 4k, el disco de destino debe establecerse en 4k. Si usa un archivo VHD con un tamaño de sector lógico de 512, el disco de destino debe establecerse en 512.

No se admiten archivos VHDX con tamaño de sector lógico de 512k.

$vhdSizeBytes = (Get-Item "<fullFilePathHere>").length

## For Ultra Disks or Premium SSD v2, add -LogicalSectorSize and specify either 4096 or 512, depending on if you're using a VHDX or a VHD

$diskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -OsType 'Windows' -UploadSizeInBytes $vhdSizeBytes -Location '<yourregion>' -CreateOption 'Upload'

New-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -Disk $diskconfig

Si quiere cargar otro tipo de disco, reemplace Standard_LRS por Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS o UltraSSD_LRS.

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 VHD en ese disco, necesitará una SAS grabable, con el fin de hacer referencia a ella como destino de la carga.

Importante

El 15 de febrero de 2025, el tiempo de acceso de firma de acceso compartido (SAS) para discos e instantáneas se limitará a un máximo de 60 días. Si se intenta generar una SAS con una expiración de más de 60 días, se producirá un error. Cualquier SAS de disco o instantánea existente creada con una expiración superior a 60 días puede dejar de funcionar 60 días después de la fecha de creación y producirá un Error 403 durante la autorización.

Si la expiración de un disco administrado o una SAS de instantánea es superior a 60 días, revoque su acceso y genere una nueva SAS que solicite acceso durante 60 días (5 184 000 segundos) o menos. Mejore la seguridad general mediante SAS con fechas de expiración más cortas. Realice estos cambios antes del 15 de febrero de 2025 para evitar la interrupción del servicio. Los vínculos siguientes se pueden usar para buscar, revocar y solicitar una nueva SAS.

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

$diskSas = Grant-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -DurationInSecond 86400 -Access 'Write'

$disk = Get-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

Carga de un VHD o VHDX

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" $diskSas.AccessSAS --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>; luego, ejecute el siguiente comando:

Revoke-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

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 bien copiar el disco administrado 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>, <yourOSTypeHere> 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 -HyperVGeneration '<yourGeneration>' a New-AzDiskConfig.


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

$sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName

# Adding the sizeInBytes with the 512 offset, and the -Upload flag
$targetDiskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -osType $targetOS -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -Location $targetLocate -CreateOption 'Upload' -HyperVGeneration $targetVmGeneration

$targetDisk = New-AzDisk -ResourceGroupName $targetRG -DiskName $targetDiskName -Disk $targetDiskconfig

$sourceDiskSas = Grant-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName -DurationInSecond 86400 -Access 'Read'

$targetDiskSas = Grant-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName -DurationInSecond 86400 -Access 'Write'

azcopy copy $sourceDiskSas.AccessSAS $targetDiskSas.AccessSAS --blob-type PageBlob

Revoke-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName

Revoke-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName 

Pasos siguientes

Ahora que ha cargado correctamente un VHD en un disco administrado, puede conectar el disco a una máquina virtual y empezar a usarlo.

Para aprender a conectar un disco de datos a una máquina virtual, consulte nuestro artículo al respecto: Conexión de un disco a una VM Windows con PowerShell. Para usar el disco como disco del sistema operativo, consulte Creación de una máquina virtual Windows desde un disco especializado.

Si tiene preguntas adicionales, consulte la sección cargar un disco administrado en las preguntas más frecuentes.