Azure ARM (20) 将非托管磁盘虚拟机(Unmanage Disk),迁移成托管磁盘虚拟机(Manage Disk)

简介:

 《Windows Azure Platform 系列文章目录

 

  PowerShell我已经提交到GitHub:

  https://github.com/leizhang1984/AzureChinaPowerShell/blob/master/ARM/ConvertManagedDisk/ConvertManagedDisk.ps1

 

 

  在笔者之前的文章中,我们如果需要使用Azure虚拟机,必须预先创建一个Azure存储账户(Storage Account),用来保存虚拟机的VHD文件。

  这会有几个问题:

  1.一个Azure Storage Account存储账户,会有20000个IOPS的性能瓶颈。

  如果我们把过多的Azure VHD文件保存在同一个Storage Account,会由于IOPS性能瓶颈造成VM 磁盘吞吐量限制。

  我们建议一般40个普通VHD放在同一个存储账户里,每个一个VHD的IOPS为500, 总共的IOPS = 40 X 500 = 20000 IOPS,刚好等于一个存储账户的最大IOPS

 

  2.存储账户的高可用

  当我们在设计虚拟机的存储账户,更好的设计方式是:同一个高可用集的多台VM的VHD文件,都是在不同的Azure Storage Node里面的。

  比如在同一个高可用集Web-AvbSet里面的两台VM: Web01和Web02,所在的VHD文件,应该在不同的Azure Storage Node里面。

  这里如何查看Azure Storage Node呢,我们可以使用ping Storage Account Endpoint的方式来进行查看:

  

  如上图:

  (1)第一个存储账户niexxxx,所在的存储Node是sh2prdstr02a

  (2)第二个存储账户leixxxx,所在的存储Node是sha2prdstr02a。与第一个存储账户的Node是一样的。

  (3)第三个存储账户ocmxxxx,所在的存储账户Node是sha3prdstr01a。和上面2个存储账户的Node都不同。

 

  所以最佳实践是:Web01所在的VHD文件,保存在sh2prdstr02a。Web02所在的VHD文件,保存在sha3prdstr01a。

  这样才能保存存储的高可用设计,但是这样管理起来太麻烦了。

  我们需要Azure平台来自动帮助我管理虚拟机所在的VHD文件,及相应的Storage Node的高可用设计。

 

  这时候就可以利用Azure Manage Disk,让微软云平台给我管理虚拟机的磁盘,我们不需要手动管理存储账户。

 

  请注意,如果使用Unmanag Disk的虚拟机磁盘费用,对于普通存储来说,是用多少GB,算多少费用

  但是一旦转换了Manage Disk以后,存储费用是按照阶梯价格收费的。

 

  这里,笔者简单介绍一下。

  特别注意:截止2017年12月26日,使用Azure China Manage Disk,需要把高可用性集设置的故障域Fault Domain设置为2。

  暂时不支持Fault Domain为3。如下图:

  

 

 

 

  准备工作:

  1.我们已经创建了1个存储账户,命名为:leiasmstorage

  2.我们创建了一个高可用集Availability Set,Fault Domain故障域为2。如上图

  3.两台VM:LeiWeb01和LeiWeb02,都加入该高可用集。且这2台VM的VHD文件,都保存在同一个存储账户:leiasmstorage

  4.可以发现这样的设计是有问题的:因为这个存储账户发生宕机,则这2台VM也宕机

 

  1.首先我们把需要修改的VM关机,考虑到业务连续性,我们首先把LeiWeb01这台VM关机。图略

  2.打开Azure PowerShell,运行以下脚本:

复制代码
#登录并验证
Add-AzureRmAccount -EnvironmentName AzureChinaCloud

#选择当前订阅
$subscriptionName = 'SubscriptionName'
Select-AzureRmSubscription -SubscriptionName $subscriptionName

#设置资源组
$rgName = "ResourceGroupName"

#设置虚拟机名称
$vmName = "LeiVM01"

#设置虚拟机的高可用性集
$avSetName = 'LEI-AVBSET'

#获得高可用性集
$avSet = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avSetName

#设置高可用性集的故障域为2,
$avSet.PlatformFaultDomainCount = 2

#更新
Update-AzureRmAvailabilitySet -AvailabilitySet $avSet -Sku Aligned


$avSet = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avSetName

