利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

很多时候我们都会碰到因为意外重启,机器硬盘被损坏导致无法启动,或者是因为各种原因Windows上的RDP服务启动不了,Linux上的SSH无法链接等等问题。碰到这种问题基本上很难解决以前都是将VHD下载回来本地,在本地用Hyper-V启动虚拟机再来看问题的。但是一个操作系统盘最少都要32G,下载回来的话费时费力。Azure新一代的机器(DV3,EV3)现在支持嵌套虚拟化了,我们有了更好的办法解决问题。

准备一台Windows Server 2016,并且安装Hyper-V

详细操作可参考这个链接:https://docs.microsoft.com/en-us/azure/virtual-machines/windows/nested-virtualization#enable-the-hyper-v-feature-on-the-azure-vm

将出问题的VM挂载到云上VM内的Hyper V里

为了尽量不影响原来的环境,我们可以基于源VM的操作系统盘,利用Azure CLI创建一个新的磁盘

az disk create -g dev -n centos_diag --source "<你的磁盘resourceid>" --location southeastasia

创建完之后可以看到下面的界面

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

如果你的环境是Linux因为属性标记了osType=Linux所以没法直接挂接到Azure 的Windows VM上,先要改一下osType这个属性

用命令:

az disk update --set osType="Windows" -g dev -n centos_diag

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

然后回到安装了Hyper V的Windows 2016 VM上找到磁盘,将刚才新建出来的磁盘挂接上去

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

在2016 Server上启动虚拟机

这时候我们可以通过RDP登录到Hyper V的宿主机内了,因为我们刚挂接了一块新的磁盘,所以我们可以在服务管理界面的磁盘管理里看到一块新的磁盘。但是这块磁盘不是直接给这个服务器用的,为了让Hyper V Manager能够找到这块“物理盘”,我们需要将磁盘脱机

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

在Hyper-v上创建虚拟机,跟着向导一直做就好,注意在选择虚拟硬盘是可以不用创建虚拟硬盘,因为我们等一下会挂接:

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

创建好VM后,我们再次进入到VM的配置界面,添加这块“物理硬盘”

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题
由于我们挂接的是“物理盘”,所以没有创建检查点的,这时候直接启动虚拟机的话,会报错的,所以我们还需要进行一个配置

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

启动VM,简单直接,这时候你想怎么调整这个服务器就怎么调整这个服务器,调整完之后,删掉虚拟机.回到Azure Portal,移除绑定。我们就可以基于这个磁盘再把VM启动起来了。

当然如果你的服务器是linux的话,你还需要再次调用 az disk update命令将属性修改回去。

利用Azure嵌套虚拟化,解决公有云上机器不能启动的问题

上一篇:Java基础笔记4


下一篇:网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken