Criar um VM a partir de um VHD especializado numa conta de armazenamento

Crie um novo VM fixando um disco especializado não gerido como o disco OS utilizando o Powershell. Um disco especializado é uma cópia de VHD de um VM existente que mantém as contas de utilizador, aplicações e outros dados do estado a partir do seu VM original.

Tem duas opções:

Opção 1: Carregar um VHD especializado

Você pode carregar o VHD a partir de um VM especializado criado com uma ferramenta de virtualização no local, como Hyper-V, ou um VM exportado de outra nuvem.

Preparar a VM

Você pode carregar um VHD especializado que foi criado usando um VM no local ou um VHD exportado de outra nuvem. Um VHD especializado mantém as contas de utilizador, aplicações e outros dados estatais do seu VM original. Se pretender utilizar o VHD como é para criar um novo VM, certifique-se de que os seguintes passos estão concluídos.

  • Prepare um Windows VHD para fazer o upload para Azure. Não generalize o VM utilizando o Sysprep.
  • Remova quaisquer ferramentas e agentes de virtualização de hóspedes instalados no VM (por isso, ferramentas VMware).
  • Certifique-se de que o VM está configurado para puxar o seu endereço IP e as definições de DNS através do DHCP. Isto garante que o servidor obtém um endereço IP dentro do VNet quando este começar.

Obtenha a conta de armazenamento

Precisa de uma conta de armazenamento em Azure para armazenar a imagem em VM carregada. Pode utilizar uma conta de armazenamento existente ou criar uma nova.

Para mostrar as contas de armazenamento disponíveis, escreva:

Get-AzStorageAccount

Se pretender utilizar uma conta de armazenamento existente, dirija-se à secção de imagem VM.

Se precisar de criar uma conta de armazenamento, siga estes passos:

  1. Precisa do nome do grupo de recursos onde a conta de armazenamento deve ser criada. Para descobrir todos os grupos de recursos que estão na sua subscrição, escreva:

    Get-AzResourceGroup
    

    Para criar um grupo de recursos chamado myResourceGroup na região oeste dos EUA , escreva:

    New-AzResourceGroup -Name myResourceGroup -Location "West US"
    
  2. Crie uma conta de armazenamento denominada mystorageaccount neste grupo de recursos utilizando o cmdlet New-AzStorageAccount :

    New-AzStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "West US" `
        -SkuName "Standard_LRS" -Kind "Storage"
    

Upload the VHD to your storage account (Carregar o VHD para a conta de armazenamento)

Utilize o cmdlet Add-AzVhd para enviar a imagem para um recipiente na sua conta de armazenamento. Este exemplo envia o ficheiro myVHD.vhd para uma conta de "C:\Users\Public\Documents\Virtual hard disks\" armazenamento chamada mystorageaccount no grupo de recursos myResourceGroup . O ficheiro será colocado no contentor chamado mycontainer e o novo nome do ficheiro será myUploadedVHD.vhd.

$rgName = "myResourceGroup"
$urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd"
Add-AzVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd `
    -LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"

Se for bem sucedido, obtém-se uma resposta semelhante a esta:

MD5 hash is being calculated for the file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.
MD5 hash calculation is completed.
Elapsed time for the operation: 00:03:35
Creating new page blob of size 53687091712...
Elapsed time for upload: 01:12:49

LocalFilePath           DestinationUri
-------------           --------------
C:\Users\Public\Doc...  https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd

Dependendo da sua ligação à rede e do tamanho do seu ficheiro VHD, este comando pode demorar algum tempo a ser concluído.

Opção 2: Copiar o VHD de um Azure VM existente

Pode copiar um VHD para outra conta de armazenamento para utilizar ao criar um novo VM duplicado.

Antes de começar

Certifique-se de que:

  • Tenha informações sobre as contas de armazenamento de origem e destino. Para a fonte VM, você precisa ter a conta de armazenamento e os nomes do recipiente. Normalmente, o nome do recipiente será vhds. Também precisa de ter uma conta de armazenamento de destino. Se ainda não tiver um, pode criar um utilizando o portal (Todos os Serviços>> Armazenamento contas Adicionar) ou utilizando o cmdlet New-AzStorageAccount.
  • Descarregue e instale a ferramenta AzCopy.

Deallocate the VM

Translocar o VM, que liberta o VHD para ser copiado.

  • Portal: Clique em máquinas> virtuais myVM> Stop
  • Powershell: Use Stop-AzVM para parar (deallocate) o VM nomeado myVM no grupo de recursos myResourceGroup.
