Azure VM 无法正常启动的处理

2019-02-02  本文已影响0人  华阳_3bcf

Azure VM无法正常启动,一般是系统文件出错,导致无法连接。处理方法是恢复系统文件,恢复的途径主要有下面三个思路:

  1. 从以前的备份snapshot恢复。
  2. 从Console进去修改出错的部分。
  3. 把系统盘mount到其它主机上修改。

对于没有备份的系统,只能使用后两种方式,具体如下:

方法一:进入Console处理

登陆Azure web portal,找到对应的VM,打开诊断模式,重启VM,连接Console。

从Console输出,了解什么原因导致VM启动失败,然后进入系统,以root身份(敲回车键,直接就进入root)修改对应文件,再重启。
【注】2019/5/20 更新,这种办法现在行不通了,root需要密码进入。解决方案Use Serial Console to access GRUB and Single User Mode

方法二:mount系统盘到其它主机

使用Azure CLI 命令行操作。

解除VM与系统盘的关系。

az vm delete -g MyGroup -n MyVM

$ az vm delete -g roy-kafka-rg -n roy-kafka-vm-hdp-01
Are you sure you want to perform this operation? (y/n): y
{
  "additionalProperties": {},
  "endTime": "2019-02-02T02:28:58.125809+00:00",
  "error": null,
  "name": "31f5dc00-a550-433f-b4db-4ed8e4a71522",
  "startTime": "2019-02-02T02:28:47.610582+00:00",
  "status": "Succeeded"
}

[注意] 因为是系统盘,只能通过删除VM的方式,如果是数据盘,可以 detach disk。

把系统盘挂在其它VM上

az vm disk attach -g MyGroup --vm-name AnotherVM --disk Old_VM_OS_disk

[注意]两个VM最好是同样的类型(size,OS)否则磁盘可能挂载不了。

登陆Linux系统,找到新磁盘,挂上去。

  1. 通过 lsblk 找到新磁盘
  2. mount 新磁盘
  3. 修改文件
  4. umount 磁盘
  5. 退出

Azure 平台取消disk 与 VM的挂载关系

az vm disk detach -g MyGroup --vm-name AnotherVM -n Old_VM_OS_disk

基于修改后的OS 磁盘,重新创建VM

az vm create -g MyGroup -n MyVM --attach-os-disk Old_VM_OS_disk --os-type linux --size SizeType --nics Old_nic_name

[注意] 额外的两个参数 --size, --nics。size决定了CPU/Memory跟原来一样,nics决定了网卡跟原来一样,也就是子网,ip,nsg跟原来一样。

重新连接VM

VM实际上是新建的,通过ssh连接,发现fingerprint变了,需要修改本地的~/.ssh/known_hosts,再次连接。

拓展

VM 在 OpenStack 环境中连接不上,也是类似的思路。

不同点:

Console 需要输入root 密码,无法登陆。只能通过挂盘的方式来操作。

挂盘操作步骤:

  1. 找到VM所在的物理机
  2. 在物理机上安装guestfish
  3. guestfish 修改虚拟机镜像里面的文件
上一篇下一篇

猜你喜欢

热点阅读