Skapa en virtuell dator från en specialiserad virtuell hårddisk i ett lagringskonto

Skapa en ny virtuell dator genom att ansluta en specialiserad ohanterad disk som OS-disk med powershell. En specialiserad disk är en kopia av en virtuell hårddisk från en befintlig virtuell dator som underhåller användarkonton, program och andra tillståndsdata från den ursprungliga virtuella datorn.

Du kan välja mellan två alternativ:

Alternativ 1: Upload en specialiserad virtuell hårddisk

Du kan ladda upp den virtuella hårddisken från en specialiserad virtuell dator som skapats med ett lokalt virtualiseringsverktyg som Hyper-V eller en virtuell dator som exporterats från ett annat moln.

Förbereda den virtuella datorn

Du kan ladda upp en specialiserad virtuell hårddisk som har skapats med hjälp av en lokal virtuell dator eller en virtuell hårddisk som exporterats från ett annat moln. En specialiserad virtuell hårddisk underhåller användarkonton, program och andra tillståndsdata från den ursprungliga virtuella datorn. Om du tänker använda den virtuella hårddisken som den är för att skapa en ny virtuell dator ska du se till att följande steg slutförs.

  • Förbered en virtuell Windows hårddisk för uppladdning till Azure. Generalisera inte den virtuella datorn med hjälp av Sysprep.
  • Ta bort eventuella gästvirtualiseringsverktyg och agenter som är installerade på den virtuella datorn (d.v.s. VMware-verktyg).
  • Se till att den virtuella datorn är konfigurerad för att hämta dess IP-adress och DNS-inställningar via DHCP. Detta säkerställer att servern får en IP-adress inom det virtuella nätverket när den startas.

Hämta lagringskontot

Du behöver ett lagringskonto i Azure för att lagra den uppladdade VM-avbildningen. Du kan antingen använda ett befintligt lagringskonto eller skapa ett nytt.

Om du vill visa tillgängliga lagringskonton skriver du:

Get-AzStorageAccount

Om du vill använda ett befintligt lagringskonto fortsätter du till Upload avsnittet VM-avbildning.

Följ dessa steg om du behöver skapa ett lagringskonto:

  1. Du behöver namnet på resursgruppen där lagringskontot ska skapas. Om du vill ta reda på alla resursgrupper som finns i din prenumeration skriver du:

    Get-AzResourceGroup
    

    Om du vill skapa en resursgrupp med namnet myResourceGroup i regionen USA , västra skriver du:

    New-AzResourceGroup -Name myResourceGroup -Location "West US"
    
  2. Skapa ett lagringskonto med namnet mystorageaccount i den här resursgruppen med hjälp av cmdleten New-AzStorageAccount :

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

Ladda upp den virtuella hårddisken till lagringskontot

Använd cmdleten Add-AzVhd för att ladda upp avbildningen till en container i ditt lagringskonto. I det här exemplet laddas filen myVHD.vhd"C:\Users\Public\Documents\Virtual hard disks\" upp från till ett lagringskonto med namnet mystorageaccount i resursgruppen myResourceGroup . Filen placeras i containern med namnet mycontainer och det nya filnamnet blir 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"

Om det lyckas får du ett svar som ser ut ungefär så här:

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

Beroende på nätverksanslutningen och storleken på VHD-filen kan det här kommandot ta en stund att slutföra.

Alternativ 2: Kopiera den virtuella hårddisken från en befintlig virtuell Azure-dator

Du kan kopiera en virtuell hårddisk till ett annat lagringskonto som ska användas när du skapar en ny, duplicerad virtuell dator.

Innan du börjar

Kontrollera att du:

  • Ha information om käll - och mållagringskontona. För den virtuella källdatorn måste du ha lagringskontot och containernamnen. Vanligtvis är containernamnet vhds. Du måste också ha ett mållagringskonto. Om du inte redan har en kan du skapa en med hjälp av antingen portalen (Alla> tjänster Storage-konton > Lägg till) eller med hjälp av cmdleten New-AzStorageAccount.
  • Har laddat ned och installerat Verktyget AzCopy.

Frisallokera den virtuella datorn

Frigör den virtuella datorn, vilket frigör den virtuella hårddisk som ska kopieras.

  • Portal: Klicka på VirtuelladatorermyVM> Stoppa >
  • PowerShell: Använd Stop-AzVM för att stoppa (friplacera) den virtuella datorn med namnet myVM i resursgruppen myResourceGroup.
Stop-AzVM -ResourceGroupName myResourceGroup -Name myVM

Status för den virtuella datorn i Azure Portal från Stoppad till Stoppad (frisallokerad).

Hämta URL:er för lagringskontot

Du behöver URL:erna för käll- och mållagringskontona. URL:erna ser ut så här: https://<storageaccount>.blob.core.windows.net/<containerName>/. Om du redan känner till lagringskontot och containernamnet kan du bara ersätta informationen mellan hakparenteserna för att skapa din URL.

Du kan använda Azure Portal eller Azure Powershell för att hämta URL:en:

  • Portal: Klicka på > för alla>tjänster StoragekontonlagringskontoBlobs>> och vhd-källfilen finns förmodligen i vhds-containern. Klicka Egenskaper för containern och kopiera texten med etiketten URL. Du behöver URL:erna för både käll- och målcontainrarna.
  • PowerShell: Använd Get-AzVM för att hämta information om den virtuella datorn med namnet myVM i resursgruppen myResourceGroup. I resultatet tittar du i avsnittet Storage förVHD-URI. Den första delen av URI:n är URL:en till containern och den sista delen är OS VHD-namnet för den virtuella datorn.
Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"

Hämta lagringsåtkomstnycklarna

Hitta åtkomstnycklarna för käll- och mållagringskontona. Mer information om åtkomstnycklar finns i Om Azure Storage-konton.

  • Portal: Klicka på Alla tjänster>StoragekontonlagringskontoÅtkomstnycklar>>. Kopiera nyckeln med etiketten key1.
  • PowerShell: Använd Get-AzStorageAccountKey för att hämta lagringsnyckeln för lagringskontot mystorageaccount i resursgruppen myResourceGroup. Kopiera nyckeln med etiketten key1.
Get-AzStorageAccountKey -Name mystorageaccount -ResourceGroupName myResourceGroup

Kopiera den virtuella hårddisken

Du kan kopiera filer mellan lagringskonton med hjälp av AzCopy. Om den angivna containern inte finns för målcontainern skapas den åt dig.

Om du vill använda AzCopy öppnar du en kommandotolk på den lokala datorn och navigerar till mappen där AzCopy är installerat. Det kommer att likna C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy.

Om du vill kopiera alla filer i en container använder du växeln /S . Detta kan användas för att kopiera den virtuella hårddisken i operativsystemet och alla datadiskar om de finns i samma container. Det här exemplet visar hur du kopierar alla filer i containern mysourcecontainer i lagringskontot mysourcestorageaccount till containern mydestinationcontainer i lagringskontot mydestinationstorageaccount . Ersätt namnen på lagringskontona och containrarna med dina egna. Ersätt <sourceStorageAccountKey1> och <destinationStorageAccountKey1> med dina egna nycklar.

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

Om du bara vill kopiera en specifik virtuell hårddisk i en container med flera filer kan du också ange filnamnet med hjälp av växeln /Pattern. I det här exemplet kopieras bara filen med namnet myFileName.vhd .

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

När det är klart visas ett meddelande som ser ut ungefär så här:

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

Felsökning

  • Om du ser felet "Servern kunde inte autentisera begäran" när du använder AZCopy kontrollerar du att värdet för rubriken Authorization (Auktorisering) har rätt format, inklusive signaturen. Om du använder nyckel 2 eller sekundär lagringsnyckel kan du prova att använda den primära eller första lagringsnyckeln.

Skapa den nya virtuella datorn

Du måste skapa nätverk och andra VM-resurser som ska användas av den nya virtuella datorn.

Skapa undernätet och det virtuella nätverket

