Carregar um VHD no Azure ou copiar um disco gerenciado para outra região – CLI do Azure

Aplica-se a: ✔️ VMs Linux ✔️ VMs Windows ✔️ Conjuntos de dimensionamento flexíveis

Este artigo explica como carregar um VHD de sua máquina local para um disco gerenciado do Azure ou copiar um disco gerenciado para outra região, usando o AzCopy. Esse processo, o upload direto, também permite que você carregue um VHD de até 32 TiB diretamente em um disco gerenciado. Atualmente, há suporte para upload direto nos Discos Ultra, SSD Premium v2, SSD Premium, SSD Standard e HDD Standard.

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

Se você estiver usando a ID do Microsoft Entra para controlar o acesso a recursos, poderá usá-la para restringir o carregamento de discos gerenciados do Azure. Veja downloads e uploads seguros de discos gerenciados do Azure para mais detalhes.

Preparar para carregar ou copiar um disco gerenciado

Se preferir carregar discos por meio de uma GUI, faça isso usando o Gerenciador de Armazenamento do Azure. Para obter detalhes, confira: Usar o Gerenciador de Armazenamento do Azure para gerenciar discos gerenciados do Azure

Pré-requisitos

Para carregar seu VHD no Azure, você precisa criar um disco gerenciado vazio que esteja 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 SAS (assinatura de acesso compartilhado) foi gerada.
  • ActiveUpload, o que significa que o disco está pronto para receber um upload e a SAS foi gerada.

Observação

Enquanto estiver em qualquer um desses estados, o disco gerenciado será cobrado com preços de HDD Standard, independentemente do tipo real de disco. Por exemplo, um P10 será cobrado como um S10. Isso será verdadeiro até que revoke-access seja chamado no disco gerenciado, o que é necessário para anexar o disco a uma VM.

Criar um disco gerenciado vazio

Antes de criar um HDD Standard vazio para carregamento, você precisa do tamanho do arquivo do VHD que deseja carregar, em bytes. Para obter esse valor, use ou wc -c <yourFileName>.vhd ou ls -al <yourFileName>.vhd. Use esse valor ao especificar o --upload-size-bytes parâmetro.

Crie um HDD Standard vazio para carregar especificando o --for-upload parâmetro e o --upload-size-bytes parâmetro no comando az disk create :

Substitua <yourdiskname>, <yourresourcegroupname> e <yourregion> por valores que você escolher. O parâmetro --upload-size-bytes contém o valor de exemplo 34359738880. Substitua-o por um valor apropriado para você.

Importante

Se você estiver criando um disco do sistema operacional, adicione --hyper-v-generation <yourGeneration> a az disk create.

Se você estiver usando a ID do Microsoft Entra para proteger uploads de disco, adicione --data-access-auth-mode AzureActiveDirectory.

Ao carregar em um Disco Ultra 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.

Não há suporte para arquivos VHDX com um tamanho de setor lógico de 512.

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

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

Se você quiser carregar um tipo de disco diferente, substituastandard_lrs por premium_lrs, premium_zrs, standardssd_lrs, standardssd_zrs, premiumv2_lrs ou ultrassd_lrs.

Opcional: atribuir permissões RBAC para Microsoft Entra ID

Se você estiver usando Microsoft Entra ID para proteger uploads de disco, será necessário atribuir permissões RBAC para conceder acesso ao disco e gerar uma SAS gravável.

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

Gerar SAS com permissão de gravação

Agora que você criou um disco gerenciado vazio configurado para o processo de upload, você pode carregar um VHD nele. Para carregar um VHD no disco, você precisa de uma SAS gravável para que possa referenciá-lo como o destino do upload.

Importante

Em 15 de fevereiro de 2025, o tempo de acesso da Assinatura de Acesso Compartilhado (SAS) para discos e instantâneos será limitado a um máximo de 60 dias. Tentar gerar uma SAS com uma expiração superior a 60 dias resulta em um erro. Qualquer SAS de disco ou instantâneo existente criada com um prazo de expiração superior a 60 dias poderá parar de funcionar 60 dias após a data da criação e resultará em um erro 403 durante a autorização.

Se o prazo de expiração de uma SAS de disco gerenciado ou instantâneo for superior a 60 dias, revogue o acesso e gere uma nova SAS que solicite acesso por 60 dias (5.184.000 segundos) ou menos. Melhore sua segurança geral usando SAS com datas de expiração mais curtas. Faça essas alterações antes de 15 de fevereiro de 2025 para evitar a interrupção do serviço. Os links a seguir podem ser usados para localizar, revogar e solicitar uma nova SAS.

Para gerar uma SAS gravável do disco gerenciado vazio, substitua <yourdiskname> e <yourresourcegroupname>, e use o seguinte comando:

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

Exemplo de valor retornado:

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

Carregar um VHD ou VHDX

Agora que você tem uma SAS para o disco gerenciado vazio, use-a para definir o disco gerenciado como o destino para o comando de upload.

Use o AzCopy v10 para carregar seu arquivo VHD ou VHDX local em um disco gerenciado, especificando o URI SAS que você gerou.

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

azcopy copy "<path-to-vhd-or-vhdx>" "<sas-uri>" --blob-type PageBlob

Depois que o upload for concluído e você não precisar gravar mais dados no disco, revogue a SAS. A revogação da SAS altera o estado do disco gerenciado e permite que você anexe o disco a uma VM.

Substitua <yourdiskname> e <yourresourcegroupname>use o seguinte comando para tornar o disco utilizável:

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

Copiar um disco gerenciado

O upload direto também simplifica o processo de cópia de um disco gerenciado. Você pode copiá-lo na mesma região ou entre regiões (para outra região).

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

O script usa az disk show para obter o tamanho do disco de origem e adiciona o deslocamento necessário de 512 bytes. Em seguida, ele usa az disk create para criar um disco de destino pronto para upload e az disk grant-access para gerar URIs SAS para os discos de origem e de destino. Depois que AzCopy copia os dados do disco como um blob de páginas, az disk revoke-access revoga ambas as URIs SAS.

Importante

Você precisa 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 <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere> e <yourTargetLocationHere> (um exemplo de um valor de localização é uswest2) pelos seus valores e execute o script a seguir para copiar um disco gerenciado.

Dica

Se você estiver criando um disco do sistema operacional, adicione --hyper-v-generation <yourGeneration> ao 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 --query [accessSas] -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

Próximas etapas

Agora que você carregou com êxito um VHD em um disco gerenciado, anexe o disco como um disco de dados a uma VM existente ou anexe o disco a uma VM como um disco do SO para criar uma VM.

Se você tiver mais perguntas, consulte a seção de carregamento de um disco gerenciado nas perguntas frequentes.