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, a largura de banda seria a mesma que dos HDs Standard.

Uploads seguros com o Microsoft Entra ID

Se você estiver usando o Microsoft Entra ID para controlar o acesso a recursos, agora poderá usá-lo para restringir o upload de discos gerenciados do Azure. Esse recurso está disponível como uma oferta em GA em todas as regiões. Quando um usuário tenta carregar um disco, o Azure valida a identidade do usuário solicitante no Microsoft Entra ID e confirma que o usuário tem as permissões necessárias. Em um nível mais alto, um administrador do 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 carregamento 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 email: azuredisks@microsoft .com

Pré-requisitos

Restrições

  • Os VHDs não podem ser carregados em instantâneos vazios.
  • No momento, o Backup do Azure não dá suporte a discos protegidos com o Microsoft Entra ID.
  • No momento, o Azure Site Recovery não dá suporte a discos protegidos com o Microsoft Entra ID.

Atribuir função RBAC

Para acessar discos gerenciados protegidos com o Microsoft Entra ID, o usuário solicitante precisa 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 ver as etapas detalhadas de como atribuir uma função, confira Atribuir funções do Azure usando a CLI do Azure. Para criar ou atualizar uma função personalizada, confira Criar ou atualizar funções personalizadas do Azure usando a CLI do Azure.

Introdução

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:

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

Observação

Em qualquer um desses estados, o disco gerenciado será cobrado no preço 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 padrão vazio para carregamento, você precisa do tamanho do arquivo do VHD que quer carregar, em bytes. Para obtê-lo, use wc -c <yourFileName>.vhd ou ls -al <yourFileName>.vhd. Esse valor é usado na especificação do parâmetro --upload-size-bytes.

Crie um HDD Standard vazio para upload especificando o parâmetro -–for-upload e o parâmetro --upload-size-bytes em um cmdlet 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 o Microsoft Entra ID para proteger carregamentos de disco, adicione -dataAccessAuthmode '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 os arquivos VHDX com tamanho de setor lógico de 512k.

##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) Conceder acesso ao disco

Se estiver usando o Microsoft Entra ID para proteger carregamentos, você precisará 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 um SAS gravável

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

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 criado com uma expiração superior a 60 dias pode parar de funcionar 60 dias após a data de criação e resultará em um erro 403 durante a autorização.

Se a expiração de uma SAS de disco gerenciado ou instantâneo for superior a 60 dias, revogue seu 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 local em um disco gerenciado, especificando o URI da 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.exe copy "c:\somewhere\mydisk.vhd" "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> e 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.

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 carregando um disco gerenciado nas perguntas mais frequentes.