上传通用化 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容