carregue um VHD para o Azure ou copie um disco gerido para outra região – Azure PowerShell

Aplica-se a: ✔️ VMs do Windows

Este artigo explica como carregar um VHD da sua máquina local para um disco gerenciado do Azure ou copiar um disco gerenciado para outra região, usando o módulo do Azure PowerShell. O processo de upload de um disco gerenciado, também conhecido como upload direto, permite que você carregue um VHD de até 32 TiB de tamanho diretamente em um disco gerenciado. Atualmente, o upload direto é suportado para Ultra Disks, Premium SSD v2, Premium SSD, Standard SSD e Standard HDD.

Se você estiver fornecendo uma solução de backup para VMs IaaS no Azure, deverá usar o carregamento direto para restaurar backups de clientes em discos gerenciados. Ao carregar um VHD de uma fonte externa ao Azure, as velocidades dependem da sua largura de banda local. Ao carregar ou copiar de uma VM do Azure, sua largura de banda seria a mesma que os HDDs padrão.

Carregamentos seguros com o Microsoft Entra ID

Se estiver a utilizar o Microsoft Entra ID para controlar o acesso a recursos, pode agora utilizá-lo para restringir o carregamento de discos geridos do Azure. Este recurso está disponível como uma oferta de GA em todas as regiões. Quando um usuário tenta carregar um disco, o Azure valida a identidade do usuário solicitante na ID do Microsoft Entra e confirma que o usuário tem as permissões necessárias. Em um nível mais alto, um administrador de sistema pode definir uma política no nível de conta ou assinatura do Azure para garantir que uma identidade do Microsoft Entra tenha as permissões necessárias para carregar antes de permitir que um disco ou um instantâneo de disco seja carregado. Se você tiver alguma dúvida sobre como proteger carregamentos com o Microsoft Entra ID, entre em contato com este e-mail: azuredisks@microsoft .com

Pré-requisitos

Restrições

  • Os VHDs não podem ser carregados para instantâneos vazios.
  • Atualmente, o Backup do Azure não oferece suporte a discos protegidos com a ID do Microsoft Entra.
  • Atualmente, o Azure Site Recovery não oferece suporte a discos protegidos com a ID do Microsoft Entra.

Atribuir função RBAC

Para acessar discos gerenciados protegidos com a ID do Microsoft Entra, o usuário solicitante deve ter a função Operador de Dados para Discos Gerenciados ou uma função personalizada com as seguintes permissões:

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

Para obter etapas detalhadas sobre como atribuir uma função, consulte Atribuir funções do Azure usando o Azure PowerShell. Para criar ou atualizar uma função personalizada, consulte Criar ou atualizar funções personalizadas do Azure usando o Azure PowerShell.

Introdução

Há duas maneiras de carregar um VHD com o módulo do Azure PowerShell: você pode usar o comando Add-AzVHD, que automatizará a maior parte do processo para você, ou pode executar o carregamento manualmente com o AzCopy.

Para SSDs Premium, SSDs padrão e HDDs padrão, você geralmente deve usar Add-AzVHD. No entanto, se estiver a carregar para um Ultra Disk, ou para um SSD Premium v2, ou se precisar de carregar um VHD com mais de 50 GiB, tem de carregar o VHD ou VHDX manualmente com o AzCopy. VHDs de 50 GiB e maiores carregam mais rápido usando AzCopy e Add-AzVhd atualmente não suportam upload para um Ultra Disk ou um SSD Premium v2.

Para obter orientação sobre como copiar um disco gerenciado de uma região para outra, consulte Copiar um disco gerenciado.

Usar Add-AzVHD

Pré-requisitos

  • Instale o módulo do Azure PowerShell.
  • Um VHD foi preparado para o Azure, armazenado localmente.
    • No Windows: não é necessário converter seu VHD em VHDx, convertê-lo em um tamanho fixo ou redimensioná-lo para incluir o deslocamento de 512 bytes. Add-AZVHD executa essas funções para você.
      • O Hyper-V deve estar habilitado para que Add-AzVHD execute essas funções.
    • No Linux: Você deve executar essas ações manualmente. Consulte Redimensionamento de VHDs para obter detalhes.

Carregar um VHD

(Opcional) Conceder acesso ao disco

Se o ID do Microsoft Entra for usado para impor restrições de carregamento em uma assinatura ou no nível da conta, o Add-AzVHD só terá êxito se for tentado por um usuário que tenha a função RBAC apropriada ou as permissões necessárias. Você precisará atribuir permissões RBAC para conceder acesso ao disco e gerar uma SAS gravável.

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

Usar Add-AzVHD

O exemplo a seguir carrega um VHD de sua máquina local para um novo disco gerenciado do Azure usando Add-AzVHD. Substitua <your-filepath-here>, ,, <your-resource-group-name><desired-region>e <desired-managed-disk-name> pelos seus parâmetros:

Nota

Se você estiver usando o Microsoft Entra ID para impor restrições de upload, adicione DataAccessAuthMode 'AzureActiveDirectory' ao final do 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

Carregamento manual

Pré-requisitos

Para carregar seu VHD no Azure, você precisará criar um disco gerenciado vazio configurado para esse processo de carregamento. Antes de criar um, há algumas informações adicionais que você deve saber sobre esses discos.

Esse tipo de disco gerenciado tem dois estados exclusivos:

  • ReadyToUpload, o que significa que o disco está pronto para receber um upload, mas nenhuma assinatura de acesso seguro (SAS) foi gerada.
  • ActiveUpload, o que significa que o disco está pronto para receber um carregamento e o SAS foi gerado.

Nota

Em qualquer um destes estados, o disco gerido será faturado ao preço padrão do HDD, independentemente do tipo real de disco. Por exemplo, um P10 será cobrado como um S10. Isso será verdadeiro até revoke-access que seja chamado no disco gerenciado, que é necessário para anexar o disco a uma VM.

Criar um disco gerenciado vazio

Antes de poder criar um HDD padrão vazio para upload, você precisará do tamanho do arquivo do VHD que deseja carregar, em bytes. O código de exemplo obterá isso para você, mas, para fazê-lo você mesmo pode usar: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Esse valor é usado ao especificar o parâmetro -UploadSizeInBytes .

Agora, em seu shell local, crie um HDD padrão vazio para upload especificando a configuração Upload no parâmetro -CreateOption , bem como o parâmetro -UploadSizeInBytes no cmdlet New-AzDiskConfig . Em seguida, chame New-AzDisk para criar o disco.

Substitua <yourdiskname>, <yourresourcegroupname>e <yourregion> execute os seguintes comandos:

Importante

Se estiver a criar um disco de SO, adicione -HyperVGeneration '<yourGeneration>' ao New-AzDiskConfig.

Se estiver a utilizar o Microsoft Entra ID para proteger os seus carregamentos, adicione -dataAccessAuthMode 'AzureActiveDirectory' ao New-AzDiskConfig.
Ao fazer o upload para um Ultra Disk ou SSD Premium v2, você precisa selecionar o tamanho correto do setor do disco de destino. Se você estiver usando um arquivo VHDX com um tamanho de setor lógico de 4k, o disco de destino deverá ser definido como 4k. Se você estiver usando um arquivo VHD com um tamanho de setor lógico 512, o disco de destino deverá ser definido como 512.

Arquivos VHDX com tamanho de setor lógico de 512k não são suportados.

$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

Se pretender carregar um tipo de disco diferente, substitua-Standard_LRS por Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS ou UltraSSD_LRS.

Gerar SAS gravável

Agora que você criou um disco gerenciado vazio que está configurado para o processo de upload, você pode carregar um VHD para ele. Para carregar um VHD para o disco, você precisará de uma SAS gravável, para que possa fazer referência a ele como o destino do upload.

Para gerar uma SAS gravável do disco gerenciado vazio, substitua <yourdiskname>e <yourresourcegroupname>use os seguintes comandos:

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

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

Carregar um VHD ou VHDX

Agora que você tem uma SAS para seu disco gerenciado vazio, você pode usá-la para definir seu disco gerenciado como o destino para o comando upload.

Use o AzCopy v10 para carregar seu arquivo VHD ou VHDX local em um disco gerenciado especificando o URI SAS gerado.

Este carregamento tem a mesma taxa de transferência que o HDD padrão equivalente. Por exemplo, se você tiver um tamanho equivalente a S4, terá uma taxa de transferência de até 60 MiB/s. Mas, se você tiver um tamanho que equivale a S70, você terá uma taxa de transferência de até 500 MiB / s.

AzCopy.exe copy "c:\somewhere\mydisk.vhd" $diskSas.AccessSAS --blob-type PageBlob

Depois que o upload for concluído e você não precisar mais gravar mais dados no disco, revogue o SAS. Revogar a SAS alterará o estado do disco gerenciado e permitirá que você anexe o disco a uma VM.

Substitua <yourdiskname>e <yourresourcegroupname>execute o seguinte comando:

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

Copiar um disco gerido

O carregamento direto também simplifica o processo de cópia de um disco gerenciado. Você pode copiar dentro da mesma região ou copiar seu disco gerenciado para outra região.

O script a seguir fará isso por você, o processo é semelhante às etapas descritas anteriormente, com algumas diferenças, já que você está trabalhando com um disco existente.

Importante

Você deve adicionar um deslocamento de 512 quando estiver fornecendo o tamanho do disco em bytes de um disco gerenciado do Azure. Isso ocorre porque o Azure omite o rodapé ao retornar o tamanho do disco. A cópia falhará se você não fizer isso. O script a seguir já faz isso para você.

Substitua o , , , e (um exemplo de um valor de local seria uswest2) por seus valores e <yourTargetLocationHere> , em seguida, <sourceDiskNameHere><targetDiskNameHere><targetResourceGroupHere><yourOSTypeHere> execute o <sourceResourceGroupHere>seguinte script para copiar um disco gerenciado.

Gorjeta

Se você estiver criando um disco do sistema operacional, adicione -HyperVGeneration '<yourGeneration>' ao 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 

Próximos passos

Agora que carregou com êxito um VHD para um disco gerido, pode anexar o disco a uma VM e começar a utilizá-lo.

Para saber como anexar um disco de dados a uma VM, consulte nosso artigo sobre o assunto: Anexar um disco de dados a uma VM do Windows com PowerShell. Para usar o disco como o disco do sistema operacional, consulte Criar uma VM do Windows a partir de um disco especializado.

Se tiver perguntas adicionais, consulte a secção sobre o carregamento de um disco gerido nas Perguntas frequentes.