Creare una macchina virtuale Windows da un disco specializzatoCreate a Windows VM from a specialized disk

Creare una nuova macchina virtuale collegando un disco gestito specializzato come disco del sistema operativo con Powershell.Create a new VM by attaching a specialized managed disk as the OS disk using Powershell. Un disco specializzato è una copia del disco rigido virtuale proveniente da una macchina virtuale esistente che gestisce gli account utente, le applicazioni e altri dati di stato dalla macchina virtuale originale.A specialized disk is a copy of virtual hard disk (VHD) from an existing VM that maintains the user accounts, applications, and other state data from your original VM.

Quando si usa un disco rigido virtuale specializzato per creare una nuova VM, la nuova VM mantiene il nome computer della VM originale.When you use a specialized VHD to create a new VM, the new VM retains the computer name of the original VM. Vengono mantenute anche altre informazioni specifiche del computer e, in alcuni casi, queste informazioni duplicate possono causare problemi.Other computer-specific information is also be kept and, in some cases, this duplicate information could cause issues. Quando si copia una VM, tenere presente quali tipi di informazioni specifiche del computer vengono usate dalle applicazioni.Be aware of what types of computer-specific information your applications rely on when copying a VM.

Sono disponibili due opzioni:You have two options:

Questo argomento illustra come usare i dischi gestiti.This topic shows you how to use managed disks. Se è presente una distribuzione legacy che richiede l'uso di un account di archiviazione, vedere Create a VM from a specialized VHD in a storage account (Creare una VM da un disco rigido virtuale specializzato in un account di archiviazione)If you have a legacy deployment that requires using a storage account, see Create a VM from a specialized VHD in a storage account

Prima di iniziareBefore you begin

Se si usa PowerShell, verificare di avere la versione più recente del modulo di PowerShell AzureRM.Compute.If you use PowerShell, make sure that you have the latest version of the AzureRM.Compute PowerShell module.

Install-Module AzureRM.Compute -RequiredVersion 2.6.0

Per altre informazioni, vedere Azure PowerShell Versioning (Controllo delle versioni di Azure PowerShell).For more information, see Azure PowerShell Versioning.

Opzione 1: Caricare un disco rigido virtuale specializzatoOption 1: Upload a specialized VHD

È possibile caricare il disco rigido virtuale da una VM specializzata creata con uno strumento di virtualizzazione locale, ad esempio Hyper-V, o da una VM esportata da un altro cloud.You can upload the VHD from a specialized VM created with an on-premises virtualization tool, like Hyper-V, or a VM exported from another cloud.

Preparare la macchina virtualePrepare the VM

Se si intende usare il disco rigido virtuale così come è per creare una nuova macchina virtuale, assicurare il completamento delle operazioni seguenti.If you intend to use the VHD as-is to create a new VM, ensure the following steps are completed.

  • Preparare un disco rigido virtuale (VHD) di Windows per il caricamento in Azure.Prepare a Windows VHD to upload to Azure. Non generalizzare la macchina Virtuale con Sysprep.Do not generalize the VM using Sysprep.
  • Rimuovere tutti gli strumenti di virtualizzazione guest e gli agenti installati nella macchina virtuale, ad esempio gli strumenti VMware.Remove any guest virtualization tools and agents that are installed on the VM (like VMware tools).
  • Assicurarsi che la macchina virtuale sia configurata per eseguire il pull dell'indirizzo IP e delle impostazioni DNS tramite DHCP.Ensure the VM is configured to pull its IP address and DNS settings via DHCP. In questo modo il server ottiene un indirizzo IP all'interno della rete virtuale all'avvio.This ensures that the server obtains an IP address within the VNet when it starts up.

Ottenere l'account di archiviazioneGet the storage account

Per archiviare il disco rigido virtuale caricato, è necessario un account di archiviazione di Azure.You need a storage account in Azure to store the uploaded VHD. È possibile usare un account di archiviazione esistente o crearne uno nuovo.You can either use an existing storage account or create a new one.

Per mostrare gli account di archiviazione disponibili, digitare:To show the available storage accounts, type:

Get-AzureRmStorageAccount

Per usare un account di archiviazione esistente, passare alla sezione Caricare il disco rigido virtuale.If you want to use an existing storage account, proceed to the Upload the VHD section.

Per creare un account di archiviazione, seguire questa procedura:If you need to create a storage account, follow these steps:

  1. È necessario il nome del gruppo di risorse in cui deve essere creato l'account di archiviazione.You need the name of the resource group where the storage account should be created. Per trovare tutti i gruppi di risorse inclusi nella sottoscrizione digitare:To find out all the resource groups that are in your subscription, type:

    Get-AzureRmResourceGroup
    

    Per creare un gruppo di risorse denominato MyResourceGroup nell'area Stati Uniti occidentali, digitare:To create a resource group named myResourceGroup in the West US region, type:

    New-AzureRmResourceGroup -Name myResourceGroup -Location "West US"
    
  2. Creare un account di archiviazione denominato mystorageaccount in questo gruppo di risorse con il cmdlet New-AzureRmStorageAccount.Create a storage account named mystorageaccount in this resource group by using the New-AzureRmStorageAccount cmdlet:

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

Caricare il disco rigido virtuale nell'account di archiviazioneUpload the VHD to your storage account

Usare il cmdlet Add-AzureRmVhd per caricare il disco rigido virtuale in un contenitore nell'account di archiviazione.Use the Add-AzureRmVhd cmdlet to upload the VHD to a container in your storage account. In questo esempio, il file myVHD.vhd viene caricato da "C:\Users\Public\Documents\Virtual hard disks\" a un account di archiviazione denominato mystorageaccount nel gruppo di risorse myResourceGroup.This example uploads the file myVHD.vhd from "C:\Users\Public\Documents\Virtual hard disks\" to a storage account named mystorageaccount in the myResourceGroup resource group. Il file viene archiviato nel contenitore denominato mycontainer e il nuovo nome del file sarà myUploadedVHD.vhd.The file is stored in the container named mycontainer and the new file name will be myUploadedVHD.vhd.

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

Se l'operazione riesce, si ottiene una risposta simile alla seguente:If successful, you get a response that looks similar to this:

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

L'esecuzione del comando potrebbe richiedere del tempo, a seconda della connessione di rete e delle dimensioni del file VHD.Depending on your network connection and the size of your VHD file, this command may take a while to complete

Creare un disco gestito dal disco rigido virtualeCreate a managed disk from the VHD

Creare un disco gestito dal disco rigido virtuale specializzato nell'account di archiviazione usando New-AzureRMDisk.Create a managed disk from the specialized VHD in your storage account using New-AzureRMDisk. Questo esempio usa myOSDisk1 come nome del disco, inserisce il disco nella risorsa di archiviazione StandardLRS e usa https://storageaccount.blob.core.windows.net/vhdcontainer/osdisk.vhd come URI per il disco rigido virtuale di origine.This example uses myOSDisk1 for the disk name, puts the disk in StandardLRS storage, and uses https://storageaccount.blob.core.windows.net/vhdcontainer/osdisk.vhd as the URI for the source VHD.

Creare un nuovo gruppo di risorse per la nuova VM.Create a new resource group for the new VM.

$destinationResourceGroup = 'myDestinationResourceGroup'
New-AzureRmResourceGroup -Location $location -Name $destinationResourceGroup

Creare il nuovo disco del sistema operativo dal disco rigido virtuale caricato.Create the new OS disk from the uploaded VHD.

