上傳通用化 VHD 并使用它在 Azure 中創建新 VM

本主題逐步講解如何使用 PowerShell 將通用化 VM 的 VHD 上傳到 Azure、從該 VHD 創建映像,然后從該映像創建新 VM。 可以上傳從本地虛擬化工具或其他云導出的 VHD。 對新的 VM 使用托管磁盤可以簡化 VM 管理,在將 VM 置于可用性集中時提供更好的可用性。

若要使用示例腳本,請參閱將 VHD 上傳到 Azure 并創建新的 VM 的示例腳本

開始之前

將任何 VHD 上傳到 Azure 之前,應該遵循準備要上傳到 Azure 的 Windows VHD 或 VHDX

開始遷移到托管磁盤之前,請先查看規劃遷移到托管磁盤

請確保有最新版本的 AzureRM.Compute PowerShell 模塊。 運行以下命令來安裝該模塊。

PowerShell復制

Install-ModuleAzureRM.Compute-RequiredVersion2.6.0

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

使用 Sysprep 通用化 Windows VM

Sysprep 將刪除所有個人帳戶信息及其他某些數據,并準備好要用作映像的計算機。 有關 Sysprep 的詳細信息,請參閱如何使用 Sysprep:簡介

確保 Sysprep 支持計算機上運行的服務器角色。 有關詳細信息,請參閱Sysprep Support for Server Roles

Important

如果在首次將 VHD 上傳到 Azure 之前運行 Sysprep,請確保先準備好 VM,然后再運行 Sysprep。

登錄到 Windows 虛擬機。

以管理員身份打開“命令提示符”窗口。 將目錄切換到%windir%\system32\sysprep,然后運行sysprep.exe。

在“系統準備工具”對話框中,選擇“進入系統全新體驗(OOBE)”,確保已選中“通用化”復選框。

在“關機選項”中選擇“關機”。

單擊“確定”

在 Sysprep 完成時,它會關閉虛擬機。 不要重新啟動 VM。

登錄到 Azure

如果尚未安裝 Azure PowerShell 1.4 版或更高版本,請閱讀如何安裝和配置 Azure PowerShell

打開 Azure PowerShell 并登錄到 Azure 帳戶。 此時會打開一個彈出窗口讓輸入 Azure 帳戶憑據。

PowerShell復制

Login-AzureRmAccount-EnvironmentNameAzureChinaCloud

獲取可用訂閱的訂閱 ID。

PowerShell復制

Get-AzureRmSubscription

使用訂閱 ID 設置正確的訂閱。 將替換為正確訂閱的 ID。

PowerShell復制

Select-AzureRmSubscription-SubscriptionId""

獲取存儲帳戶

需要在 Azure 中創建存儲帳戶來存儲上傳的 VM 映像。 可以使用現有存儲帳戶,也可以創建新存儲帳戶。

如果要使用 VHD 為 VM 創建托管磁盤,存儲帳戶位置必須與要創建 VM 的位置相同。

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

PowerShell復制

Get-AzureRmStorageAccount

如果要使用現有存儲帳戶,請轉到上傳 VM 映像部分。

若要創建存儲帳戶,請執行以下步驟:

需要應在其中創建存儲帳戶的資源組的名稱。 若要查找訂閱中的所有資源組,請鍵入:

PowerShell復制

Get-AzureRmResourceGroup

若要在中國東部區域中創建名為myResourceGroup的資源組,請鍵入:

PowerShell復制

New-AzureRmResourceGroup-NamemyResourceGroup-Location"China East"

使用New-AzureRmStorageAccountcmdlet 在此資源組中創建名為mystorageaccount的存儲帳戶:

PowerShell復制

New-AzureRmStorageAccount-ResourceGroupNamemyResourceGroup-Namemystorageaccount-Location"China East"`-SkuName"Standard_LRS"-Kind"Storage"

-SkuName 的有效值為:

Standard_LRS- 本地冗余存儲。

Standard_ZRS- 區域冗余存儲。

Standard_GRS- 異地冗余存儲。

Standard_RAGRS- 讀取訪問權限異地冗余存儲。

Premium_LRS- 高級本地冗余存儲。

將 VHD 上傳到存儲帳戶

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

PowerShell復制

$rgName="myResourceGroup"$urlOfUploadedImageVhd="https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myUploadedVHD.vhd"Add-AzureRmVhd-ResourceGroupName$rgName-Destination$urlOfUploadedImageVhd`-LocalFilePath"C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"

如果成功,會顯示類似于下面的響應:

PowerShell復制

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

完成執行此命令可能需要一段時間,具體取決于網絡連接速度和 VHD 文件的大小

如果要使用上傳的 VHD 創建托管磁盤或新 VM,請保存目標 URI路徑供稍后使用。

用于上傳 VHD 的其他選項

也可以使用以下方法之一將 VHD 上傳到存儲帳戶:

AzCopy

Azure 存儲復制 Blob API

Azure 存儲資源管理器上傳 Blob

Storage Import/Export Service REST API Reference(存儲導入/導出服務 REST API 參考)

如果預估上傳時間大于 7 天,建議使用導入/導出服務。 可根據數據大小和傳輸單位,利用DataTransferSpeedCalculator預估時間。 導入/導出可用于復制到標準存儲帳戶。 需要使用 AzCopy 等工具從標準存儲復制到高級存儲帳戶。

