Partilhar via


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

Aplica-se a: ✔️ Linux VMs ✔️ Windows VMs ✔️ Conjuntos de escala flexível

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 AzCopy. Este processo, upload direto, permite que você carregue um VHD de até 32 TiB de tamanho diretamente em um disco gerenciado. Atualmente, o carregamento 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 as 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 da 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 a CLI do Azure. Para criar ou atualizar uma função personalizada, consulte Criar ou atualizar funções personalizadas do Azure usando a CLI do Azure.

Começar agora

Se preferir carregar discos através de uma GUI, pode fazê-lo utilizando o Azure Storage Explorer. Para obter detalhes, consulte: Usar o Gerenciador de Armazenamento do Azure para gerenciar discos gerenciados do Azure

Pré-requisitos

  • Faça o download da versão mais recente do AzCopy v10.
  • Instale a CLI do Azure.
  • Se você pretende carregar um VHD local: um VHD de tamanho fixo que foi preparado para o Azure, armazenado localmente.
  • Ou, um disco gerenciado no Azure, se você pretende executar uma ação de cópia.

Para carregar seu VHD no Azure, você precisa 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:

  • ReadToUpload, o que significa que o disco está pronto para receber um carregamento, 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ê precisa do tamanho do arquivo do VHD que deseja carregar, em bytes. Para obter isso, você pode usar qualquer um wc -c <yourFileName>.vhd ou ls -al <yourFileName>.vhd. Esse valor é usado ao especificar o parâmetro --upload-size-bytes .

Crie um HDD padrão vazio para upload especificando o parâmetro -–for-upload e o parâmetro --upload-size-bytes em um cmdlet disk create :

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

Importante

Se estiver a criar um disco de SO, adicione --hyper-v-generation <yourGeneration> ao az disk create.

Se estiver a utilizar o Microsoft Entra ID para proteger carregamentos de disco, adicione -dataAccessAuthmode 'AzureActiveDirectory'. 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.

##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 pretender carregar um tipo de disco diferente, substitua-standard_lrs por premium_lrs, premium_zrs, standardssd_lrs, standardssd_zrs, premiumv2_lrs ou ultrassd_lrs.

(Opcional) Conceder acesso ao disco

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

Agora que você criou um disco gerenciado vazio configurado para o processo de upload, você pode carregar um VHD para ele. Para carregar um VHD para o disco, você precisa de uma SAS gravável, para que possa fazer referência a ele 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 snapshots será limitado a um máximo de 60 dias. Tentar gerar uma SAS com uma expiração superior a 60 dias resulta num erro. Qualquer SAS de disco ou snapshot existente 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 um disco gerenciado ou snapshot 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 verificar se um disco tem uma SAS ativa, você pode usar a API REST, a CLI do Azure ou o módulo do Azure PowerShell e examinar a propriedade DiskState .
  • Para revogar uma SAS, você pode usar a API REST, a CLI do Azure ou o módulo do Azure PowerShell.
  • Para criar uma SAS, você pode usar a API REST, a CLI do Azure ou o módulo do Azure PowerShell e definir a duração do acesso para 5.184.000 segundos ou menos.

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

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

Valor retornado da amostra:

{
  "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 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 equivalente ao 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 mais gravar mais dados no disco, revogue o SAS. Revogar a 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 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 entre regiões (para outra região).

O script a seguir faz 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ê 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 o <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>e <yourTargetLocationHere> (um exemplo de um valor de local seria uswest2) por seus valores e, em seguida, execute o script a seguir para copiar um disco gerenciado.

Gorjeta

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óximos passos

Agora que carregou com êxito um VHD para um disco gerenciado, você pode anexar o disco como um disco de dados a uma VM existente ou anexar o disco a uma VM como um disco do sistema operacional, para criar uma nova VM.

Se tiver mais perguntas, consulte a secção Carregar um disco gerido nas Perguntas frequentes.