$sourceUri = (https://storageaccount.blob.core.windows.net/vhdcontainer/osdisk.vhd)
$osDiskName = 'myOsDisk'
$osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
    (New-AzureRmDiskConfig -AccountType StandardLRS  -Location $location -CreateOption Import `
    -SourceUri $sourceUri) `
    -ResourceGroupName $destinationResourceGroup

Opzione 2: Copiare una VM di Azure esistenteOption 2: Copy an existing Azure VM

È possibile creare una copia di una VM che usa dischi gestiti acquisendo uno snapshot della VM, quindi usando tale snapshot per creare un nuovo disco gestito e una nuova VM.You can create a copy of a VM that uses managed disks by taking a snapshot of the VM, then using that snapshot to create a new managed disk and a new VM.

Acquisire uno snapshot del disco del sistema operativoTake a snapshot of the OS disk

È possibile acquisire uno snapshot di un'intera VM (tutti i dischi inclusi) o solo di un singolo disco.You can take a snapshot of and entire VM (including all disks) or of just a single disk. I passaggi seguenti illustrano come acquisire uno snapshot solo del disco del sistema operativo della VM usando il cmdlet New-AzureRmSnapshot.The following steps show you how to take a snapshot of just the OS disk of your VM using the New-AzureRmSnapshot cmdlet.

Impostare alcuni parametri.Set some parameters.

$resourceGroupName = 'myResourceGroup' 
$vmName = 'myVM'
$location = 'westus' 
$snapshotName = 'mySnapshot'  

Ottenere l'oggetto macchina virtuale.Get the VM object.

$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $resourceGroupName

Ottenere il nome del disco del sistema operativo.Get the OS disk name.

$disk = Get-AzureRmDisk -ResourceGroupName $resourceGroupName -DiskName $vm.StorageProfile.OsDisk.Name

Creare la configurazione dello snapshot.Create the snapshot configuration.

$snapshotConfig =  New-AzureRmSnapshotConfig -SourceUri $disk.Id -OsType Windows -CreateOption Copy -Location $location 

Ottenere lo snapshot.Take the snapshot.

$snapShot = New-AzureRmSnapshot -Snapshot $snapshotConfig -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName

Se si prevede di usare lo snapshot per creare una macchina virtuale a prestazioni elevate, usare il parametro -AccountType Premium_LRS con il comando New-AzureRmSnapshot.If you plan to use the snapshot to create a VM that needs to be high performing, use the parameter -AccountType Premium_LRS with the New-AzureRmSnapshot command. Il parametro crea lo snapshot in modo tale che venga archiviato come un disco gestito Premium.The parameter creates the snapshot so that it's stored as a Premium Managed Disk. I dischi gestiti Premium sono più costosi di quelli Standard.Premium Managed Disks are more expensive than Standard. Assicurarsi quindi che l'opzione Premium sia realmente necessaria prima di usare il parametro.So be sure you really need Premium before using the parameter.

Creare un nuovo disco dallo snapshotCreate a new disk from the snapshot

Creare un disco gestito dallo snapshot usando New-AzureRMDisk.Create a managed disk from the snapshot using New-AzureRMDisk. Questo esempio usa myOSDisk come nome del disco.This example uses myOSDisk for the disk name.

Creare un nuovo gruppo di risorse per la nuova VM.Create a new resource group for the new VM.

$destinationResourceGroup = 'myDestinationResourceGroup'
New-AzureRmResourceGroup -Location $location -Name $destinationResourceGroup

Impostare il nome del disco del sistema operativo.Set the OS disk name.

$osDiskName = 'myOsDisk'

Creare il disco gestito.Create the managed disk.

$osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
    (New-AzureRmDiskConfig  -Location $location -CreateOption Copy `
    -SourceResourceId $snapshot.Id) `
    -ResourceGroupName $destinationResourceGroup

Creare la nuova VMCreate the new VM

Creare le risorse di rete e le altre risorse da usare nella nuova VM.Create networking and other VM resources to be used by the new VM.

Creare la subNet e la vNetCreate the subNet and vNet

Creare la rete virtuale e la subnet della rete virtuale.Create the vNet and subNet of the virtual network.

Creare la subnet.Create the subNet. In questo esempio viene creata una subnet denominata mySubNet nel gruppo di risorse myDestinationResourceGroup e il prefisso dell'indirizzo della subnet viene impostato su 10.0.0.0/24.This example creates a subnet named mySubNet, in the resource group myDestinationResourceGroup, and sets the subnet address prefix to 10.0.0.0/24.

$subnetName = 'mySubNet'
$singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24

Creare la rete virtuale.Create the vNet. In questo esempio il nome della rete virtuale è myVnetName, la posizione specificata è Stati Uniti occidentali e il prefisso dell'indirizzo per la rete virtuale è 10.0.0.0/16.This example sets the virtual network name to be myVnetName, the location to West US, and the address prefix for the virtual network to 10.0.0.0/16.

$vnetName = "myVnetName"
$vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $destinationResourceGroup -Location $location `
    -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet

Creare il gruppo di sicurezza di rete e una regola RDPCreate the network security group and an RDP rule

Per essere in grado di accedere alla VM tramite RDP, è necessario disporre di una regola di sicurezza che consenta l'accesso RDP sulla porta 3389.To be able to log in to your VM using RDP, you need to have a security rule that allows RDP access on port 3389. Poiché il disco rigido virtuale per la nuova macchina virtuale è stato creato da una VM specializzata esistente, è possibile usare un account della macchina virtuale di origine per RDP.Because the VHD for the new VM was created from an existing specialized VM, you can use an account from the source virtual machine for RDP.

In questo esempio il nome NSG impostato è myNsg, mentre il nome della regola RDP è myRdpRule.This example sets the NSG name to myNsg and the RDP rule name to myRdpRule.

$nsgName = "myNsg"

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

Per altre informazioni sugli endpoint e sulle regole NSG, vedere Apertura di porte a una VM tramite PowerShell.For more information about endpoints and NSG rules, see Opening ports to a VM in Azure using PowerShell.

Creare un indirizzo IP pubblico e NICCreate a public IP address and NIC

Per abilitare la comunicazione con la macchina virtuale nella rete virtuale, sono necessari un indirizzo IP pubblico e un'interfaccia di rete.To enable communication with the virtual machine in the virtual network, you need a public IP address and a network interface.

Creare l'IP pubblico.Create the public IP. In questo esempio, il nome dell'indirizzo IP pubblico è myIP.In this example, the public IP address name is set to myIP.

$ipName = "myIP"
$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $destinationResourceGroup -Location $location `
   -AllocationMethod Dynamic

Creare la scheda NIC.Create the NIC. In questo esempio, il nome specificato della scheda NIC è myNicName.In this example, the NIC name is set to myNicName.

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

Impostare il nome e le dimensioni della macchina virtualeSet the VM name and size

Questo esempio imposta il nome della macchina virtuale su myVM e le dimensioni su Standard_A2.This example sets the VM name to myVM and the VM size to Standard_A2.

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

Aggiungere la scheda di interfaccia di reteAdd the NIC

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

Aggiungere il disco del sistema operativoAdd the OS disk

Aggiungere il disco del sistema operativo alla configurazione usando Set-AzureRmVMOSDisk.Add the OS disk to the configuration using Set-AzureRmVMOSDisk. In questo esempio le dimensioni del disco vengono impostate su 128 GB e viene collegato il disco gestito come disco del sistema operativo Windows.This example sets the size of the disk to 128 GB and attaches the managed disk as a Windows OS disk.

$vm = Set-AzureRmVMOSDisk -VM $vm -ManagedDiskId $osDisk.Id -StorageAccountType StandardLRS `
    -DiskSizeInGB 128 -CreateOption Attach -Windows

Completare la VMComplete the VM

Creare la macchina virtuale usando le configurazioni New-AzureRMVM appena create.Create the VM using New-AzureRMVMthe configurations that we just created.

New-AzureRmVM -ResourceGroupName $destinationResourceGroup -Location $location -VM $vm

Se il comando ha esito positivo, viene visualizzato un output simile al seguente:If this command was successful, you'll see output like this:

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

Verificare che la VM sia stata creataVerify that the VM was created

La VM appena creata verrà visualizzata nel portale di Azure in Sfoglia > Macchine virtuali oppure usando i comandi di PowerShell seguenti:You should see the newly created VM either in the Azure portal, under Browse > Virtual machines, or by using the following PowerShell commands:

$vmList = Get-AzureRmVM -ResourceGroupName $destinationResourceGroup
$vmList.Name

Passaggi successiviNext steps

Per accedere alla nuova macchina virtuale, passare alla VM nel portale, fare clic su Connettie aprire il file RDP di Desktop remoto.To sign in to your new virtual machine, browse to the VM in the portal, click Connect, and open the Remote Desktop RDP file. Usare le credenziali dell'account della macchina virtuale originale per accedere alla nuova macchina virtuale.Use the account credentials of your original virtual machine to sign in to your new virtual machine. Per altre informazioni, vedere Come connettersi e accedere a una macchina virtuale di Azure che esegue Windows.For more information, see How to connect and log on to an Azure virtual machine running Windows.