今天给大家带来的是如何移动带有租约的VHD文件。首先我们需要知道,为什么VHD会有租约。带有租约的VHD一般是指已经在使用的VHD,比如作为虚拟机的OS磁盘,或是数据磁盘,即便是这个虚拟机已经处于关闭状态。

那么这样的磁盘,无论我们通过复制还是移动都是不能操作的。我们来看看如何通过PowerShell的Start-AzureStorageBlobCopy命令进行复制会发生什么:

Azure运维系列 9:移动带有租约的VHD

可以看到我们通过这个命令的执行结果是403已禁止。然后我们转到Azure管理门户,找到这块VHD的属性,可以看到此blob具有活动租约,是没有办法进行删除、移动以及复制的。

Azure运维系列 9:移动带有租约的VHD

这时候就需要我们的神器登场,Azure Storage Explorer,可以通过以下网站来下载这个神器:
https://azure.microsoft.com/en-us/features/storage-explorer/

Azure运维系列 9:移动带有租约的VHD

然后我们打开Storage Explorer,在左侧添加新的Azure帐户。

Azure运维系列 9:移动带有租约的VHD

然后我们在选择添加Azure Account的时候一定要有针对性的选择Azure或Azure China,对应的就是国际版以及中国版。选择Azure是没有办法连接到世纪互联Azure帐户的。

Azure运维系列 9:移动带有租约的VHD

单击下一步后就会弹出登录帐户的窗口,在这里我们填入Azure帐号及密码。

Azure运维系列 9:移动带有租约的VHD

完成后就会检索到当前帐户的订阅,以及订阅里面的存储帐户信息。我们定位到需要移动或复制的VHD文件,右键选择Break Lease。无论我们是进行复制、还是移动,都需要执行这个操作。

Azure运维系列 9:移动带有租约的VHD

完成之后,我们就可以对其进行复制操作,右键选择复制即可。

Azure运维系列 9:移动带有租约的VHD

然后我们就可以将它粘贴到任何其他的存储帐户里了。

Azure运维系列 9:移动带有租约的VHD

通过Azure Storage Explorer来复制、移动blob是非常方便的,我们粘贴之后可以在下方看到文件的状态,比如正在复制,还可以执行取消操作。

Azure运维系列 9:移动带有租约的VHD

要想看到进一步,更详细的复制进度信息,可以通过PowerShell查询复制进度:
while($true){Get-AzureStorageBlobCopyState -Container xxxxxxx -Blob xxxxxxxx.vhd -
Context $context| fl status,bytescopied,totalbytes ; start-sleep -s 1}
显示的效果就是下面这样,可以看到总的VHD的大小,以及当前已经复制的大小。

Azure运维系列 9:移动带有租约的VHD

需要注意的是,对于复制VHD来讲,会对其实际所占用的体积进行复制,而不会按VHD磁盘大小进行操作,比如OS磁盘是127GB,但新系统装好也就是10多GB,所以实际复制或移动的数据也就是10多GB,而不会是127GB。这样来说,还是非常快的。