《Windows Azure Platform 系列文章目录》
之前的4节内容里,我们已经创建了一个VHD(Virtual Hard Disk),这个VHD包含的内容有
- Windows Server 2008 R2操作系统
- 其他软件(Office、ESRI ArcGIS等)
- IIS
- .NET Framework 3.5
- Windows Azure VM Role Integration Components
- 更新了Windows Update
- 设置了System Preparation Tool
其实我们之前做的就是准备IaaS (Infrastructure as a Service)中的O/S,Middleware和Runtime的过程。如下图:
但是这个VHD仅仅是通过Hyper-V运行在本地的机器上,还没有上传到Windows Azure的数据中心里进行托管和运行。这章我将会介绍如何上传这个VHD。
1.首先我们找一台已经安装好Windows Azure SDK的机器。在开始 -> 所有程序 -> Windows Azure SDK v1.x下找到Windows Azure Command Prompt。然后以管理员方式运行此程序。
2.输入命令
csupload Add-VMImage -Connection "SubscriptionId=<YOUR-SUBSCRIPTION-ID>; CertificateThumbprint=<YOUR-CERTIFICATE-THUMBPRINT>" -Description "Base image Windows Server 2008 R2" -LiteralPath "<PATH-TO-VHD-FILE>" -Name baseimage.vhd -Location <HOSTED-SERVICE-LOCATION>
其中:
<YOUR-SUBSCRIPTION-ID>: 输入您的订阅ID,您可以在Windows Azure管理界面里查看
<YOUR- CERTIFICATE-THUMBPRINT>:输入您的认证指纹,您可以在Windows Azure管理界面里查看
<PATH-TO-VHD-FILE>:VHD在本地的路径。
<HOSTED-SERVICE-LOCATION>:VHD部署在Windows Azure数据中心的地理位置。您可以选择(“East Asia”, “North Central US”, “North Europe”, “South Central US”, “Southeast Asia”, “West Europe”)
注意:
1.如果您使用Windows Azure Command Prompt上传VHD的电脑操作系统是中文版操作系统。请在控制面板->区域和语言->非Unicode程序的语言->更改系统区域设置中,"当前系统区域设置"设置成"英语(美国)",然后重新启动。否则将无法正常上传。
2.VHD的文件名请不要包含空格。
3.因为准备上传的过程默认为90秒,所以在网络条件不佳的情况下非常容易上传超时而导致失败。建议修改"C:\Program Files\Windows Azure SDK\v1.6\bin" 下的csupload.exe.config。
<csupload
uploadBlockSizeInKb="1024" ç Change it to 512KB or 768KB
maxUploadThreads="8" ç change this value to 1 (or try with lower values then 8)
ignoreServerCertificateErrors="false"
maxVHDMountedSizeInMB="66560"
/>
然后重新运行Windows Azure Command Prompt,进行上传。
3.执行csupload Add-VMImage命令
4.在弹出的Windows Azure VHD Verification Tool对话框,选择OK让VHD被mount
在默认情况下,Windows Azure VHD Verification Tool首先会验证需要上传的VHD的有效性,然后会创建一个后缀名为.preped的文件,这个文件是经过压缩的VHD副本,并创建在这个VHD的同一目录下。
下图可以看到在VHD上传之前,Windows Azure VHD Verification Tool首先会准备。
5.当准备工作做完之后,Windows Azure VHD Verification Tool会在Windows Azure创建一个Blob来保存VHD的这个经过压缩后的副本文件(.preped)
注意:上传需要花费的时间与:
- VHD镜像的大小
- 本地网络带宽
都有关系。在某些极端情况下,可能需要花费一整天来上传整个VHD。
幸运的是,VHD是支持断点续传的。如果因为网络故障造成传输失败,只要重新执行csupload命令就可以继续上传VHD。
6.在Azure管理界面,我们选择"托管服务、存储账户和CDN"->"VM映像"。可以看到baseimage.vhd正在被上传,状态显示"挂起"
7.我们等待整个上传过程全部完成,baseimage.vhd的状态会变成Committed