《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 ARM (20) 将非托管磁盘虚拟机(Unmanage Disk),迁移成托管磁盘虚拟机(Manage Disk)的更多相关文章

  1. Windows Azure Virtual Machine (38) 跨租户迁移使用托管磁盘的Azure虚拟机

    <Windows Azure Platform 系列文章目录> 背景介绍: (1)我们建议使用Azure Manage Disk托管磁盘来创建Azure虚拟机 (2)使用托管磁盘的好处是, ...

  2. Azure ARM (18) 将Azure RM Manage Disk托管磁盘的Image,跨订阅迁移

    <Windows Azure Platform 系列文章目录> 先挖一个坑,以后再埋. 最近遇到一个客户需求,客户使用了Azure RM Manage Disk托管磁盘,然后捕获镜像做成了 ...

  3. Windows Azure Virtual Machine (36) 扩展Azure ARM VM的磁盘大小

    <Windows Azure Platform 系列文章目录> 在默认情况下,Azure ARM VM的操作系统磁盘(OS Disk),容量为: (1)Windows VM OS Disk ...

  4. Azure ARM (11) ARM模式下,创建虚拟机并配置负载均衡器

    <Windows Azure Platform 系列文章目录> 本文内容比较多,请大家仔细阅读,谢谢! 在前几章中,我们做了准备工作: 1.创建ARM Resouce Group,叫Lei ...

  5. Azure ARM (10) ARM模式下的虚拟机和Classic Model虚拟机的区别

    <Windows Azure Platform 系列文章目录> 本文内容比较多,请大家仔细阅读,谢谢! 请读者注意,在Azure ARM平台,有两种虚拟机模式:经典虚拟机和ARM虚拟机 A ...

  6. Azure ARM (9) 创建ARM模式下的虚拟机网络

    <Windows Azure Platform 系列文章目录> 笔者在之前几章内容中,创建了ARM Resource Group,然后在这个ARM Resource Group下创建Azu ...

  7. Azure ARM虚拟机部署反恶意软件-安全扩展

    Azure虚拟机,默认情况下没有安装杀毒软件.如果您有此需求可以通过Azure 扩展进行安装,有关Azure反恶意软件的官方说明请参考:https://docs.azure.cn/zh-cn/secu ...

  8. 使用版本 1.0.0 的 Azure ARM SDK for Java 创建虚拟机时报错

    问题描述 我们可以通过使用 Azure ARM SDK 来管理 Azure 上的资源,因此我们也可以通过 SDK 来创建 ARM 类型的虚拟机,当我们使用 1.0.0 版本的 Azure SDK fo ...

  9. Azure ARM (13) 从现有VHD文件,创建新的ARM VM

    <Windows Azure Platform 系列文章目录> 本文参考了Git Hub的ARM Template: https://github.com/Azure/azure-quic ...

随机推荐

  1. Sublime Text 3.0版本的傻瓜式汉化步骤

    Sublime text 3是非常好的文本编辑器,在试用过N款文本编辑器(Notepad.Notepad++.Notepad2.Programmer's notepad.EditPlus,Vim, T ...

  2. [国嵌攻略][171][V4L2图像编程接口深度学习]

    V4L2摄像编程模型 1.打开摄像头设备文件 2.获取驱动信息-VIDIOC_QUERYCAP 3.设置图像格式-VIDIOC_S_FMT 4.申请帧缓冲-VIDIOC_REQBUFS 5.获取帧缓冲 ...

  3. java使用Websocket获取HttpSession出现的问题与解决

    websocket的写法就不多说了,主要记一记其中出现的问题 1.获取不到httpSession 解决办法:先重写握手方法,将httpsession放入ServerEndpointConfig.get ...

  4. 织梦在服务器上面安装的时候一直提示data文件没有权限,可我已经写了权限,还是提示

    1.进入服务器,打开IIS,点击相应无权限的文件夹data,然后点击右上角的编辑权限. 2.勾选写入,然后确定即可. 3.织梦一直收到黑客的攻击,这里建议站长朋友设置下权限,来降低织梦系统的危险系数. ...

  5. .netCore数据库迁移

    程序包管理器控制台下Nuget 命令: 初始迁移命令: add-migration init -Context DAL.ProductContext 全称:migrations add Initial ...

  6. apktool给软件加注册机修改图标和文件名

    功能实现,即让你的软件具有注册机功能,或者破解别人的软件,据为己有! 先反编译文件包 然后全局工具,修改图标和名称 加注册机,输入key,下载计算器,即可.给某个用户设置自定义的使用时间!

  7. CSS样式中常用的字体名称

    css中引入字体: @font-face { font-family: "AncientWar"; src: url('style/css/fonts/AncientWar.ttf ...

  8. 端口扫描命令nmap

    转:http://www.osyunwei.com/archives/2004.html 下面教大家在CentOS中用nmap查看主机端口: 一.安装nmap yum install nmap -y ...

  9. 2017-12-30-如何彻底清除现存GIT仓库的大量提交历史

    layout: post title: 2017-12-30-如何彻底清除现存GIT仓库的大量提交历史 key: 20171230 tags: GIT 版本管理 问答 modify_date: 201 ...

  10. NetCloud——一个网易云音乐评论抓取和分析的Python库

    在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...