Delen via


Een VM maken van een gespecialiseerde VHD in een opslagaccount

Maak een nieuwe VM door een gespecialiseerde niet-managede schijf als de besturingssysteemschijf te koppelen met behulp van PowerShell. Een gespecialiseerde schijf is een kopie van een VHD van een bestaande VM die de gebruikersaccounts, toepassingen en andere statusgegevens van uw oorspronkelijke VM onderhoudt.

U hebt hiervoor twee opties:

Optie 1: Upload gespecialiseerde VHD maken

U kunt de VHD uploaden vanaf een gespecialiseerde VM die is gemaakt met een on-premises virtualisatieprogramma, zoals Hyper-V, of een VM die is geëxporteerd uit een andere cloud.

De virtuele machine voorbereiden

U kunt een gespecialiseerde VHD uploaden die is gemaakt met behulp van een on-premises VM of een VHD die is geëxporteerd uit een andere cloud. Een gespecialiseerde VHD onderhoudt de gebruikersaccounts, toepassingen en andere statusgegevens van uw oorspronkelijke VM. Als u van plan bent om de VHD zonder problemen te gebruiken om een nieuwe VM te maken, controleert u of de volgende stappen zijn voltooid.

  • Bereid een VHD Windows voor om te uploaden naar Azure. Generaliseer de VM niet met behulp van Sysprep.
  • Verwijder alle gastvirtualisatiehulpprogramma's en -agents die op de virtuele machine zijn geïnstalleerd (dat wil zeggen VMware-hulpprogramma's).
  • Zorg ervoor dat de VM is geconfigureerd voor het pullen van het IP-adres en de DNS-instellingen via DHCP. Dit zorgt ervoor dat de server een IP-adres binnen het VNet verkrijgt wanneer deze wordt gestart.

Het opslagaccount op halen

U hebt een opslagaccount in Azure nodig om de geüploade VM-afbeelding op te slaan. U kunt een bestaand opslagaccount gebruiken of een nieuw opslagaccount maken.

Als u de beschikbare opslagaccounts wilt zien, typt u:

Get-AzStorageAccount

Als u een bestaand opslagaccount wilt gebruiken, gaat u verder met Upload de sectie VM-afbeelding.

Als u een opslagaccount wilt maken, volgt u deze stappen:

  1. U hebt de naam nodig van de resourcegroep waarin het opslagaccount moet worden gemaakt. Als u wilt weten welke resourcegroepen zich in uw abonnement, typt u:

    Get-AzResourceGroup
    

    Als u wilt maken van een resourcegroep met de naam myResourceGroup in de regio VS - west, typt u:

    New-AzResourceGroup -Name myResourceGroup -Location "West US"
    
  2. Maak een opslagaccount met de naam mystorageaccount in deze resourcegroep met behulp van de cmdlet New-AzStorageAccount :

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

De VHD uploaden naar uw opslagaccount

Gebruik de cmdlet Add-AzVhd om de afbeelding te uploaden naar een container in uw opslagaccount. In dit voorbeeld wordt het bestand myVHD.vhd"C:\Users\Public\Documents\Virtual hard disks\" van geüpload naar een opslagaccount met de naam mystorageaccount in de resourcegroep myResourceGroup . Het bestand wordt in de container met de naam mycontainer geplaatst en de nieuwe bestandsnaam wordt 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"

Als dit lukt, krijgt u een antwoord dat er ongeveer als het volgende uitziet:

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

Afhankelijk van uw netwerkverbinding en de grootte van uw VHD-bestand, kan het even duren voordat deze opdracht is voltooid.

Optie 2: de VHD kopiëren van een bestaande Azure-VM

U kunt een VHD kopiëren naar een ander opslagaccount om te gebruiken bij het maken van een nieuwe, dubbele VM.

Voordat u begint

Zorg ervoor dat u:

  • Informatie over de bron- en doelopslagaccounts. Voor de bron-VM moet u de namen van het opslagaccount en de container hebben. Normaal gesproken is de containernaam vhds. U moet ook een doelopslagaccount hebben. Als u er nog geen hebt, kunt u er een maken via de portal (Alle services> Storage accounts > toevoegen) of met de cmdlet New-AzStorageAccount.
  • U hebt het AzCopy-hulpprogramma gedownload en geïnstalleerd.

