nova rescue vm_instance

es.ops 20190426

linux虚拟机在出现类似kernel panic后,根据panic信息以及故障前的操作,定位问题的发生点,进行修复

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

nova rescue命令使用帮助

[root@node-1 ~]# nova help rescue 
usage: nova rescue [--password <password>] [--image <image>] <server>

Reboots a server into rescue mode, which starts the machine from either the
initial image or a specified image, attaching the current boot disk as
secondary.

Positional arguments:
  <server>               Name or ID of server.

Optional arguments:
  --password <password>  The admin password to be set in the rescue
                         environment.
  --image <image>        The image to rescue with.

在控制节点执行如下命令nova rescue vm_uuid

[root@node-1 ~]# nova rescue 473fbedd-73e3-4163-a859-4010b0e8c4ae --password passw0rd
+-----------+----------+
| Property  | Value    |
+-----------+----------+
| adminPass | passw0rd |
+-----------+----------+

Note:

这里一定要指定密码,并且作为一个通用救援密码,该虚拟机有第一次rescue之后rescue密码就不能改变了,以后再对该虚拟机进行救援,只能使用这个密码了,下次再设置是无效的。

此时虚拟机会进行重启,Horizon界面的虚拟机状态变为"救援",nova list命令看到虚拟机也会变成RESCUE状态.

rescue的过程,会用创建虚拟机的image作为引导镜像来引导虚拟机,并把虚拟机作为一个vdb盘,挂载到虚拟机上,进入虚拟机后可以通过lsblk可以看到

[root@wl-test2 ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  10G  0 disk 
└─vda1 253:1    0  10G  0 part /
vdb    253:16   0  60G  0 disk 
└─vdb1 253:17   0  60G  0 part 

如何进入rescue模式的虚拟机,此时可以通过ssh连接并使用root/rescue_password 进入虚拟机。比例如:

nova ssh vm_uuid(此方式需要虚拟机有一个物理机能通信的ip,或者从命名空间ssh连接)

将vdb即虚拟机的磁盘挂载给/mnt目录(目录可以任意指定),挂载命令如下:

mount -o nouuid /dev/vdb1 /mnt

此时cd /mnt后,可以看原虚拟机的所有目录

[root@wl-test2 ~]# ls /mnt
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

根据之前的kernel panic信息进行相关修复。

Example:

忘记了root密码,此时nova ssh连接进入虚拟机

[root@wl-test2 ~]# chroot /mnt
[root@wl-test2 /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@wl-test2 /]# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

此时root密码已经修改完成

退出rescue状态后,即可使用新密码登录虚拟机root用户

修复完成后,退出rescue模式,在控制节点执行nova unrescue vm_uuid

[root@node-1 ~]# nova unrescue 5ec5fed5-90ac-464e-a584-6b303c29ff0a

之后,虚拟机会再次重启,进入正常的运行状态,此时界面上的虚拟机的状态变回运行中。

虚拟机修复完成。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