您的位置:首页 > 其它

上传通用化 VHD 并使用它在 Azure 中创建新 VM

2017-10-17 10:21 886 查看
本主题逐步讲解如何使用 PowerShell 将通用化 VM 的 VHD 上传到 Azure、从该 VHD 创建映像,然后从该映像创建新 VM。 可以上传从本地虚拟化工具或其他云导出的 VHD。 对新的 VM 使用托管磁盘可以简化
VM 管理,在将 VM 置于可用性集中时提供更好的可用性。

若要使用示例脚本,请参阅将
VHD 上传到 Azure 并创建新的 VM 的示例脚本


开始之前

将任何 VHD 上传到 Azure 之前,应该遵循准备要上传到
Azure 的 Windows VHD 或 VHDX
开始迁移到托管磁盘之前,请先查看规划迁移到托管磁盘

请确保有最新版本的 AzureRM.Compute PowerShell 模块。 运行以下命令来安装该模块。
PowerShell
复制
Install-Module AzureRM.Compute -RequiredVersion 2.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 -EnvironmentName AzureChinaCloud


获取可用订阅的订阅 ID。
PowerShell
复制
Get-AzureRmSubscription


使用订阅 ID 设置正确的订阅。 将 替换为正确订阅的 ID。
PowerShell
复制
Select-AzureRmSubscription -SubscriptionId "<subscriptionID>"



获取存储帐户

需要在 Azure 中创建存储帐户来存储上传的 VM 映像。 可以使用现有存储帐户,也可以创建新存储帐户。

如果要使用 VHD 为 VM 创建托管磁盘,存储帐户位置必须与要创建 VM 的位置相同。

显示可用的存储帐户,请键入:
PowerShell
复制
Get-AzureRmStorageAccount


如果要使用现有存储帐户,请转到 上传
VM 映像 部分。

若要创建存储帐户,请执行以下步骤:

需要应在其中创建存储帐户的资源组的名称。 若要查找订阅中的所有资源组,请键入:
PowerShell
复制
Get-AzureRmResourceGroup


若要在中国东部区域中创建名为 myResourceGroup 的资源组,请键入:
PowerShell
复制
New-AzureRmResourceGroup -Name myResourceGroup -Location "China East"


使用 New-AzureRmStorageAccount cmdlet 在此资源组中创建名为 mystorageaccount 的存储帐户:
PowerShell
复制
New-AzureRmStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "China East"`
-SkuName "Standard_LRS" -Kind "Storage"


-SkuName 的有效值为:
Standard_LRS - 本地冗余存储。
Standard_ZRS - 区域冗余存储。
Standard_GRS - 异地冗余存储。
Standard_RAGRS - 读取访问权限异地冗余存储。
Premium_LRS - 高级本地冗余存储。


将 VHD 上传到存储帐户

使用 Add-AzureRmVhd cmdlet 将 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 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 创建托管磁盘或新 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 -OsType Windows -OsState Generalized -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 -AddressPrefix 10.0.0.0/24


创建虚拟网络。 此示例创建名为 myVnet 的虚拟网络,其地址前缀为 10.0.0.0/16。
PowerShell
复制
$vnetName = "myVnet"
$vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
-AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet



创建公共 IP 地址和网络接口

若要与虚拟网络中的虚拟机通信,需要一个 公共 IP 地址 和网络接口。

创建公共 IP 地址。 此示例创建名为 myPip的公共 IP 地址。
PowerShell
复制
$ipName = "myPip"
$pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
-AllocationMethod Dynamic


创建 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" `
-Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
-SourceAddressPrefix Internet -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange 3389

$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 -DiskSizeInGB 128 `
-CreateOption FromImage -Caching ReadWrite

$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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: