centos7 nbd 挂在qcow2或qcow,raw,虚机镜像,virsh,virt,使用qemu-nbd挂载qcow2镜像文件

news2025/1/12 22:48:27

[root@localhost linux-3.10.63]# cat ../../../readme 
https://blog.51cto.com/mshxuyi/5857760
https://blog.csdn.net/weixin_42097108/article/details/111414501   错误解决
1、nbd 模块未安装 

登录后复制 
[root@localhost ~]# modprobe nbd
modprobe: FATAL: Module nbd not found.

2、查看 linux 版本

登录后复制 
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)   #查看系统版本

[root@localhost ~]# uname -r         #查看linux的内核信息
3.10.0-957.el7.x86_64

3、安装相关包

yum install kernel-devel kernel-headers elfutils-libelf-devel gcc+ gcc-c++

4、下载内核包

登录后复制 
http://vault.centos.org/7.6.1810/os/Source/SPackages/kernel-3.10.0-957.el7.src.rpm

#根据自己的系统版本去下载
#7.6.1810  为redhat-release 系统版本
#3.10.0-957.el7  为uname -r  内核信息


5、编译

登录后复制 
rpm -ivh kernel-3.10.0-957.el7.src.rpm

cd rpmbuild/SOURCES/

#解压 -C 指定目录 /usr/src/kernels
tar jxvf linux-3.10.0-957.el7.tar.xz -C /usr/src/kernels/

#解压后生成两个文件
ll /usr/src/kernels/
drwxr-xr-x. 22 root root 4096 9月   6 08:07 3.10.0-957.27.2.el7.x86_64
drwxrwxr-x. 24 root root 4096 9月   6 08:17 linux-3.10.0-957.el7

编译

登录后复制 
cd /usr/src/kernels/linux-3.10.0-957.el7

#删除所有编译生成文件,内核配置文件
make mrproper

cp /usr/src/kernels/3.10.0-957.27.2.el7.x86_64/Module.symvers ./

cp /boot/config-3.10.0-957.el7.x86_64 ./.config

#备份当前.config文件为.config.old
make oldconfig

make prepare

make scripts

6、编译 

登录后复制 
make CONFIG_BLK_DEV_NBD=m M=drivers/block

错误: 

登录后复制 
drivers/block/nbd.c: 在函数‘__nbd_ioctl’中:
drivers/block/nbd.c:619:19: 错误:‘REQ_TYPE_SPECIAL’未声明(在此函数内第一次使用)
   sreq.cmd_type = REQ_TYPE_SPECIAL;
                   ^
drivers/block/nbd.c:619:19: 附注:每个未声明的标识符在其出现的函数内只报告一次
make[1]: *** [drivers/block/nbd.o] 错误 1
make: *** [_module_drivers/block] 错误 2

解决:

vi drivers/block/nbd.c

//sreq.cmd_type = REQ_TYPE_SPECIAL;
sreq.cmd_type = 7;  #修改为7

#重新执行一次
make CONFIG_BLK_DEV_NBD=m M=drivers/block

 7、复制文件

cp drivers/block/nbd.ko /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/block/

depmod -a
8、查看模块

登录后复制 
[root@localhost linux-3.10.0-957.el7]# modinfo nbd
filename:       /lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
retpoline:      Y
rhelversion:    7.6
srcversion:     EDE909A294AC5FE08E81957
depends:        
vermagic:       3.10.0 SMP mod_unload modversions 
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)
parm:           debugflags:flags for controlling debug output (int)
 

编译内核出现的问题解决办法

1.cc1: error: code model kernel does not support PIC mode

在这里插入图片描述

 2
include/linux/compiler-gcc.h:106:1: fatal error: linux/compiler-gcc7.h: 没有那个文件或目录
直接将gcc4重命名为gcc7
mv include/linux/compiler-gcc4.h include/linux/compiler-gcc7.h
 

3.li@li-vir:~/dq/drivers/hello3$ insmod hello.ko
insmod: ERROR: could not insert module hello.ko: Operation not permitted

4.

insmod: ERROR: could not insert module hello.ko: Invalid module format

这里是引用
在这里插入图片描述
版本不对,
使用uname -r查看一下
在这里插入图片描述
make时要确保一致

方法1 挂在qcow2

1. 加载 nbd 驱动
某些版本的 linux 不加 max_part 参数会导致没有没有设备节点 /dev/nbd0p{1,2,3,4…} 等. 用 kpartx 也不行.

$ sudo modprobe nbd max_part=8
备注信息:查看Linux 模块信息(modinfo),例如查看nbd模块的参数

$ modinfo nbd
filename:       /lib/modules/3.14.12/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
srcversion:     910DE7DFCE8A0AE76D3D428
depends:        
intree:         Y
vermagic:       3.14.12 SMP mod_unload modversions 
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)
parm:           debugflags:flags for controlling debug output (int)

2.连接 qemu-nbd

$ sudo qemu-nbd -c /dev/nbd0 centos.qcow2

查看分区:

$ sudo fdisk -l /dev/nbd0

Disk /dev/nbd0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005d1fd

     Device Boot      Start         End      Blocks   Id  System
/dev/nbd0p1   *        2048     1026047      512000   83  Linux
/dev/nbd0p2         1026048    20971519     9972736   8e  Linux LVM

vgdisplay

$ sudo lvdisplay

 --- Logical volume ---
  LV Name                /dev/VolGroup/lv_root
  VG Name                VolGroup
  LV UUID                v60jyE-1lDm-7dMW-hkVf-YWBH-OKXI-ySHDkb
  LV Write Access        read/write
  LV Status              NOT available
  LV Size                8.51 GiB
  Current LE             2178
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
   
  --- Logical volume ---
  LV Name                /dev/VolGroup/lv_swap
  VG Name                VolGroup
  LV UUID                b1BctN-vPtc-8n6F-tokb-75pN-w34N-HXG1cB
  LV Write Access        read/write
  LV Status              NOT available
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
 

Active VolGroup

$ sudo vgchange -a y VolGroup

mount vg

$ sudo mount /dev/VolGroup/lv_root /mnt/test2

3.挂载

$ sudo mount /dev/nbd0p1 /mnt/test1

4.umount disconnect

$ sudo mount /dev/nbd0p1 /mnt/test1
$ sudo qemu-nbd -d /dev/nbd0p1

 方法2 挂在qcow2

方法二:libguestfs

1.安装libguestfs工具

$ sudo apt install libguestfs-tools 

2.挂载磁盘镜像中的分区到挂载点

语法:guestmount -a 镜像文件 -m 镜像文件内包含的某个分区 [选项] 挂载点

$ sudo mkdir /mnt/a                                                  #创建挂载点目录    
sudo guestmount -a /XXX/XXX/imgname.qcow2  -m /dev/sda1 /mnt/a      #尝试挂载/dev/sda分区,将提示有两个有效的分区/dev/sda1(/boot)和/dev/sda2(/root),
libguestfs: error: mount_options: mount exited with status 32: mount: /sysroot: wrong fs type, bad option, bad superblock on /dev/sda, missing codepage or helper program, or other error.
guestmount: ‘/dev/sda’ could not be mounted.
guestmount: Did you mean to mount one of these filesystems?
guestmount:     /dev/sda1 (vfat)
guestmount:     /dev/sda2 (ext4)    
$ sudo guestmount -a /XXX/XXX/imgname.qcow2  -m /dev/sda2 /mnt/a        #将磁盘镜像中包含的/dev/sda2分区挂载到/mnt/a目录
sudo ls /mnt/a
bin  boot  dev    etc  home  lib    lib64  media  mnt  opt    proc  root  run  sbin  srv  sys  tmp  usr  var
 

也可以通过-i参数替代-m来实现自动挂载有效分区

