經過使用 Powershell 將專用託管磁盤附加爲 OS 磁盤來建立新 VM。 專用磁盤是保留原始 VM 中的用戶賬戶、應用程序和其餘狀態數據的現有 VM 中虛擬硬盤 (VHD) 的副本。shell
使用專用 VHD 建立新 VM 時,新 VM 將保留原始 VM 的計算機名。 還會保留其餘計算機特定信息,在某些狀況下,這種重複信息可能會致使問題。 請注意,在複製 VM 時,應用程序依賴哪些類型的計算機特定信息。json
可使用兩個選項:windows
本主題演示如何使用託管磁盤。 若是有須要使用存儲賬戶的舊版部署,請參閱從存儲賬戶中的專用 VHD 建立 VMapi
若是使用 PowerShell,請確保使用的是最新版本的 AzureRM.Compute PowerShell 模塊。安全
Install-Module AzureRM.Compute -RequiredVersion 2.6.0
有關詳細信息,請參閱 Azure PowerShell 版本控制。服務器
可從使用本地虛擬化工具(如 Hyper-V)建立的專用 VM 或從另外一個雲導出的 VM 上傳 VHD。網絡
若是想要使用當前 VHD 建立新 VM,請確保完成如下步驟。工具
須要 Azure 中的存儲賬戶來存儲上傳的 VHD。 可使用現有存儲賬戶,也能夠建立新存儲賬戶。性能
顯示可用的存儲賬戶,請鍵入:ui
Get-AzureRmStorageAccount
若是要使用現有存儲賬戶,請轉到上傳 VHD 部分。
若要建立存儲賬戶,請執行如下步驟:
須要應在其中建立存儲賬戶的資源組的名稱。 若要查找訂閱中的全部資源組,請鍵入:
Get-AzureRmResourceGroup
若要在中國北部區域中建立名爲 myResourceGroup 的資源組,請鍵入:
New-AzureRmResourceGroup -Name myResourceGroup -Location "China North"
使用 New-AzureRmStorageAccount cmdlet 在此資源組中建立名爲 mystorageaccount 的存儲賬戶:
New-AzureRmStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "China North" ` -SkuName "Standard_LRS" -Kind "Storage"
使用 Add-AzureRmVhd cmdlet 將 VHD 上傳到存儲賬戶中的容器。 本示例將文件 myVHD.vhd 從 "C:\Users\Public\Documents\Virtual hard disks\"
上傳到 myResourceGroup 資源組中名爲 mystorageaccount 的存儲賬戶。 該文件存儲在名爲 mycontainer 的容器中,新文件名爲 myUploadedVHD.vhd。
$resourceGroupName = "myResourceGroup" $urlOfUploadedVhd = "https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd" Add-AzureRmVhd -ResourceGroupName $resourceGroupName -Destination $urlOfUploadedVhd ` -LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"
若是成功,會顯示相似於下面的響應:
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.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd
完成執行此命令可能須要一段時間,具體取決於網絡鏈接速度和 VHD 文件的大小
使用 New-AzureRMDisk 經過存儲賬戶中的專用 VHD 建立託管磁盤。 此示例使用 myOSDisk1 做爲磁盤名稱,將磁盤置於 StandardLRS 存儲中並使用 https://storageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd 做爲源 VHD 的 URI。
建立適用於新 VM 的新資源組。
$destinationResourceGroup = 'myDestinationResourceGroup' New-AzureRmResourceGroup -Location $location -Name $destinationResourceGroup
從上傳的 VHD 建立新 OS 磁盤。
$sourceUri = (https://storageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd) $osDiskName = 'myOsDisk' $osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk ` (New-AzureRmDiskConfig -AccountType StandardLRS -Location $location -CreateOption Import ` -SourceUri $sourceUri) ` -ResourceGroupName $destinationResourceGroup
經過拍攝 VM 快照來建立使用託管磁盤的 VM 副本,並使用該快照建立一個新的託管磁盤和一個新 VM。
可拍攝整個 VM(包括全部磁盤)快照或僅拍攝單個磁盤快照。 如下步驟展現瞭如何使用 New-AzureRmSnapshot cmdlet 拍攝僅 VM 的 OS 磁盤的快照。
設置一些參數。
$resourceGroupName = 'myResourceGroup' $vmName = 'myVM' $location = 'chinanorth' $snapshotName = 'mySnapshot'
獲取 VM 對象。
$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $resourceGroupName
獲取 OS 磁盤名稱。
$disk = Get-AzureRmDisk -ResourceGroupName $resourceGroupName -DiskName $vm.StorageProfile.OsDisk.Name
建立快照配置。
$snapshotConfig = New-AzureRmSnapshotConfig -SourceUri $disk.Id -OsType Windows -CreateOption Copy -Location $location
建立快照。
$snapShot = New-AzureRmSnapshot -Snapshot $snapshotConfig -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName
若是計劃使用快照建立須要高性能的 VM,請結合使用 -AccountType Premium_LRS
參數和 New-AzureRmSnapshot 命令。 該參數建立快照,使其做爲高級託管磁盤進行存儲。 高級託管磁盤比標準託管磁盤開銷大。 所以使用該參數前,請確保確實須要高級託管磁盤。
使用 New-AzureRMDisk 從快照建立託管磁盤。 此示例使用「myOSDisk」做爲磁盤名稱。
建立適用於新 VM 的新資源組。
$destinationResourceGroup = 'myDestinationResourceGroup' New-AzureRmResourceGroup -Location $location -Name $destinationResourceGroup
設置 OS 磁盤名稱。
$osDiskName = 'myOsDisk'
建立託管磁盤。
$osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk ` (New-AzureRmDiskConfig -Location $location -CreateOption Copy ` -SourceResourceId $snapshot.Id) ` -ResourceGroupName $destinationResourceGroup
建立新 VM 使用的網絡和其餘 VM 資源。
建立虛擬網絡的 vNet 和子網。
建立子網。 本示例在資源組「myDestinationResourceGroup」中建立名爲「mySubNet」的子網,並將子網地址前綴設置爲 10.0.0.0/24。
$subnetName = 'mySubNet' $singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
建立 vNet。 本示例將虛擬網絡名稱設置爲 myVnetName,將位置設置爲「中國北部」,將虛擬網絡的地址前綴設置爲 10.0.0.0/16。
$vnetName = "myVnetName" $vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $destinationResourceGroup -Location $location ` -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
若要使用 RDP 登陸到 VM,須要建立一個容許在端口 3389 上進行 RDP 訪問的安全規則。 因爲新 VM 的 VHD 是從現有專用 VM 建立的,所以能夠將源虛擬機中的賬戶用於 RDP。
本示例將 NSG 名稱設置爲 myNsg,將 RDP 規則名稱設置爲 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
有關終結點和 NSG 規則的詳細信息,請參閱 Opening ports to a VM in Azure using PowerShell(使用 PowerShell 在 Azure 中打開 VM 端口)。
若要與虛擬網絡中的虛擬機通訊,須要一個 公共 IP 地址 和網絡接口。
建立公共 IP。 在此示例中,公共 IP 地址名稱設置爲 myIP。
$ipName = "myIP" $pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $destinationResourceGroup -Location $location ` -AllocationMethod Dynamic
建立 NIC。 在此示例中,NIC 名稱設置爲 myNicName。
$nicName = "myNicName" $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $destinationResourceGroup ` -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
此示例將 VM 名稱設置爲「myVM」,將 VM 大小設置爲「Standard_A2」。
$vmName = "myVM" $vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize "Standard_A2"
$vm = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id
使用 Set-AzureRmVMOSDisk 將 OS 磁盤添加到配置。 此示例將磁盤大小設置爲 128 GB 並附加託管磁盤做爲 Windows OS 磁盤。
$vm = Set-AzureRmVMOSDisk -VM $vm -ManagedDiskId $osDisk.Id -StorageAccountType StandardLRS ` -DiskSizeInGB 128 -CreateOption Attach -Windows
使用剛剛建立的 New-AzureRMVM 配置建立 VM。
New-AzureRmVM -ResourceGroupName $destinationResourceGroup -Location $location -VM $vm
若是此命令成功,會看到相似於下面的輸出:
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
應會在 Azure 門戶的「瀏覽」 > 「虛擬機」下看到新建的 VM,也可使用如下 PowerShell 命令查看該 VM:
$vmList = Get-AzureRmVM -ResourceGroupName $destinationResourceGroup $vmList.Name
若要登陸到新虛擬機,請在門戶中瀏覽到該 VM,單擊「鏈接」,而後打開遠程桌面 RDP 文件。 使用原始虛擬機的賬戶憑據登陸到新虛擬機。 有關詳細信息,請參閱 How to connect and log on to an Azure virtual machine running Windows(如何鏈接並登陸到運行 Windows 的 Azure 虛擬機)。
當即訪問http://market.azure.cn