1. 定位原有的数据磁盘所对应的VHD文件
进入虚机的“仪表盘”页面,在页面下方显示挂接的数据磁盘所在的位置。可以将该VHD的URL拷贝出来。如下图:
2. 将VHD文件拷贝一份。
用下面的Power Shell命令。(需了解Azure PowerShell, 请访问: http://msdn.microsoft.com/en-us/library/windowsazure/jj554332.aspx )
Start-AzureStorageBlobCopy (命令说明: http://msdn.microsoft.com/en-us/library/dn495267.aspx). 请参考下面的例子:
Start-AzureStorageBlobCopy -AbsoluteUri http://shirleydemo.blob.core.chinacloudapi.cn/vhds/centos65demo-centos65demo-2014-03-06.vhd -DestBlob centos65disk.vhd -DestContainer vhds
注意
a. 执行该命令前,我们需要确认要操作的“存储帐号”已经被定义为当前订阅下的CurrentStorageAccount。可执行下面的命令:
C:\WINDOWS\System32> Set-AzureSubscription -SubscriptionName "Beta Subscription" -CurrentStorageAccountName "shirleydemo"
b. 在执行上面的拷贝操作时,一定要将新的Blob命名为.vhd结尾的文件。例如:centos65disk.vhd。如果后缀名不是vhd, 后面将会出错。
下面是截图:
3. 将新生成的VHD文件制作成磁盘。
点击“虚拟机”,在屏幕正上方点击“磁盘”, 然后点击屏幕下方的创建。
4. 在弹出的对话框中,选择复制出来的VHD文件。
5. 将这块数据磁盘挂接到目标虚机上。
注:在某种情况下,执行PowerShell Start-AzureBlobStorageCopy,会遇到下面的错误信息:
未能加载文件或程序集“Microsoft.WindowsAzure.Storage.DataMovement, Version=2.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
所在位置 行:1 字符: 1
+ Start-AzureStorageBlobCopy -AbsoluteUri http://xxxx.blob.core.chinacloudapi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Start-AzureStorageBlobCopy], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.WindowsAzure.Commands.Storage.Blob.Cmdlet.StartAzureStorageBlobCopy
这时,您需要用下面的方法解决问题:
1.卸载现有Windows Azure PowerShel
2. 清空WebPI临时目录: …\AppData\Local\Microsoft\Web Platform Installer
3. 重新安装Windows Azure PowerShell(WindowsAzurePowerShell.3f.3f.3fnew.exe)