$ sudo mkdir /mnt/a                                                      #创建挂载点目录    
$ sudo guestmount -a /XXX/XXX/imgname.qcow2  -i /mnt/a                    #将自动将磁盘镜像中最有效的/dev/sda2分区挂载到/mnt/a目录
sudo ls /mnt/a
bin  boot  dev    etc  home  lib    lib64  media  mnt  opt    proc  root  run  sbin  srv  sys  tmp  usr  var
 

3.取消挂载

$ sudo guestunmount /mnt/a
  • 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/468336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticJob-Lite 3.x 集成springBoot 实战 (一次性作业、定时作业)

文章目录 前言ElasticJob-Lite 3.x 集成springBoot 实战 (一次性作业、定时作业)1. ElasticJob简介2. ElasticJob-Lite 是什么3. 功能列表4. 所需依赖包5. 定时作业配置5.1. 作业:5.2. yml配置:5.3. 测试 6. 一次性任务配置、并手动触发6.1. 作业:6.2. yml配置:6.3. 测试 7. 其…

洞见数字时代的创新原力,数云原力大会暨2023TECH第五届数字中国技术年会开幕

4月25日,神州控股、神州信息、神州数码集团共同主办的数云原力大会暨2023TECH第五届数字中国技术年会开幕。开幕式上,数百位投身并关注数字技术、数字产业发展的学者、技术专家、从业者、行业用户齐聚一堂,围绕云原生、数字原生、大数据、金融…

2.龙芯2k1000 linux3.10内核编译过程

