在使用Azure的过程中,在大多数情况下我们都会使用到存储服务,对于虚拟机来说就是我们的磁盘存储。Azure对于存储来说是划分的非常全面和细致的。

Azure运维系列11:Azure托管磁盘转非托管磁盘_云服务

   

在我们的磁盘列表中找到需要转换的托管磁盘。

Azure运维系列11:Azure托管磁盘转非托管磁盘_云计算_02

   

单击右侧的导出按钮。

Azure运维系列11:Azure托管磁盘转非托管磁盘_云服务_03

   

在导出磁盘的位置设置URL的过期时间,由于是转换,不需要太长的时间。

Azure运维系列11:Azure托管磁盘转非托管磁盘_云服务_04

   

然后我们复制导出磁盘的URL

Azure运维系列11:Azure托管磁盘转非托管磁盘_云计算_05

   

然后在磁盘的访问密钥位置,获取磁盘的访问密钥,key1和key2都可以,单击右侧的复制按钮复制key。

   

Azure运维系列11:Azure托管磁盘转非托管磁盘_云服务_06

   

然后我们登录到Azure PowerShell。

   

Azure运维系列11:Azure托管磁盘转非托管磁盘_云计算_07

   

然后执行以下的命令,创建一个包含存储帐户密钥的环境变量:(其中1LNE就是我们复制的磁盘访问密钥)

$Context = New-AzureStorageContext -StorageAccountName "STORAGEACCOUNTNAME" -StorageAccountKey "1LNE**************"

   

Azure运维系列11:Azure托管磁盘转非托管磁盘_云服务_08

   

然后我们执行以下命令进行存储块复制:

Start-AzureStorageBlobCopy -AbsoluteUri "<源磁盘Uri>" -DestContainer 'vdisk' -DestBlob "目标磁盘文件" -DestContext $context

   

Azure运维系列11:Azure托管磁盘转非托管磁盘_云计算_09

   

由于转换的过程相当于是新建一个vhd磁盘,然后将现有的托管磁盘灌入,所以需要的时间还是比较长的。我们可以通过以下命令来获取进度:

Get-AzureStorageBlobCopyState -Container vidsk -Blob <目标磁盘文件> -Context $context

   

Azure运维系列11:Azure托管磁盘转非托管磁盘_云计算_10

   

当显示Status为Success的时候,我们就已经完成托管磁盘到非托管磁盘的转换了。

Azure运维系列11:Azure托管磁盘转非托管磁盘_云计算_11

   

   

对于虚拟机而言,转换完成之后,我们还需要按照之前文章所提到的使用现有磁盘来创建虚拟机,完成整个托管磁盘虚拟机到非托管磁盘虚拟机的转换。具体请参考:

   

http://blog.51cto.com/reinember/1977539

   

   

最后说明下,为什么我们要做托管磁盘到非托管磁盘的转换呢?因为托管磁盘和非托管磁盘的计费方式和用途是有所区别的,比如托管磁盘是按照整块磁盘大小进行收费,1TB的托管磁盘,1个月里面无论具体使用了1MB还是900GB,收取的费用都是276.48元;而非托管磁盘则是按照实际使用量进行计费,即便我们创建VHD的时候设置的大小是4TB实际只用1MB,一个月也只给1MB的费用。