《Windows Azure Platform 系列文章目录》
本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板。
注意:因为在制作VHD的最后执行了Sysprep命令,所以该VHD中的OS会重新部署。
如果您想迁移本地的Hyper-V虚拟机,还需要保留该虚拟机中安装的软件配置。
请参考: [New Portal]Windows Azure Virtual Machine (21) 将本地Hyper-V的VM上传至Windows Azure Virtual Machine
上一章内容中,笔者介绍了如何在本地通过Hyper-V制作Windows Server 2012中文版的虚拟机。
本章我将首先介绍如何在Azure Storage中创建Container,然后介绍如何使用Azure PowerShell将本地的Server 2012 VHD上传至Azure数据中心。
1.首先我们登陆Azure Management Portal。我已经创建了叫leivms的Storage Account,然后我们点击Add Container。如下图:
2.然后在弹出的New Container窗口中,我们设置NAME为uploadvm,访问方式设置为Private(也可以设置为Public Container)。如下图:
3.创建成功后,我们将来会通过访问http://leivms.blob.core.windows.net/uploadvm 这个URL,将本地的Server 2012 VHD上传至这个Blob Container。如下图:
4.之前做的工作都是在Azure Portal进行准备工作,接下来就正式进入上传VHD的过程了。
5.请先确认已经安装最新的Azure SDK,目前最新的SDK版本是2.0,请在http://www.windowsazure.com/en-us/downloads/进行下载,笔者下载的是.NET SDK VS2012。下载完成后,会通过Web Installer进行安装。如下图:
6.安装完成,以管理员身份运行CMD命令提示符,进入C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.0\bin目录,执行csupload.exe命令,如下图:
会发现黄色提示部分,微软建议下载Azure PowerShell工具......e........(折腾啊)..........
建议读者以后使用Azure PowerShell,不要用CSUpload
那我们通过http://go.microsoft.com/?linkid=9811175&clcid=0x409,继续下载PowerShell。随后通过Web Installer安装。
7.安装完Azure PowerShell,以管理员身份运行Azure PowerShell。
Update 2015-09-01
发现一个新的命令。可以不需要导入PublishSetting文件。
如果你使用的是国内由世纪互联运维的Azure China,请在PowerShell输入命令:
Add-AzureAccount -Environment AzureChinaCloud
如果你使用的是国外的Azure Global,请在PowerShell输入命令:
Add-AzureAccount
注意:我们在下面的步骤中下载的publishsettings这个文件,需要非常小心的保存。
笔者建议在导入完毕后,直接删除这个publishsettings文件,防止被不坏好意的人重复利用。
=====================================这里是分隔符============================================
8.首先我们要在本地创建证书文件。以便本地计算机和Azure建立可靠的安全连接。请在Azure PowerShell输入以下命令:
Get-AzurePublishSettingsFile
9.这时候计算机会弹出新的IE窗口,导航至Windows Azure。并要求我们输入登陆Azure的用户名和密码并登陆。
10.登陆完毕后,系统会要求我们保存扩展名为publishsettings的文件,我们保存至本地计算机的磁盘上。如下图:
11.然后我们回到Azure PowerShell窗口,继续输入以下命令:
Import-AzurePublishSettingsFile <PathToFile>
PathToFile就是我们保存步骤11中扩展名为publishsettings的文件位置(文件路径+文件名),比如我将该文件保存至D盘根目录,我们就输入以下命令:
Import-AzurePublishSettingsFile 'D:\Windows Azure MSDN - Visual Studio Ultimate-7-2-2013-credentials.publishsettings'
上面的命令实际上是将本地的publishsettings文件上传至Azure的Management Certificates。我们可以打开Azure Management Portal。点击Settings,并选择Management Certificates,查看上传的publishsettings文件。如下图:
这样,本地计算机就和Azure建立了可靠安全的链接了。接下来就可以上传我们的VHD文件了。
12.请在本地Azure PowerShell继续输入以下命令。
Add-AzureVhd -Destination <BlobStorageURL>/<YourImagesFolder>/<VHDName> -LocalFilePath <PathToVHDFile>
上面的参数说明是这样的:
之前我们创建的BlobStorageUrl为http://leivms.blob.core.windows.net
YourImagesFolder为ContainerName,我们在本章步骤2例设置为uploadvm
VHDName,我们可以设置上传的VHD名称,这个可以按照用户需要设置
PathToVHDFile,需要制定我们上传的VHD的路径(文件夹+文件名)
根据笔者的本地环境,我们可以在PowerShell输入以下命令:
Add-AzureVhd -Destination 'http://leivms.blob.core.windows.net/uploadvm/Server2012_CHN_64bit.vhd' -LocalFilePath 'D:\VHD\Server2012_CHN_64bit\Server2012_CHN_64bit.vhd'
接下来的Azure PowerShell会做如下操作:
a)将本地的VHD做MD5加密
b)在Azure Storage创建Page Blob。
c)将VHD上传至Azure Storage Page Blob
注意:上传VHD的速度与你本地网络有关。
所有的步骤完毕后,如下图:
13.最后,我们可以通过Azure Management Portal查看到上传成功的40G的VHD