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

发布者:SereneWanderer最新更新时间:2019-12-14 来源: eefocus关键字:ARM  非托管磁盘虚拟机  磁盘虚拟机 手机看文章 扫描二维码
随时随地手机看文章

  在笔者之前的文章中,我们如果需要使用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

}

 

  执行结果如下图:

关键字:ARM  非托管磁盘虚拟机  磁盘虚拟机 引用地址:Azure ARM (20) 将非托管磁盘虚拟机,迁移成托管磁盘虚拟机

上一篇:Azure ARM (19) 将传统的ASM VM迁移到ARM VM (2)
下一篇:Azure ARM (21) Azure订阅的两种管理模式

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved