很多时候我们都会碰到因为意外重启,机器硬盘被损坏导致无法启动,或者是因为各种原因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

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

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

用命令:

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

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

在2016 Server上启动虚拟机

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

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

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


由于我们挂接的是“物理盘”,所以没有创建检查点的,这时候直接启动虚拟机的话,会报错的,所以我们还需要进行一个配置

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

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

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

  1. 公有云上构建云原生 AI 平台的探索与实践 - GOTC 技术论坛分享回顾

    7 月 9 日,GOTC 2021 全球开源技术峰会上海站与 WAIC 世界人工智能大会共同举办,峰会聚焦 AI 与云原生两大以开源驱动的前沿技术领域,邀请国家级研究机构与顶级互联网公司的一线技术专家 ...

  2. 公司机器(线上机器)启动ftp任务的命令

    这个命令: /usr/local/proftp/sbin/proftpd 注意要在root账户,并且kill掉原来的同名进程.

  3. 在Windows Azure公有云环境部署企业应用

    作者 王枫 发布于 2014年4月5日 企业内部应用转换为在线服务 Windows Azure已经成为众多IT服务提供商们热议的话题,其中,有的认为只有提供互连网用户服务的应用才适合放在公有云环境内运 ...

  4. ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云

    向视图中添加服务 现在,ASP.NET MVC 6 支持注入类到视图中,和VC类不同的是,对类是公开的.非嵌套或非抽象并没有限制.在这个例子中,我们创建了一个简单的类,用于统计代办事件.已完成事件和平 ...

  5. 基于puppet分布式集群管理公有云多租户的架构浅谈

    基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍   在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...

  6. 西瓜哥:公有云也“All-Flash”?

    本文转载自 高端存储知识 Gartner在2018年Market Insight: Preparing for the SSD Rise and HDD Demise一文中指出:当闪存介质降到HDD每 ...

  7. [转帖]Gartner预测:2019年全球公有云规模达2143亿美元

    Gartner预测:2019年全球公有云规模达2143亿美元 https://news.cnblogs.com/n/623341/ 近日,全球领先的信息技术研究和顾问公司 Gartner 发布的最新数 ...

  8. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(一)

    (一)前言 本文主要介绍了实践部署AzurePack的Website Cloud的过程.在部署之前, 首先要对AzurePack有个基本的了解.   Azure Pack是微软的私有云方案,具有弹性. ...

  9. “云中论道”之——使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(上)

    “云中论道”技术课堂第一课开讲啦!微软各路技术咖们齐聚一堂,为大家带来干货不断!作为“云中论道“课堂的开课之作,我们首先邀请到了微软Azure专家级的架构师:槐长清,他为我们带来了关于“使用开源技术和 ...

随机推荐

  1. Linux 性能搜集【top/vmstat/iostat】

    为方便问题发生后,问题原因的分析排查,我们可以在服务器中事先部署如下脚本,方便故障发生后,问题原因的分析排查 脚本部署方法: 1.将脚本[top_monitor.sh]上传到服务器 2.登陆虚拟机,并 ...

  2. BSA Network Shell系列-nexec | runcmd | runscript | scriptutil的异同

    说明下nexec.runcmd.runscript.scriptutil的异同 相同点: 四者都可以在远程机器执行命令.或者调用脚本. 不同点: nexec支持NSH命令,可以执行远程机的本地命令(非 ...

  3. linkinFrame--web应用举例--准备工作

    OK,前面的博客我们已经搭好了linkinFrame的项目结构,现在我们这里添加一个简单的web应用,在编写此web应用的过程中我们来一步一步的搭好自己的框架. 现在开始,这里举一个例子,一个客户的C ...

  4. java获取昨天的日期

    Calendar   cal   =   Calendar.getInstance();  cal.add(Calendar.DATE,   -1);  String yesterday = new ...

  5. php 通过curl获取远程数据,返回的是一个数组型的字符串,高手帮忙如何将这个数组类型的字符串变成数组。

    如 Array([0] => Array([0] => Array([kd_status] => 已签收[kd_time] => 2014-04-30 18:59:43 [b] ...

  6. 浏览器解析js的顺序

    浏览器在读取HTML文件的时候,只有当遇到

  7. Windows--查看使用某端口的进程

    场景: 有时候我们希望查找某个端口被那个进程使用,如何操作呢? 比如查找8000端口被按个进程使用? 首先使用netstat -ano |grep 8000查看 13776就是使用的进程ID 然后使用 ...

  8. C# 类型基础(下)

    前面介绍了基本的类型,接下来我们讲讲类型的转换 值类型的两种表现形式:未装箱和已装箱 ,而引用类型总是处于装箱形式 int count = 10; object obj = count; 装箱:值类型 ...

  9. java 对象、集合的非空判断

    自我总结,有什么不到位的地方,请各位纠正补充,感激不尽! 目的:使程序更严谨 ***对象验证是否不为空:  if( null != obj ) ***List验证不为空:if( null != lis ...

  10. 浅谈大型web系统架构(一)

    目录 Web前端系统 负载均衡系统 数据库集群系统 缓存系统 分布式存储系统 分布式服务器管理系统 代码发布系统   动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl. ...