通過使用 Powershell 將專用托管磁盤附加為 OS 磁盤來創(chuàng)建新 VM唆涝。 專用磁盤是保留原始 VM 中的用戶帳戶、應(yīng)用程序和其他狀態(tài)數(shù)據(jù)的現(xiàn)有 VM 中虛擬硬盤 (VHD) 的副本跋炕。
使用專用 VHD 創(chuàng)建新 VM 時,新 VM 將保留原始 VM 的計算機名掏婶。 還會保留其他計算機特定信息恐疲,在某些情況下,這種重復(fù)信息可能會導(dǎo)致問題扯旷。 請注意拯爽,在復(fù)制 VM 時,應(yīng)用程序依賴哪些類型的計算機特定信息钧忽。
可以使用兩個選項:
本主題演示如何使用托管磁盤毯炮。 如果有需要使用存儲帳戶的舊版部署,請參閱從存儲帳戶中的專用 VHD 創(chuàng)建 VM
開始之前
如果使用 PowerShell耸黑,請確保使用的是最新版本的 AzureRM.Compute PowerShell 模塊桃煎。
PowerShell復(fù)制
Install-ModuleAzureRM.Compute-RequiredVersion2.6.0
有關(guān)詳細信息,請參閱Azure PowerShell 版本控制大刊。
選項 1:上傳專用 VHD
可從使用本地虛擬化工具(如 Hyper-V)創(chuàng)建的專用 VM 或從另一個云導(dǎo)出的 VM 上傳 VHD为迈。
準(zhǔn)備 VM
如果想要使用當(dāng)前 VHD 創(chuàng)建新 VM,請確保完成以下步驟。
準(zhǔn)備好要上傳到 Azure 的 Windows VHD葫辐。不要使用 Sysprep 通用化 VM搜锰。
刪除 VM 上安裝的所有來賓虛擬化工具和代理(例如 VMware 工具)。
確保 VM 配置為通過 DHCP 來提取其 IP 地址和 DNS 設(shè)置耿战。 這確保服務(wù)器在啟動時在 VNet 中獲取 IP 地址蛋叼。
獲取存儲帳戶
需要 Azure 中的存儲帳戶來存儲上傳的 VHD。 可以使用現(xiàn)有存儲帳戶剂陡,也可以創(chuàng)建新存儲帳戶鸦列。
顯示可用的存儲帳戶,請鍵入:
PowerShell復(fù)制
Get-AzureRmStorageAccount
如果要使用現(xiàn)有存儲帳戶鹏倘,請轉(zhuǎn)到上傳 VHD部分薯嗤。
若要創(chuàng)建存儲帳戶,請執(zhí)行以下步驟:
需要應(yīng)在其中創(chuàng)建存儲帳戶的資源組的名稱纤泵。 若要查找訂閱中的所有資源組骆姐,請鍵入:
PowerShell復(fù)制
Get-AzureRmResourceGroup
若要在中國北部區(qū)域中創(chuàng)建名為myResourceGroup的資源組,請鍵入:
PowerShell復(fù)制
New-AzureRmResourceGroup-NamemyResourceGroup-Location"China North"
使用New-AzureRmStorageAccountcmdlet 在此資源組中創(chuàng)建名為mystorageaccount的存儲帳戶:
PowerShell復(fù)制
New-AzureRmStorageAccount-ResourceGroupNamemyResourceGroup-Namemystorageaccount-Location"China North"`-SkuName"Standard_LRS"-Kind"Storage"
將 VHD 上傳到存儲帳戶
使用Add-AzureRmVhdcmdlet 將 VHD 上傳到存儲帳戶中的容器捏题。 本示例將文件myVHD.vhd從"C:\Users\Public\Documents\Virtual hard disks\"上傳到myResourceGroup資源組中名為mystorageaccount的存儲帳戶玻褪。 該文件存儲在名為mycontainer的容器中,新文件名為myUploadedVHD.vhd公荧。
PowerShell復(fù)制
$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"
如果成功带射,會顯示類似于下面的響應(yīng):
PowerShell復(fù)制
MD5 hash is being calculatedforthe file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.MD5 hash calculation is completed.Elapsed timeforthe operation:00:03:35Creating new page blob of size53687091712...Elapsed timeforupload:01:12:49LocalFilePath? ? ? ? ? DestinationUri-------------? ? ? ? ? --------------C:\Users\Public\Doc...? https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd
完成執(zhí)行此命令可能需要一段時間,具體取決于網(wǎng)絡(luò)連接速度和 VHD 文件的大小
從 VHD 創(chuàng)建托管磁盤
使用New-AzureRMDisk通過存儲帳戶中的專用 VHD 創(chuàng)建托管磁盤循狰。 此示例使用myOSDisk1作為磁盤名稱窟社,將磁盤置于StandardLRS存儲中并使用https://storageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd作為源 VHD 的 URI。
創(chuàng)建適用于新 VM 的新資源組绪钥。
PowerShell復(fù)制
$destinationResourceGroup='myDestinationResourceGroup'New-AzureRmResourceGroup-Location$location-Name$destinationResourceGroup
從上傳的 VHD 創(chuàng)建新 OS 磁盤灿里。
PowerShell復(fù)制
$sourceUri= (https://storageaccount.blob.core.chinacloudapi.cn/vhdcontainer/osdisk.vhd)$osDiskName='myOsDisk'$osDisk=New-AzureRmDisk-DiskName$osDiskName-Disk`? ? (New-AzureRmDiskConfig-AccountTypeStandardLRS-Location$location-CreateOptionImport `-SourceUri$sourceUri) `-ResourceGroupName$destinationResourceGroup
選項 2:復(fù)制現(xiàn)有 Azure VM
通過拍攝 VM 快照來創(chuàng)建使用托管磁盤的 VM 副本,并使用該快照創(chuàng)建一個新的托管磁盤和一個新 VM程腹。
拍攝 OS 磁盤快照
可拍攝整個 VM(包括所有磁盤)快照或僅拍攝單個磁盤快照匣吊。 以下步驟展示了如何使用New-AzureRmSnapshotcmdlet 拍攝僅 VM 的 OS 磁盤的快照。
設(shè)置一些參數(shù)寸潦。
PowerShell復(fù)制
$resourceGroupName='myResourceGroup'$vmName='myVM'$location='chinanorth'$snapshotName='mySnapshot'
獲取 VM 對象色鸳。
PowerShell復(fù)制
$vm=Get-AzureRmVM-Name$vmName-ResourceGroupName$resourceGroupName
獲取 OS 磁盤名稱。
PowerShell復(fù)制
$disk=Get-AzureRmDisk-ResourceGroupName$resourceGroupName-DiskName$vm.StorageProfile.OsDisk.Name
創(chuàng)建快照配置见转。
PowerShell復(fù)制
$snapshotConfig=New-AzureRmSnapshotConfig-SourceUri$disk.Id-OsTypeWindows-CreateOptionCopy-Location$location
創(chuàng)建快照命雀。
PowerShell復(fù)制
$snapShot=New-AzureRmSnapshot-Snapshot$snapshotConfig-SnapshotName$snapshotName-ResourceGroupName$resourceGroupName
如果計劃使用快照創(chuàng)建需要高性能的 VM,請結(jié)合使用-AccountType Premium_LRS參數(shù)和 New-AzureRmSnapshot 命令池户。 該參數(shù)創(chuàng)建快照咏雌,使其作為高級托管磁盤進行存儲凡怎。 高級托管磁盤比標(biāo)準(zhǔn)托管磁盤開銷大。 因此使用該參數(shù)前赊抖,請確保確實需要高級托管磁盤统倒。
從快照創(chuàng)建新磁盤
使用New-AzureRMDisk從快照創(chuàng)建托管磁盤。 此示例使用“myOSDisk”作為磁盤名稱氛雪。
創(chuàng)建適用于新 VM 的新資源組房匆。
PowerShell復(fù)制
$destinationResourceGroup='myDestinationResourceGroup'New-AzureRmResourceGroup-Location$location-Name$destinationResourceGroup
設(shè)置 OS 磁盤名稱。
PowerShell復(fù)制
$osDiskName='myOsDisk'
創(chuàng)建托管磁盤报亩。
PowerShell復(fù)制
$osDisk=New-AzureRmDisk-DiskName$osDiskName-Disk`? ? (New-AzureRmDiskConfig-Location$location-CreateOptionCopy `-SourceResourceId$snapshot.Id) `-ResourceGroupName$destinationResourceGroup
創(chuàng)建新 VM
創(chuàng)建新 VM 使用的網(wǎng)絡(luò)和其他 VM 資源浴鸿。
創(chuàng)建子網(wǎng)和 vNet
創(chuàng)建虛擬網(wǎng)絡(luò)的 vNet 和子網(wǎng)。
創(chuàng)建子網(wǎng)弦追。 本示例在資源組“myDestinationResourceGroup”中創(chuàng)建名為“mySubNet”的子網(wǎng)岳链,并將子網(wǎng)地址前綴設(shè)置為 10.0.0.0/24。
PowerShell復(fù)制
$subnetName='mySubNet'$singleSubnet=New-AzureRmVirtualNetworkSubnetConfig-Name$subnetName-AddressPrefix10.0.0.0/24
創(chuàng)建 vNet劲件。 本示例將虛擬網(wǎng)絡(luò)名稱設(shè)置為myVnetName掸哑,將位置設(shè)置為“中國北部”,將虛擬網(wǎng)絡(luò)的地址前綴設(shè)置為10.0.0.0/16零远。
PowerShell復(fù)制
$vnetName="myVnetName"$vnet=New-AzureRmVirtualNetwork-Name$vnetName-ResourceGroupName$destinationResourceGroup-Location$location`-AddressPrefix10.0.0.0/16-Subnet$singleSubnet
創(chuàng)建網(wǎng)絡(luò)安全組和 RDP 規(guī)則
若要使用 RDP 登錄到 VM苗分,需要創(chuàng)建一個允許在端口 3389 上進行 RDP 訪問的安全規(guī)則。 由于新 VM 的 VHD 是從現(xiàn)有專用 VM 創(chuàng)建的牵辣,因此可以將源虛擬機中的帳戶用于 RDP摔癣。
本示例將 NSG 名稱設(shè)置為myNsg,將 RDP 規(guī)則名稱設(shè)置為myRdpRule纬向。
PowerShell復(fù)制
$nsgName="myNsg"$rdpRule=New-AzureRmNetworkSecurityRuleConfig-NamemyRdpRule-Description"Allow RDP"`-AccessAllow-ProtocolTcp-DirectionInbound-Priority110`-SourceAddressPrefixInternet-SourcePortRange* `-DestinationAddressPrefix*-DestinationPortRange3389$nsg=New-AzureRmNetworkSecurityGroup-ResourceGroupName$destinationResourceGroup-Location$location`-Name$nsgName-SecurityRules$rdpRule
有關(guān)終結(jié)點和 NSG 規(guī)則的詳細信息择浊,請參閱Opening ports to a VM in Azure using PowerShell(使用 PowerShell 在 Azure 中打開 VM 端口)。
創(chuàng)建公共 IP 地址和 NIC
若要與虛擬網(wǎng)絡(luò)中的虛擬機通信罢猪,需要一個公共 IP 地址和網(wǎng)絡(luò)接口近她。
創(chuàng)建公共 IP。 在此示例中膳帕,公共 IP 地址名稱設(shè)置為myIP。
PowerShell復(fù)制
$ipName="myIP"$pip=New-AzureRmPublicIpAddress-Name$ipName-ResourceGroupName$destinationResourceGroup-Location$location`-AllocationMethodDynamic
創(chuàng)建 NIC薇缅。 在此示例中危彩,NIC 名稱設(shè)置為myNicName。
PowerShell復(fù)制
$nicName="myNicName"$nic=New-AzureRmNetworkInterface-Name$nicName-ResourceGroupName$destinationResourceGroup`-Location$location-SubnetId$vnet.Subnets[0].Id-PublicIpAddressId$pip.Id-NetworkSecurityGroupId$nsg.Id
設(shè)置 VM 名稱和大小
此示例將 VM 名稱設(shè)置為“myVM”泳桦,將 VM 大小設(shè)置為“Standard_A2”汤徽。
PowerShell復(fù)制
$vmName="myVM"$vmConfig=New-AzureRmVMConfig-VMName$vmName-VMSize"Standard_A2"
添加 NIC
PowerShell復(fù)制
$vm=Add-AzureRmVMNetworkInterface-VM$vmConfig-Id$nic.Id
添加 OS 磁盤
使用Set-AzureRmVMOSDisk將 OS 磁盤添加到配置。 此示例將磁盤大小設(shè)置為128 GB并附加托管磁盤作為WindowsOS 磁盤灸撰。
PowerShell復(fù)制
$vm=Set-AzureRmVMOSDisk-VM$vm-ManagedDiskId$osDisk.Id-StorageAccountTypeStandardLRS `-DiskSizeInGB128-CreateOptionAttach-Windows
完成該 VM
使用剛剛創(chuàng)建的New-AzureRMVM配置創(chuàng)建 VM谒府。
PowerShell復(fù)制
New-AzureRmVM-ResourceGroupName$destinationResourceGroup-Location$location-VM$vm
如果此命令成功拼坎,會看到類似于下面的輸出:
PowerShell復(fù)制
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
True? ? ? ? OK OK
驗證是否已創(chuàng)建 VM
應(yīng)會在Azure 門戶的“瀏覽” > “虛擬機”下看到新建的 VM,也可以使用以下 PowerShell 命令查看該 VM:
PowerShell復(fù)制
$vmList=Get-AzureRmVM-ResourceGroupName$destinationResourceGroup$vmList.Name
后續(xù)步驟
若要登錄到新虛擬機完疫,請在門戶中瀏覽到該 VM泰鸡,單擊“連接”,然后打開遠程桌面 RDP 文件壳鹤。 使用原始虛擬機的帳戶憑據(jù)登錄到新虛擬機盛龄。 有關(guān)詳細信息,請參閱How to connect and log on to an Azure virtual machine running Windows(如何連接并登錄到運行 Windows 的 Azure 虛擬機)芳誓。立即訪問http://market.azure.cn