從專用磁盤建立 Windows VM

經過使用 Powershell 將專用託管磁盤附加爲 OS 磁盤來建立新 VM。 專用磁盤是保留原始 VM 中的用戶賬戶、應用程序和其餘狀態數據的現有 VM 中虛擬硬盤 (VHD) 的副本。shell

使用專用 VHD 建立新 VM 時,新 VM 將保留原始 VM 的計算機名。 還會保留其餘計算機特定信息,在某些狀況下,這種重複信息可能會致使問題。 請注意,在複製 VM 時,應用程序依賴哪些類型的計算機特定信息。json

可使用兩個選項:windows

本主題演示如何使用託管磁盤。 若是有須要使用存儲賬戶的舊版部署,請參閱從存儲賬戶中的專用 VHD 建立 VMapi

開始以前

若是使用 PowerShell,請確保使用的是最新版本的 AzureRM.Compute PowerShell 模塊。安全

PowerShell
Install-Module AzureRM.Compute -RequiredVersion 2.6.0 

有關詳細信息,請參閱 Azure PowerShell 版本控制服務器

選項 1:上傳專用 VHD

可從使用本地虛擬化工具(如 Hyper-V)建立的專用 VM 或從另外一個雲導出的 VM 上傳 VHD。網絡

準備 VM

若是想要使用當前 VHD 建立新 VM,請確保完成如下步驟。工具

  • 準備好要上傳到 Azure 的 Windows VHD。 不要使用 Sysprep 通用化 VM。
  • 刪除 VM 上安裝的全部來賓虛擬化工具和代理(例如 VMware 工具)。
  • 確保 VM 配置爲經過 DHCP 來提取其 IP 地址和 DNS 設置。 這確保服務器在啓動時在 VNet 中獲取 IP 地址。

獲取存儲賬戶

須要 Azure 中的存儲賬戶來存儲上傳的 VHD。 可使用現有存儲賬戶,也能夠建立新存儲賬戶。性能

顯示可用的存儲賬戶,請鍵入:ui

PowerShell
Get-AzureRmStorageAccount 

若是要使用現有存儲賬戶,請轉到上傳 VHD 部分。

若要建立存儲賬戶,請執行如下步驟:

  1. 須要應在其中建立存儲賬戶的資源組的名稱。 若要查找訂閱中的全部資源組,請鍵入:

    PowerShell
    Get-AzureRmResourceGroup 

    若要在中國北部區域中建立名爲 myResourceGroup 的資源組,請鍵入:

    PowerShell
    New-AzureRmResourceGroup -Name myResourceGroup -Location "China North" 
  2. 使用 New-AzureRmStorageAccount cmdlet 在此資源組中建立名爲 mystorageaccount 的存儲賬戶:

    PowerShell
    New-AzureRmStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "China North" `  -SkuName "Standard_LRS" -Kind "Storage" 

將 VHD 上傳到存儲賬戶

使用 Add-AzureRmVhd cmdlet 將 VHD 上傳到存儲賬戶中的容器。 本示例將文件 myVHD.vhd 從 "C:\Users\Public\Documents\Virtual hard disks\" 上傳到 myResourceGroup 資源組中名爲 mystorageaccount 的存儲賬戶。 該文件存儲在名爲 mycontainer 的容器中,新文件名爲 myUploadedVHD.vhd

PowerShell
$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" 

若是成功,會顯示相似於下面的響應:

PowerShell
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 文件的大小

從 VHD 建立託管磁盤

使用 New-AzureRMDisk 經過存儲賬戶中的專用 VHD 建立託管磁盤。 此示例使用 myOSDisk1 做爲磁盤名稱,將磁盤置於 StandardLRS 存儲中並使用 https://storageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd 做爲源 VHD 的 URI。

建立適用於新 VM 的新資源組。

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

從上傳的 VHD 建立新 OS 磁盤。

PowerShell
$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 

選項 2:複製現有 Azure VM

經過拍攝 VM 快照來建立使用託管磁盤的 VM 副本,並使用該快照建立一個新的託管磁盤和一個新 VM。

拍攝 OS 磁盤快照

可拍攝整個 VM(包括全部磁盤)快照或僅拍攝單個磁盤快照。 如下步驟展現瞭如何使用 New-AzureRmSnapshot cmdlet 拍攝僅 VM 的 OS 磁盤的快照。

設置一些參數。

PowerShell
$resourceGroupName = 'myResourceGroup' $vmName = 'myVM' $location = 'chinanorth' $snapshotName = 'mySnapshot' 

獲取 VM 對象。

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

獲取 OS 磁盤名稱。

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

建立快照配置。

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

建立快照。

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

若是計劃使用快照建立須要高性能的 VM,請結合使用 -AccountType Premium_LRS 參數和 New-AzureRmSnapshot 命令。 該參數建立快照,使其做爲高級託管磁盤進行存儲。 高級託管磁盤比標準託管磁盤開銷大。 所以使用該參數前,請確保確實須要高級託管磁盤。

從快照建立新磁盤

使用 New-AzureRMDisk 從快照建立託管磁盤。 此示例使用「myOSDisk」做爲磁盤名稱。

建立適用於新 VM 的新資源組。

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

設置 OS 磁盤名稱。

PowerShell
$osDiskName = 'myOsDisk' 

建立託管磁盤。

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

建立新 VM

建立新 VM 使用的網絡和其餘 VM 資源。

建立子網和 vNet

建立虛擬網絡的 vNet 和子網。

建立子網。 本示例在資源組「myDestinationResourceGroup」中建立名爲「mySubNet」的子網,並將子網地址前綴設置爲 10.0.0.0/24。

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

建立 vNet。 本示例將虛擬網絡名稱設置爲 myVnetName,將位置設置爲「中國北部」,將虛擬網絡的地址前綴設置爲 10.0.0.0/16。

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

建立網絡安全組和 RDP 規則

若要使用 RDP 登陸到 VM,須要建立一個容許在端口 3389 上進行 RDP 訪問的安全規則。 因爲新 VM 的 VHD 是從現有專用 VM 建立的,所以能夠將源虛擬機中的賬戶用於 RDP。

本示例將 NSG 名稱設置爲 myNsg,將 RDP 規則名稱設置爲 myRdpRule。

PowerShell
$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 地址和 NIC

若要與虛擬網絡中的虛擬機通訊,須要一個 公共 IP 地址 和網絡接口。

建立公共 IP。 在此示例中,公共 IP 地址名稱設置爲 myIP。

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

建立 NIC。 在此示例中,NIC 名稱設置爲 myNicName。

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

設置 VM 名稱和大小

此示例將 VM 名稱設置爲「myVM」,將 VM 大小設置爲「Standard_A2」。

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

添加 NIC

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

添加 OS 磁盤

使用 Set-AzureRmVMOSDisk 將 OS 磁盤添加到配置。 此示例將磁盤大小設置爲 128 GB 並附加託管磁盤做爲 Windows OS 磁盤。

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

完成該 VM

使用剛剛建立的 New-AzureRMVM 配置建立 VM。

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

若是此命令成功,會看到相似於下面的輸出:

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

驗證是否已建立 VM

應會在 Azure 門戶的「瀏覽」 > 「虛擬機」下看到新建的 VM,也可使用如下 PowerShell 命令查看該 VM:

PowerShell
$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

相關文章
相關標籤/搜索