De toewijzing van de VM op de 1000 maken

Wijs de toewijzing van de VM af, waardoor de VHD vrij komt die moet worden gekopieerd.

  • Portal: klik op VirtuelemachinesmyVM>> Stoppen
  • Powershell: gebruik Stop-AzVM om de VM met de naam myVM in resourcegroep myResourceGroup te stoppen (de toewijzing ervan te herstellen).
Stop-AzVM -ResourceGroupName myResourceGroup -Name myVM

De status van de VM in de Azure Portal is gewijzigd van Gestopt in Gestopt (toewijzing is niet toegewezen).

De URL's van het opslagaccount op halen

U hebt de URL's van de bron- en doelopslagaccounts nodig. De URL's zien er als: https://<storageaccount>.blob.core.windows.net/<containerName>/. Als u het opslagaccount en de containernaam al kent, kunt u de informatie tussen de haakjes vervangen om uw URL te maken.

U kunt de Azure Portal of Azure Powershell gebruiken om de URL op te halen:

  • Portal: klik op de > voor Alle services>Storage>opslagaccountBlobs> en uw bron-VHD-bestand staat waarschijnlijk in de vhds-container. Klik op Eigenschappen voor de container en kopieer de tekst met het label URL. U hebt de URL's van de bron- en doelcontainers nodig.
  • Powershell: gebruik Get-AzVM om de informatie op te halen voor de VM met de naam myVM in de resourcegroep myResourceGroup. Zoek in de resultaten in de sectie Storage profiel naar de Vhd-URI. Het eerste deel van de URI is de URL naar de container en het laatste deel is de VHD-naam van het besturingssysteem voor de VM.
Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"

De toegangssleutels voor opslag ophalen

Zoek de toegangssleutels voor de bron- en doelopslagaccounts. Zie Over Azure-opslagaccounts voor meer informatie over toegangssleutels.

  • Portal: klik op Alle services Storage>accountopslagaccountAccess-sleutels>>. Kopieer de sleutel met het label key1.
  • Powershell: gebruik Get-AzStorageAccountKey om de opslagsleutel op te halen voor het opslagaccount mystorageaccount in de resourcegroep myResourceGroup. Kopieer de sleutel met het label key1.
Get-AzStorageAccountKey -Name mystorageaccount -ResourceGroupName myResourceGroup

De VHD kopiëren

U kunt bestanden kopiëren tussen opslagaccounts met behulp van AzCopy. Als de opgegeven container niet bestaat voor de doelcontainer, wordt deze voor u gemaakt.

Als u AzCopy wilt gebruiken, opent u een opdrachtprompt op uw lokale computer en navigeert u naar de map waarin AzCopy is geïnstalleerd. Deze is vergelijkbaar met C:\Program Files (x86)\Microsoft SDK's\Azure\AzCopy.

Als u alle bestanden in een container wilt kopiëren, gebruikt u de /S-switch . Dit kan worden gebruikt om de VHD van het besturingssysteem en alle gegevensschijven te kopiëren als ze zich in dezelfde container. In dit voorbeeld ziet u hoe u alle bestanden in de container mysourcecontainer in het opslagaccount mysourcestorageaccount kopieert naar de container mydestinationcontainer in het opslagaccount mydestinationstorageaccount . Vervang de namen van de opslagaccounts en containers door uw eigen opslagaccounts. Vervang <sourceStorageAccountKey1> en <destinationStorageAccountKey1> door uw eigen sleutels.

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

Als u alleen een specifieke VHD wilt kopiëren in een container met meerdere bestanden, kunt u ook de bestandsnaam opgeven met behulp van de /Pattern-switch. In dit voorbeeld wordt alleen het bestand met de naam myFileName.vhd gekopieerd.

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

Wanneer dit is voltooid, krijgt u een bericht dat er als de volgende uitziet:

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

Problemen oplossen

  • Als u AZCopy gebruikt en u de fout 'Server kan de aanvraag niet verifiëren' ziet, moet u ervoor zorgen dat de waarde van de Autorisatie-header correct wordt gevormd, inclusief de handtekening. Als u sleutel 2 of de secundaire opslagsleutel gebruikt, gebruikt u de primaire of 1e opslagsleutel.

De nieuwe VM maken

