CentOS7.3 KVMのゲストOSをレスキューで復旧

シェアする

KVM上のゲストOSをレスキューで復旧するには、「virt-rescue」コマンドで可能です。

システムのメンテをしている時に、ルート領域の論理ボリューム名を変更しましたが、GRUB2の設定変更を忘れてしまって、起動できなくなりました。

そのための復旧です。

パッケージのインストール

virt-rescueコマンドを使うためには、パッケージのインストールが必要です。
KVMホストにインストールしてください。

# yum -y install libguestfs-tools-c
   :(省略)
Installed:
  libguestfs-tools-c.x86_64 1:1.32.7-3.el7_3.3
 
Dependency Installed:
  hexedit.x86_64 0:1.2.13-5.el7
 
Dependency Updated:
  libguestfs.x86_64 1:1.32.7-3.el7_3.3
 
Complete!

レスキューで復旧

対象のゲストOSが完全にシャットダウンされている状態で、復旧します。
試しなどで、正常なゲストOSが起動している状態で実行すると、ファイルシステムの破壊につながります。

# virt-rescue test01
virt-rescue: warning: virt-rescue doesn't work with the libvirt backend
at the moment.  As a workaround, forcing backend = 'direct'.     <= ここで待たされました
supermin: mounting /proc
supermin: ext2 mini initrd starting up: 5.1.16 glibc
insmod: init_module: crc32-pclmul.ko: No such device
insmod: init_module: crc32c-intel.ko: No such device
insmod: init_module: crct10dif-pclmul.ko: No such device
Starting /init script ...
starting version 219
specified group 'input' unknown
Cannot find device "eth0"
Cannot find device "eth0"
RTNETLINK answers: Network is unreachable
mdadm: No arrays found in config file or automatically
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
  2 logical volume(s) in volume group "vg01" now active
/init: line 136: ldmtool: command not found

------------------------------------------------------------

Welcome to virt-rescue, the libguestfs rescue shell.

Note: The contents of / are the rescue appliance.
You have to mount the guest's partitions under /sysroot
before you can examine them.

><rescue> lvrename /dev/vg01/root /dev/vg01/lv_root   <= LV名を元に戻しました
  WARNING: Failed to connect to lvmetad. Falling back to device scanning.
  Renamed "root" to "lv_root" in volume group "vg01"
><rescue> exit
exit

virt-rescue: Syncing the disk now before exiting ...

Rebooting.
[ 1294.357215] Restarting system.
# virsh start test01 --console
   :(省略)
CentOS Linux 7 (Core)
Kernel 3.10.0-514.16.1.el7.x86_64 on an x86_64
 
centos73 login: