热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

如何将LinuxKVM虚拟机的img文件挂载到宿主机

在使用虚拟化的过程中,难免会遇到虚拟机异常导致无法启动等故障,这时候如何从虚拟机的img中将重要文件或数据拷贝出来显得尤为重要,今天介绍一下利用qemu-nbd的方式将img文件挂载到宿主机。需要注意的是,目前仅针对于img文件类型为qcow2的做过测试。1.

在使用虚拟化的过程中,难免会遇到虚拟机异常导致无法启动等故障,这时候如何从虚拟机的img中将重要文件或数据拷贝出来显得尤为重要,今天介绍一下利用qemu-nbd的方式将img文件挂载到宿主机。

需要注意的是,目前仅针对于img文件类型为qcow2的做过测试。

1. 检测img文件的类型:

    file test.img

    test.img: Qemu Image, Format: Qcow , Version: 2

qemu-nbd方式依赖于内核级别的nbd模块,简单介绍一下nbd。

NBD(Network Block Device)

简介:Tools for the Linux Kernel's network block device, allowing you to use remote block devices over a TCP/IP network,也就是说可以实现IP-SAN的功能数据共享。

相关网站:http://nbd.sourceforge.net/

2. 由于CentOS里面默认没有编译nbd到内核里,需要重新编译kernel的源码,具体步骤如下:

 yum install kernel-devel kernel-headers

 cd /tmp

#下载符合当前版本的kernel src 6.2或者6.4的切换一下目录即可

wget http://vault.centos.org/6.3/updates/Source/SPackages/kernel-2.6.32-279.22.1.el6.src.rpm

rpm -ivh kernel-2.6.32-279.22.1.el6.src.rpm

cd ~/rpmbuild/SOURCES

#解压tar包到kernel源码的位置

tar jxf linux-2.6.32-279.22.1.el6.tar.bz2 -C /usr/src/kernels/

cd /usr/src/kernels

#备份原有的kernel source

mv $(uname -r) $(uname -r)-old

#有时候不排除内核的版本与实际的source包不一致,所以应以实际为准

mv 2.6.32-431.3.1.el6.x86_64 2.6.32-431.3.1.el6.x86_64-old

#将新下载的kernel重命名

mv  linux-2.6.32-279.22.1.el6 2.6.32-431.3.1.el6.x86_64

chown -R root:root 2.6.32-431.3.1.el6.x86_64

#开始进入编译阶段

cd /usr/src/kernels/2.6.32-431.3.1.el6.x86_64

#make mrproper去先删除之前编译所生成的文件和配置文件等

make mrproper

cd /usr/src/kernels/2.6.32-431.3.1.el6.x86_64-old

#Module.symvers文件用于:1.列出vmlinux和所有模块的导出函数    2.列出所有符号的CRC校验值

cp  Module.symvers /usr/src/kernels/2.6.32-431.3.1.el6.x86_64

cd /usr/src/2.6.32-431.3.1.el6.x86_64

cp /boot/config-2.6.32-358.el6.x86_64 ./.config

#所有问题都基于已有的.config文件,只对新特性和新设定提出询问,避免需要重新设定整个内核的配置

make oldconfig

make prepare

make scripts

make CONFIG_BLK_DEV_NBD=m M=drivers/block

#在 /usr/src/kernels/2.6.32-431.3.1.el6.x86_64目录下

cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/

#Probe all modules

depmod -a

#加载模块,默认nbd的增加分区的功能是关闭的,需要指定max_part这个参数。这个参数指定了一个nbd设备可以有多少个分区。
modprobe nbd max_part=63

#是否加载可以用 lsmod 命令查看

3.利用qemu-nbd实现虚拟机镜像的挂载

#需要安装以下软件

rpm -ivh  --replacefiles --nodeps seabios-bin-0.6.2-3.el6.noarch.rpm
rpm -ivh  --replacefiles --nodeps seabios-0.6.2-3.el6.x86_64.rpm
rpm -ivh  --replacefiles --nodeps qemu-common-0.12.3-8.el6.x86_64.rpm
rpm -ivh  --replacefiles --nodeps qemu-img-0.12.3-8.el6.x86_64.rpm
rpm -ivh  --replacefiles --nodeps qemu-kvm-0.12.3-8.el6.x86_64.rpm
rpm -ivh  --replacefiles --nodeps qemu-system-x86-0.12.3-8.el6.x86_64.rpm

#查看当前与nbd相关的设备

ls /dev/ | grep nbd

#将文件链接到本地的NBD设备上

qemu-nbd -c /dev/nbd0 test01.img

#再次查看与nbd相关的设备,会发现在/nbd0 下多了三个分区nbd0p1 nbd0p2 nbd0p3,这是虚拟机img文件中的分区

ls /dev/ | grep nbd

#挂载到宿主机,就可以访问img的内部了,其中会有一个swapspace是不能挂载的

mount nbd0p1 /mnt/test

大功告成


推荐阅读
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍了VMware的多种认证选项,帮助你根据职业需求和个人技能选择最合适的认证路径,涵盖从基础到高级的不同层次认证。 ... [详细]
  • 本文介绍如何通过更改软件源来提前体验Ubuntu 8.10,包括详细的配置步骤和相关注意事项。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 解决网站乱码问题的综合指南
    本文总结了导致网站乱码的常见原因,并提供了详细的解决方案,包括文件编码、HTML元标签设置、服务器响应头配置、数据库字符集调整以及PHP与MySQL交互时的编码处理。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
author-avatar
刘胜良昭桂家贤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有