U moet netwerken en andere VM-resources maken die door de nieuwe VM moeten worden gebruikt.

Het subnet en vNet maken

Maak het vNet en subNet van het virtuele netwerk.

  1. Maak het subnet. In dit voorbeeld wordt een subnet met de naam mySubNet gemaakt in de resourcegroep myResourceGroup en wordt het adresprefix van het subnet op 10.0.0.0/24.

    $rgName = "myResourceGroup"
    $subnetName = "mySubNet"
    $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. Maak het vNet. In dit voorbeeld wordt de naam van het virtuele netwerk myVnetName, de locatie op VS - west en het adres voor het virtuele netwerk op 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
    

    De netwerkbeveiligingsgroep en een RDP-regel maken

    Als u zich met RDP wilt kunnen aanmelden bij uw VM, moet u een beveiligingsregel hebben die RDP-toegang toestaat op poort 3389. Omdat de VHD voor de nieuwe VM is gemaakt op basis van een bestaande gespecialiseerde VM, kunt u na het maken van de virtuele machine een bestaand account van de virtuele bronmachine gebruiken dat toestemming had om u aan te melden met behulp van RDP. Dit moet worden voltooid voordat de netwerkinterface wordt gekoppeld.
    In dit voorbeeld wordt de naam van de NSG op myNsg en de naam van de RDP-regel op 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
	

Zie Poorten openen voor een VM in Azure met behulp van PowerShell voor meer informatie over eindpunten en NSG-regels.

Een openbaar IP-adres en een NIC maken

Om te kunnen communiceren met de virtuele machine in het virtuele netwerk, hebt u een openbaar IP-adres en een netwerkinterface nodig.

  1. Maak het openbare IP-adres. In dit voorbeeld wordt de naam van het openbare IP-adres ingesteld op myIP.

    $ipName = "myIP"
    $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
        -AllocationMethod Dynamic
    
  2. Maak de NIC. In dit voorbeeld is de naam van de NIC ingesteld op myNicName. Met deze stap wordt ook de netwerkbeveiligingsgroep die u eerder hebt gemaakt, aan deze NIC koppelt.

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

De VM-naam en -grootte instellen

In dit voorbeeld wordt de VM-naam op 'myVM' en de VM-grootte op 'Standard_A2'.

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

De NIC toevoegen

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

De besturingssysteemschijf configureren

  1. Stel de URI in voor de VHD die u hebt geüpload of gekopieerd. In dit voorbeeld wordt het VHD-bestand met de naam myOsDisk.vhd opgeslagen in een opslagaccount met de naam myStorageAccount in een container met de naam myContainer.

    $osDiskUri = "https://myStorageAccount.blob.core.windows.net/myContainer/myOsDisk.vhd"
    
  2. Voeg de besturingssysteemschijf toe. In dit voorbeeld wordt bij het maken van de besturingssysteemschijf de term 'osDisk' toegevoegd aan de VM-naam om de naam van de besturingssysteemschijf te maken. In dit voorbeeld wordt ook aangegeven dat Windows VHD moet worden gekoppeld aan de VM als de besturingssysteemschijf.

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

Optioneel: als u gegevensschijven hebt die moeten worden gekoppeld aan de VM, voegt u de gegevensschijven toe met behulp van de URL's van gegevens-VHD's en het juiste Lun (Logical Unit Number).

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

Wanneer u een opslagaccount gebruikt, zien de gegevens- en besturingssysteemschijf-URL's er als de volgende uit: https://StorageAccountName.blob.core.windows.net/BlobContainerName/DiskName.vhd. U vindt deze op de portal door naar de doelopslagcontainer te bladeren, te klikken op het besturingssysteem of de gegevens-VHD die is gekopieerd en vervolgens de inhoud van de URL te kopiëren.

De VM voltooien

Maak de VM met behulp van de configuraties die we zojuist hebben gemaakt.

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

Als deze opdracht is geslaagd, ziet u uitvoer zoals deze:

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

Controleren of de VM is gemaakt

U ziet de zojuist gemaakte VM in de Azure Portal, onder Alle servicesVirtuele> machines of met behulp van de volgende PowerShell-opdrachten:

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

Volgende stappen

Meld u aan bij uw nieuwe virtuele machine. Zie Verbinding maken en aanmelden bij een virtuele Azure-machine met Windows.