通過上傳的 VHD 創建托管映像

使用通用 OS VHD 創建托管映像。 將值替換為自己的信息。

首先,設置公共參數:

PowerShell復制

$vmName="myVM"$computerName="myComputer"$vmSize="Standard_DS1_v2"$location="China East"$imageName="yourImageName"

使用通用 OS VHD 創建映像。

PowerShell復制

$imageConfig=New-AzureRmImageConfig-Location$location$imageConfig=Set-AzureRmImageOsDisk-Image$imageConfig-OsTypeWindows-OsStateGeneralized-BlobUri$urlOfUploadedImageVhd$image=New-AzureRmImage-ImageName$imageName-ResourceGroupName$rgName-Image$imageConfig

創建虛擬網絡

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

創建子網。 此示例創建名為mySubnet的子網,其地址前綴為10.0.0.0/24

PowerShell復制

$subnetName="mySubnet"$singleSubnet=New-AzureRmVirtualNetworkSubnetConfig-Name$subnetName-AddressPrefix10.0.0.0/24

創建虛擬網絡。 此示例創建名為myVnet的虛擬網絡,其地址前綴為10.0.0.0/16

PowerShell復制

$vnetName="myVnet"$vnet=New-AzureRmVirtualNetwork-Name$vnetName-ResourceGroupName$rgName-Location$location`-AddressPrefix10.0.0.0/16-Subnet$singleSubnet

創建公共 IP 地址和網絡接口

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

創建公共 IP 地址。 此示例創建名為myPip的公共 IP 地址。

PowerShell復制

$ipName="myPip"$pip=New-AzureRmPublicIpAddress-Name$ipName-ResourceGroupName$rgName-Location$location`-AllocationMethodDynamic

創建 NIC。 此示例創建名為myNic的 NIC。

PowerShell復制

$nicName="myNic"$nic=New-AzureRmNetworkInterface-Name$nicName-ResourceGroupName$rgName-Location$location`-SubnetId$vnet.Subnets[0].Id-PublicIpAddressId$pip.Id

創建網絡安全組和 RDP 規則

若要使用 RDP 登錄到 VM,需要創建一個允許在端口 3389 上進行 RDP 訪問的網絡安全規則 (NSG)。

此示例創建名為myNsg的 NSG,其中包含一個允許通過端口 3389 傳輸 RDP 流量的、名為myRdpRule的規則。 有關 NSG 的詳細信息,請參閱Opening ports to a VM in Azure using PowerShell(使用 PowerShell 在 Azure 中打開 VM 端口)。

PowerShell復制

$nsgName="myNsg"$ruleName="myRdpRule"$rdpRule=New-AzureRmNetworkSecurityRuleConfig-Name$ruleName-Description"Allow RDP"`-AccessAllow-ProtocolTcp-DirectionInbound-Priority110`-SourceAddressPrefixInternet-SourcePortRange* `-DestinationAddressPrefix*-DestinationPortRange3389$nsg=New-AzureRmNetworkSecurityGroup-ResourceGroupName$rgName-Location$location`-Name$nsgName-SecurityRules$rdpRule

為虛擬網絡創建變量

為完成的虛擬網絡創建變量。

PowerShell復制

$vnet=Get-AzureRmVirtualNetwork-ResourceGroupName$rgName-Name$vnetName

獲取 VM 的憑據

以下 cmdlet 將打開一個窗口,需在其中輸入遠程訪問 VM 所用的本地管理員帳戶的新用戶名和密碼。

PowerShell復制

$cred=Get-Credential

將 VM 的名稱和大小添加到 VM 配置。

PowerShell復制

$vm=New-AzureRmVMConfig-VMName$vmName-VMSize$vmSize

將 VM 映像設置為新 VM 的源映像

使用托管 VM 映像的 ID 設置源映像。

PowerShell復制

$vm=Set-AzureRmVMSourceImage-VM$vm-Id$image.Id

設置 OS 配置并添加 NIC。

輸入 OS 磁盤的存儲類型(PremiumLRS 或 StandardLRS)和大小。 此示例將帳戶類型設置為PremiumLRS,將磁盤大小設置為128 GB,將磁盤緩存設置為ReadWrite

PowerShell復制

$vm=Set-AzureRmVMOSDisk-VM$vm-DiskSizeInGB128`-CreateOption FromImage-CachingReadWrite$vm=Set-AzureRmVMOperatingSystem-VM$vm-Windows-ComputerName$computerName`-Credential$cred-ProvisionVMAgent-EnableAutoUpdate$vm=Add-AzureRmVMNetworkInterface-VM$vm-Id$nic.Id

創建 VM

使用存儲在$vm變量中的配置創建新 VM。

PowerShell復制

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

驗證是否已創建 VM

完成后,應會在Azure 門戶的“瀏覽” > “虛擬機”下看到新建的 VM,也可以使用以下 PowerShell 命令查看該 VM:

PowerShell復制

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

后續步驟

若要登錄到新虛擬機,請在門戶中瀏覽到該 VM,單擊“連接”,然后打開遠程桌面 RDP 文件。 使用原始虛擬機的帳戶憑據登錄到新虛擬機。 有關詳細信息,請參閱How to connect and log on to an Azure virtual machine running Windows(如何連接并登錄到運行 Windows 的 Azure 虛擬機)。

立即訪問http://market.azure.cn

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容