foreach($vmInfo in $avSet.VirtualMachinesReferences)
{
  $vm = Get-AzureRmVM -ResourceGroupName $rgName | Where-Object {$_.Id -eq $vmInfo.id}
  Stop-AzureRmVM -ResourceGroupName $rgName -Name $vm.Name -Force
  ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $rgName -VMName $vm.Name
  Start-AzureRmVM -ResourceGroupName $rgName -Name $vm.Name
复制代码

  3.执行成功后,LeiWeb01和LeiWeb01的磁盘都变成了Managed Disk。如下图:

 

  4.如果我们想查看LeiVM01和LeiVM02的Managed Disk的URL地址,可以执行下面的PowerShell脚本:

复制代码
#如果我们想查看Managed Disk的URL,可以执行下面的命令
foreach($vmInfo in $avSet.VirtualMachinesReferences)
{
  $vm = Get-AzureRmVM -ResourceGroupName $rgName | Where-Object {$_.Id -eq $vmInfo.id}
  #需要在关机下执行
  Stop-AzureRmVM -ResourceGroupName $rgName -Name $vm.Name -Force
  
  $mdiskURL = Grant-AzureRmDiskAccess -ResourceGroupName $rgName -DiskName $vm.StorageProfile.OsDisk.Name -Access Read -DurationInSecond 3600
  Write-Output($mdiskURL)
  
   #然后开机
  #Start-AzureRmVM -ResourceGroupName $rgName -Name $vm.Name
}
复制代码

 

 

  执行结果如下图:

 


本文转自Azure Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/8116461.html,如需转载请自行联系原作者


目录
相关文章
|
数据库 虚拟化 Windows
虚拟机数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例
虚拟机数据恢复环境: 某品牌服务器通过同品牌某型号的RAID卡,将4块STAT硬盘为一组RAID10阵列。上层部署XenServer虚拟化平台,虚拟机安装Windows Server系统,每台虚拟机有两个虚拟机磁盘(系统盘 + 数据盘),虚拟机作为Web服务器使用。 虚拟机故障&分析: 机房异常断电导致服务器中一台VPS(XenServer虚拟机)不可用,虚拟磁盘文件丢失。
|
存储 Linux 虚拟化
超详细!VMware虚拟机迁移操作教程
为VMware虚拟机迁移提供从0到1的详尽操作指导
2001 0
超详细!VMware虚拟机迁移操作教程
|
安全 Linux 开发工具
【Azure 环境】Azure 虚拟机上部署 DeepSeek R1 模型教程(1.5B参数)【失败】
遇见错误一:operator torchvision::nms does not exist 遇见错误二:RuntimeError: Failed to infer device type
1163 22
|
存储 数据挖掘 虚拟化
vsan数据恢复—vsan缓存盘故障导致虚拟机磁盘文件丢失的数据恢复案例
VMware vsan架构采用2+1模式。每台设备只有一个磁盘组(7+1),缓存盘的大小为240GB,容量盘的大小为1.2TB。 由于其中一台主机(0号组设备)的缓存盘出现故障,导致VMware虚拟化环境中搭建的2台虚拟机的磁盘文件(vmdk)丢失。
|
存储 网络协议 网络安全
【Azure 环境】部署ARM Linked Template时候 Blob SAS Token不能正常工作
Unable to retrieve url https://<stroage account name>.blob.core.chinacloudapi.cn/arm/azuredeploy.json?sp=r 'st' is not recognized as an internal or external command, operable program or batch file. 'se' is not recognized as an internal or external command, operable program or batch file. 'spr' is no
232 1
|
KVM 虚拟化
KVM虚拟机的热迁移
这篇文章详细介绍了KVM虚拟机的热迁移过程,包括临时迁移和永久迁移的步骤,以及可能遇到的故障和解决方案。
763 1
KVM虚拟机的热迁移
|
KVM 虚拟化
kvm虚拟机磁盘管理
文章详细介绍了KVM虚拟机磁盘管理,包括磁盘格式概述、创建虚拟机时如何指定磁盘格式、以及磁盘工具的常用命令,旨在帮助用户更好地理解和操作KVM虚拟机的磁盘管理。
559 1
kvm虚拟机磁盘管理
|
Kubernetes Linux 容器
解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
2040 2
|
存储 虚拟化
使用DiskGenius工具来实现物理机迁移虚拟机,实现虚拟化
【9月更文挑战第1天】使用 DiskGenius 工具可将物理机迁移到虚拟机,实现系统与数据的虚拟化。此过程包括:安装 DiskGenius 和准备虚拟化平台;备份物理机数据;使用 DiskGenius 备份磁盘;在虚拟化软件中创建新虚拟机并导入磁盘备份;配置及调整虚拟机设置;测试性能并优化资源分配。这有助于测试、开发及系统管理。
2118 6