龙芯2k1000 linux3.10内核编译过程 文章目录 龙芯2k1000 linux3.10内核编译过程(一)、在Ubuntu环境下载并配置交叉编译链(二)、下载linux3.10内核源码(三)、使用menuconfig配置内核(四&#xff…

【react从入门到精通】深入理解react生命周期这一篇就够了

文章目录 前言React的生命周期是什么React v16.0前的生命周期组件初始化(initialization)阶段组件挂载(Mounting)阶段组件更新(update)阶段组件销毁阶段 React v16.4 的生命周期总结写在最后 前言 在上一篇文章《react入门这一篇就够了》中我们已经掌握了React的基本知识。通过…

XXE原理利用防御

XXE原理利用防御 一、XML定义 1、定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 2、原因 应用程序解析XML时,没有过滤外部实体的加载&#xff0…

多用户商城平台开发需要注意哪些问题?

电子商务的快速发展,越来越多的企业选择借助第三方商城软件开设自己的多用户商城平台,以此来帮助他们增加销售额和提高品牌知名度,如目前市面上常见的shop、shopnc等第三方商城软件。但是,多用户商城平台的开发并不是一件容易的事…

QFIELD-GIS工具版如何编辑数据

一、 简介 在现场进行GIS数据对比、采集、编辑是移动GIS App的一项非常实用的功能。能够使用户更加及时准确的收集到第一手资料,并在现场第一时间进行编辑和完善。同时配合遥感、GPS或移动设备自带各类传感器,再辅助以其它矢量参考数据可以对已有成果…

如何利用社交媒体来做Etsy店铺推广?

利用社交媒体是 Etsy 店铺推广的重要一环。通过创作优秀的社交媒体内容、定期发布内容、与关注者互动和利用广告,你可以吸引更多的潜在客户,增加你的店铺销售量和品牌影响力。以下是详细说明如何利用社交媒体来做店铺推广: 选择适合的社交媒体…

FinClip 现已支持云开发

在开发一个小程序时,除了考虑界面功能逻辑外,还需要后端的数据支持,开发者需要提前考虑服务器、存储和数据库等相关需求的支持能力,此外还可能需要花费时间精力在部署应用、和依赖服务的建设上。 因此,腾讯小程序为了实…

NetMQ | 实现TCP的发布订阅模式

NetMQ | 实现TCP的发布订阅模式 文章目录 NetMQ | 实现TCP的发布订阅模式前言什么是发布订阅模式?实现步骤步骤1:创建Publisher和Subscriber步骤2:绑定和连接步骤3:添加订阅步骤4:发布消息步骤5:接收消息 示…

构建一体化数字营销平台,助力医药企业实现销售转化能级大幅跃迁 | 案例研究

今日分享的案例企业成立于1994年,主要从事心血管、消化领域的药品生产、加工、分装和销售,其中心血管相关药品广泛畅销至世界很多个国家。目前,该医药公司销售网络遍及全国80余个城市,以专业人员组成的营业队伍,致力于…

【Linux系统安装Python3 --- 思路清晰的五大步】

水善利万物而不争,处众人之所恶,故几于道💦 目录 一、检查Python版本 二、下载源码包 三、解压编译源码 四、安装Python 五、调整系统默认Python指向 一、检查Python版本 1.直接进入python命令行查看python版本 python 2.列出系统上所…

[Android 模块化配置实践] Java + Gradle7配置模块化实践记录

文章目录 1.项目配置及环境2.项目工程结构3.Project下的系列设置自定义config.gradlesetting.gradlebuild.gradle(:project) 添加modulemodule_common下的build.gradle配置遇到的报错一遇到的报错二 applicationId问题 module_xxx下的build.gradle示例 由于目前刚开始学习模块化…

【vxe-table】自定义表头列是否可以排序

vxe-table真是让人又爱又恨,官网示例还有文档都很详细,但是可能是用的人少,每次遇到问题,都百度不到啥解决方法,不像el-table,全是方法 今天给我提了个bug,vxe-table要支持指定列排序,意思就是…

如何用3D人脸扫描设备制作虚拟数字人?

在海心沙元宇宙音乐会上,虚拟数字人“杜杜”与真人主持杜雨轩老师同台主持,带领现场观众感受虚实融合的音乐世界。 其实虚拟数字人“杜杜”是使用了数字人复刻技术,以真人主持杜雨轩老师1:1复刻的。在模型制作上不同于往常的美型数…

springboot整合flowable工作流引擎的简单使用

内容来自网络整理,文章最下有引用地址,可跳转至相关资源页面。若有侵权请联系删除 环境: mysql5.7.2 springboot 2.3.9.RELEASE flowable 6.7.2 采坑: 1.当前flowable sql需要与引用的pom依赖一致,否则会报library…

【chapter29】【PyTorch】[Regularization】

前言: 前面讲了Overfitted,这里重点讲解一下如何防止 Overfitting ,以及其中的方案之一 Regularization 模型的参数量,模型的表达能力远超模型本身复杂度. 与之对应的是奥卡姆剃刀原理: 如何用最简单的方法得到最好的效果 找到关键的部分,简…

【SWAT水文模型】SWAT水文模型建立及应用第三期:土壤库建立(待更新)

SWAT水文模型建立及应用:土壤库建立 1 简介2 土壤数据下载2.1 数据下载方式2.1.1 世界土壤数据库HWSD数据2.1.2 中国土壤数据库 2.2 数据下载 3 土壤数据的准备3.1 SWAT土壤数据库参数3.2 土壤质地转化3.3 土壤参数的提取3.4 其他变量的提取3.5 土壤类型分布图的处理…

回顾 | Pre VS Code Day - 用 GitHub Codespaces 构建 OpenAI 应用实战

编辑:Alan Wang 排版:Rani Sun 微软 Reactor 为帮助广开发者,技术爱好者,更好的学习 .NET Core, C#, Python,数据科学,机器学习,AI,区块链, IoT 等技术,将每周三到周六&a…

85.qt qml-炫酷烟花粒子特效(支持多种爆炸模式、爆炸阴影、背景场景)

效果如下所示: 截图如下所示: 实现内容如下所示: 1.实现多个爆炸效果2.爆炸的时候增加光度阴影效果3.由于场景有湖面,所以还需要增加一个倒影粒子组首先我们来学习下,该示例中所需要常用的类型点 1.如何更改粒子生命周期时的颜色变换动画 方法有两种。 1.1通过colorTable和si…