将Premium存储帐户中的Azure虚拟机数据磁盘迁移到标准版

我有一个Ubuntu的虚拟机与高级存储帐户上的单独安装的数据磁盘。 数据磁盘非常大,因此比我想要的花费更多。 我已经尝试按照这里的说明复制VHD,但是操作立即完成,并且根据Powershell生成的VHD大小为0或-1(然而Azure门户显示正确的大小)。 无论如何,我分离了高级磁盘并将标准磁盘连接到位。 这变得不好,导致一个初始的错误信息,-512字节的磁盘大小是无效的,随后的错误信息

无法将现有磁盘“datadrive”附加/分离到虚拟机“myservername”。 错误:在存储容器上已经有了一个租借URI的blob

“attach / detach”依赖于我正在执行的操作。 我尝试删除新的标准存储帐户,并从头开始过程,但仍然没有运气。 最终,我重新挂接了高级帐户上的现有磁盘,并且我能够再次成功启动计算机,但试图迁移到标准存储帐户是一个可悲的失败。

是否将数据磁盘从高级存储帐户迁移到标准可能? 如果是这样,步骤是什么?

从高级降级到标准不可用。

从P30 / P20减小到更小的值也不可用。

高级磁盘只能连接到支持高级存储的虚拟机。

这里唯一的解决scheme是创build另一个具有标准存储的虚拟机,并通过networking复制文件,如果您拥有数据库或群集等数据,则会非常痛苦。

如果您拥有P30高级存储磁盘的真正原因是因为那些ARM模板喜欢为1 MB数据库这样愚蠢的东西创build1000GB磁盘,则在部署模板之前尝试修改模板。

Noor的答案是不支持从Premium转移到Standard,我不得不采取不同的更高级别的路线。 最后,我必须创build并附加一个新的磁盘,将现有的磁盘文件复制到新的磁盘,并删除+删除原来的磁盘。 这里是步骤:

  1. 在标准存储帐户上创build一个新磁盘,并将其附加到VM。 这是目标磁盘。
  2. 格式化并挂载新的磁盘到虚拟机
  3. 停止所有可能修改源磁盘上的文件的进程(即Premium存储帐户上的原始磁盘)。 在我的情况下,只有Postgres使用这个磁盘,所以sudo pkill -u postgres的伎俩。
  4. 使用cp -a /source/. /destination/将所有文件从源磁盘复制到目标磁盘cp -a /source/. /destination/ cp -a /source/. /destination/
  5. 卸载源驱动器并删除其fstab条目。
  6. 卸载目标驱动器并将其安装点从/目标更改为/ source
  7. 用更新的挂载点重新挂载目标驱动器,启动相应的服务并testing。
  8. 一旦你满意的一切工作,你可以从高级存储帐户删除vhd。

在Azure Linux VM中添加和移除磁盘的其他帮助可以在这里和这里find。 尽pipe一个链接用于资源pipe理器,另一个用于经典资源模型,但您可以通过Azure门户处理创build和删除虚拟硬盘驱动器,而Linux命令仍然适用于任一型号。

有一种方法可以避免xcopy或robocopy路由。 我试图找出一种方法来使用PowerShell跨订阅迁移Azure高级托pipe磁盘。 以下网站进入具体细节https://cloudpuzzles.net/2017/05/moving-azure-managed-disks-around/

基本上另一种方法如下

  1. 在AzureRM中,虚拟机select磁盘并select主操作系统磁盘。
  2. 单击导出,它将提供一个sas URL,从那里按照上面的站点提供的步骤使用PowerShell将受pipe磁盘复制到存储容器blob。
  3. 在Azure存储资源pipe理器中,我能够将磁盘复制粘贴到另一个订阅 – 您可以跳过此步骤
  4. 创build一个新的VM并将复制的VHD附加到VM。 这可以使用powershell完成,也可以在使用Azure存储资源pipe理器创build新虚拟机后重命名新vhd,并重命名目标vhd以匹配新虚拟机vhd名称。