很多时候我们都会碰到因为意外重启, 机器硬盘被损坏导致无法启动, 或者是因为各种原因 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 命令将属性修改回去
来源: http://www.bubuko.com/infodetail-2511279.html