如何恢复故障KVM虚拟机qcow2磁盘镜像文件LVM分区中的数据

2020-10-10 10:48:36 浏览数 (1)

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数据下数据,这时就可以拷贝该分区下的数据进行备份恢复

0 人点赞