Stop-AzVM -ResourceGroupName myResourceGroup -Name myVM

O Estatuto do VM no portal do Azure alterações de Stop to Stop (deallocated).

Obtenha os URLs da conta de armazenamento

Você precisa dos URLs das contas de armazenamento de origem e destino. Os URLs parecem: https://<storageaccount>.blob.core.windows.net/<containerName>/. Se já conhece a conta de armazenamento e o nome do recipiente, basta substituir as informações entre os suportes para criar o seu URL.

Pode utilizar o portal do Azure ou Azure Powershell para obter o URL:

  • Portal: Clique na > conta >de Armazenamento accountstorage> de todos os serviços>E o seu ficheiro VHD de origem provavelmente está no recipiente vhds. Clique em Propriedades para o recipiente e copie o URL com rótulo de texto. Você precisará dos URLs dos contentores de origem e destino.
  • Powershell: Use o Get-AzVM para obter a informação para VM nomeado myVM no grupo de recursos myResourceGroup. Nos resultados, procure na secção de perfis de Armazenamento para o Vhd Uri. A primeira parte do Uri é o URL do recipiente e a última parte é o nome OS VHD para o VM.
Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"

Obtenha as chaves de acesso ao armazenamento

Encontre as chaves de acesso para as contas de armazenamento de origem e destino. Para obter mais informações sobre as chaves de acesso, consulte as contas de armazenamento do Azure.

  • Portal: Clique em todos os serviços>>Armazenamento conta de armazenamentode contas>. Copie a chave rotulada como key1.
  • Powershell: Use o Get-AzStorageAccountKey para obter a chave de armazenamento para a conta de armazenamento mystorageaccount no grupo de recursos myResourceGroup. Copie a chave com a chave 1.
Get-AzStorageAccountKey -Name mystorageaccount -ResourceGroupName myResourceGroup

Copiar o VHD

Pode copiar ficheiros entre contas de armazenamento utilizando o AzCopy. Para o contentor de destino, se o recipiente especificado não existir, será criado para si.

Para utilizar o AzCopy, abra um pedido de comando na sua máquina local e navegue para a pasta onde o AzCopy está instalado. Será semelhante a C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy.

Para copiar todos os ficheiros dentro de um recipiente, utilize o interruptor /S . Isto pode ser usado para copiar o OS VHD e todos os discos de dados se estiverem no mesmo recipiente. Este exemplo mostra como copiar todos os ficheiros do mysourcecontainer do contentor na conta de armazenamento mysourcestorageaccount para o contentor mydestinationcontainer na conta de armazenamento de mydestinationstorageaccount . Substitua os nomes das contas de armazenamento e dos recipientes pelos seus. Substitua <sourceStorageAccountKey1> e <destinationStorageAccountKey1> por as suas próprias chaves.

AzCopy /Source:https://mysourcestorageaccount.blob.core.windows.net/mysourcecontainer `
    /Dest:https://mydestinationatorageaccount.blob.core.windows.net/mydestinationcontainer `
    /SourceKey:<sourceStorageAccountKey1> /DestKey:<destinationStorageAccountKey1> /S

Se apenas pretender copiar um VHD específico num recipiente com vários ficheiros, também pode especificar o nome do ficheiro utilizando o interruptor /Padrão. Neste exemplo, apenas o ficheiro nomeado myFileName.vhd será copiado.