Skapa det virtuella nätverkets vNet och undernät.

  1. Skapa undernätet. Det här exemplet skapar ett undernät med namnet mySubNet i resursgruppen myResourceGroup och anger adressprefixet för undernätet till 10.0.0.0/24.

    $rgName = "myResourceGroup"
    $subnetName = "mySubNet"
    $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. Skapa det virtuella nätverket. I det här exemplet anges namnet på det virtuella nätverket till myVnetName, platsen till USA, västra och adressprefixet för det virtuella nätverket till 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
    

    Skapa nätverkssäkerhetsgruppen och en RDP-regel

    För att kunna logga in på den virtuella datorn med RDP måste du ha en säkerhetsregel som tillåter RDP-åtkomst på port 3389. Eftersom den virtuella hårddisken för den nya virtuella datorn skapades från en befintlig specialiserad virtuell dator kan du efter att den virtuella datorn har skapats använda ett befintligt konto från den virtuella källdatorn som hade behörighet att logga in med RDP. Detta måste slutföras innan du skapar nätverksgränssnittet som det ska associeras med.
    I det här exemplet anges NSG-namnet till myNsg och RDP-regelnamnet till 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
	

Mer information om slutpunkter och NSG-regler finns i Öppna portar till en virtuell dator i Azure med Hjälp av PowerShell.

Skapa en offentlig IP-adress och ett nätverkskort

För att upprätta kommunikation med den virtuella datorn i det virtuella nätverket behöver du en offentlig IP-adress och ett nätverksgränssnitt.

  1. Skapa den offentliga IP-adressen. I det här exemplet anges namnet på den offentliga IP-adressen till myIP.

    $ipName = "myIP"
    $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
        -AllocationMethod Dynamic
    
  2. Skapa nätverkskortet. I det här exemplet är nätverkskortnamnet inställt på myNicName. Det här steget associerar även nätverkssäkerhetsgruppen som skapades tidigare med det här nätverkskortet.

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

Ange namn och storlek för den virtuella datorn

I det här exemplet anges namnet på den virtuella datorn till "myVM" och VM-storleken till "Standard_A2".

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

Lägg till nätverkskortet

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

Konfigurera OS-disken

  1. Ange URI för den virtuella hårddisken som du laddade upp eller kopierade. I det här exemplet sparas VHD-filen med namnet myOsDisk.vhd i ett lagringskonto med namnet myStorageAccount i en container med namnet myContainer.

    $osDiskUri = "https://myStorageAccount.blob.core.windows.net/myContainer/myOsDisk.vhd"
    
  2. Lägg till OS-disken. I det här exemplet, när OS-disken skapas, läggs termen "osDisk" till i namnet på den virtuella datorn för att skapa OS-diskens namn. Det här exemplet anger också att den Windows virtuella hårddisken ska kopplas till den virtuella datorn som OS-disk.

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

Valfritt: Om du har datadiskar som måste kopplas till den virtuella datorn lägger du till datadiskarna med hjälp av URL:erna för data-VHD:er och lämpligt lun (Logical Unit Number).

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

När du använder ett lagringskonto ser URL:erna för data- och operativsystemdisken ut ungefär så här: https://StorageAccountName.blob.core.windows.net/BlobContainerName/DiskName.vhd. Du hittar detta på portalen genom att bläddra till mållagringscontainern, klicka på operativsystemet eller den virtuella hårddisken för data som kopierades och sedan kopiera innehållet i URL:en.

Slutför den virtuella datorn

Skapa den virtuella datorn med hjälp av de konfigurationer som vi nyss skapade.

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

Om kommandot lyckades visas utdata som liknar följande:

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

Kontrollera att den virtuella datorn har skapats

Du bör se den nyligen skapade virtuella datorn antingen i Azure Portal, under AllatjänsterVirtuella> datorer eller med hjälp av följande PowerShell-kommandon:

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

Nästa steg

Logga in på den nya virtuella datorn. Mer information finns i Ansluta och logga in på en virtuell Azure-dator som kör Windows.