KVM虚拟机发生故障,无法正常启动,但是里面存在重要数据,这时如何进行恢复
问题:如何恢复故障KVM虚拟机qcow2磁盘镜像文件LVM分区中的数据
下面以Fedora32 Cockpit方式安装的虚拟机为演示环境,介绍如何恢复故障KVM虚拟机qcow2磁盘镜像文件LVM分区中的数据
1)Fedora32默认安装了cockpit
yum安装cockpit-machines
yum install cockpit-machines.noarch
2)登录cockpit并创建虚拟机 https://192.168.31.155:9090登录cockpit
3)上传自动化安装CentOS7的系统镜像用于测试
4)创建虚拟机
5)在/data分区下写入数据,用于测试
6)模拟系统无法启动的故障
7)关闭虚拟机
接下来进入正题
如何恢复故障KVM虚拟机qcow2磁盘镜像文件LVM分区中的数据
方法一、使用qemu-nbd工具挂载KVM虚拟机的磁盘镜像文件
1. 首先检查当前系统的kernel对NBD模块的支持(NBD:network block device),并加载nbd驱动
代码语言:javascript复制Fedora32默认带nbd驱动,CentOS7系统需要手动编译
modinfo nbd
手动加载nbd驱动
modprobe nbd max_part=16
lsmod | grep nbd
2、将qcow2镜像映射为网络块设备(nbd)
代码语言:javascript复制qemu-nbd -c /dev/nbd0 /var/lib/libvirt/images/YF_OS.qcow2
ll /dev/nbd0*
3、挂载nbd设备
代码语言:javascript复制lsblk
lsblk -f
挂载
mount /dev/mapper/vg_centos-lv_data /kvm_data/
并查看data分区下数据,这时就可以拷贝该分区下的数据进行备份恢复
方法二:使用guestmount挂载KVM虚拟机的磁盘镜像文件
1、安装软件包libguestfs和libguestfs-tools
代码语言:javascript复制yum install libguestfs libguestfs-tools -y
2、virt-filesystems检测虚拟机磁盘文件
virt-filesystems 参数-a 检测虚拟机磁盘文件
代码语言:javascript复制virt-filesystems -a /var/lib/libvirt/images/YF_OS.qcow2
3、guestmount命令进行挂载
代码语言:javascript复制guestmount -a /var/lib/libvirt/images/YF_OS.qcow2 -m /dev/vg_centos/lv_data /mnt/kvm_images/
命令解释:
-a参数指定虚拟磁盘镜像文件
-m参数指定要挂载的设备在虚拟机中的挂载点
最后给出宿主机中的挂载点
代码语言:javascript复制cd /mnt/kvm_images/
ll -trh
查看虚拟机中的/data数据下数据,这时就可以拷贝该分区下的数据进行备份恢复