AzCopy /Source:https://mysourcestorageaccount.blob.core.windows.net/mysourcecontainer `
  /Dest:https://mydestinationatorageaccount.blob.core.windows.net/mydestinationcontainer `
  /SourceKey:<sourceStorageAccountKey1> /DestKey:<destinationStorageAccountKey1> `
  /Pattern:myFileName.vhd

Quando estiver terminado, receberá uma mensagem que se parece com:

Finished 2 of total 2 file(s).
[2016/10/07 17:37:41] Transfer summary:
-----------------
Total files transferred: 2
Transfer successfully:   2
Transfer skipped:        0
Transfer failed:         0
Elapsed time:            00.00:13:07

Resolução de problemas

  • Quando utilizar o AZCopy, se vir o erro "O Servidor não autenticou o pedido", certifique-se de que o valor do cabeçalho de Autorização é formado corretamente, incluindo a assinatura. Se estiver a utilizar a chave 2 ou a chave de armazenamento secundária, tente utilizar a chave de armazenamento primária ou 1ª.

Criar o novo VM

É necessário criar networking e outros recursos VM para ser utilizado pelo novo VM.

Criar o subNet e vNet

Crie o vNet e o subNet da rede virtual.

  1. Crie o subNet. Este exemplo cria uma sub-rede chamada mySubNet, no grupo de recursos myResourceGroup, e define o prefixo de endereço da sub-rede para 10.0.0.0/24.

    $rgName = "myResourceGroup"
    $subnetName = "mySubNet"
    $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. Crie o vNet. Este exemplo define o nome da rede virtual como myVnetName, a localização para Os EUA Ocidentais, e o prefixo de endereço para a rede virtual para 10.0.0.0/16.

    $location = "West US"
    $vnetName = "myVnetName"
    $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
        -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
    

    Criar o grupo de segurança da rede e uma regra RDP

    Para poder iniciar sessão no seu VM utilizando RDP, é necessário ter uma regra de segurança que permita o acesso do RDP na porta 3389. Como o VHD para o novo VM foi criado a partir de um VM especializado existente, após a criação do VM pode utilizar uma conta existente a partir da máquina virtual de origem que tinha permissão para iniciar sessão usando RDP. Isto precisa de ser concluído antes de criar a interface de rede a que estará associada.
    Este exemplo define o nome NSG ao myNsg e o nome da regra RDP ao myRdpRule.

$nsgName = "myNsg"

$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
    -SourceAddressPrefix Internet -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
    -Name $nsgName -SecurityRules $rdpRule
	

Para obter mais informações sobre os pontos finais e as regras NSG, consulte portas de abertura para um VM em Azure utilizando o PowerShell.

Criar um endereço IP público e NIC

Para ativar a comunicação com a máquina virtual na rede virtual, é necessário um endereço IP público e uma interface de rede.

  1. Crie o IP público. Neste exemplo, o nome do endereço IP público está definido para myIP.

    $ipName = "myIP"
    $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
        -AllocationMethod Dynamic
    
  2. Criar o NIC. Neste exemplo, o nome NIC é definido para o meu Nome DeNico. Este passo também associa o Grupo de Segurança de Rede criado anteriormente com este NIC.

    $nicName = "myNicName"
    $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName `
     -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
    

Definir o nome e o tamanho VM

Este exemplo define o nome VM como "myVM" e o tamanho VM para "Standard_A2".

$vmName = "myVM"
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_A2"

Adicione o NIC

$vm = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id

Configure o disco OS

  1. Desloque o URI para o VHD que fez o upload ou copiou. Neste exemplo, o ficheiro VHD chamado myOsDisk.vhd é mantido numa conta de armazenamento chamada myStorageAccount em um recipiente chamado myContainer.

    $osDiskUri = "https://myStorageAccount.blob.core.windows.net/myContainer/myOsDisk.vhd"
    
  2. Adicione o disco SO. Neste exemplo, quando o disco DE É criado, o termo "osDisk" é anexado ao nome VM para criar o nome do disco OS. Este exemplo também especifica que este VHD baseado em Windows deve ser anexado ao VM como o disco de OS.

    $osDiskName = $vmName + "osDisk"
    $vm = Set-AzVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach -Windows
    

Opcional: Se tiver discos de dados que precisam de ser ligados ao VM, adicione os discos de dados utilizando os URLs dos VHDs de dados e o Número de Unidade Lógica apropriado (Lun).

$dataDiskName = $vmName + "dataDisk"
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -VhdUri $dataDiskUri -Lun 1 -CreateOption attach

Ao utilizar uma conta de armazenamento, os URLs de disco de dados e sistema operativo são mais ou menos assim: https://StorageAccountName.blob.core.windows.net/BlobContainerName/DiskName.vhd. Pode encontrá-lo no portal navegando para o recipiente de armazenamento alvo, clicando no sistema operativo ou nos dados VHD que foram copiados e, em seguida, copiando o conteúdo do URL.

Complete o VM

Crie o VM utilizando as configurações que acabamos de criar.

#Create the new VM
New-AzVM -ResourceGroupName $rgName -Location $location -VM $vm

Se este comando foi bem sucedido, verás uma saída destas:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK   

Verifique se o VM foi criado

Deverá ver o VM recém-criado no portal do Azure, em todas asmáquinas serviçosVirtual>, ou utilizando os seguintes comandos PowerShell:

$vmList = Get-AzVM -ResourceGroupName $rgName
$vmList.Name

Passos seguintes

Inscreva-se na sua nova máquina virtual. Para obter mais informações, consulte Como ligar e iniciar sessão numa máquina virtual Azure que funciona Windows.