qemu-nbd挂载虚拟机镜像文件系统
qemu-nbd挂载虚拟机镜像文件系统
基本原理
nbd(网络块设备: Network Block Device),利用qemu-nbd
将qemu虚拟机镜像挂载到Linux上。
一般步骤
-
加载 nbd 驱动(sudo modprobe nbd)
- 查看有没有加载nbd模块
lsmod |grep nbd
- 加载nbd模块
sudo modprobe nbd max_part=16
- 查看有没有加载nbd模块
-
连接 qemu-nbd(sudo qemu-nbd -c nbd设备路径 虚拟机镜像路径)
- 查看分区: sudo fdisk -l nbd设备,可能虚拟机不止一个分区(一般还会有一个boot分区)
-
挂载(sudo mount nbd分区 挂载路径)
-
解挂(sudo qemu-nbd -d nbd分区)。
虚机文件系统为LVM
# 连接镜像 qemu-nbd -f qcow2 -c /dev/yournbddev yourimg # 更新lvm分区 pvscan --cache vgscan lvscan vgchange -a y lsblk -f #查看新增文件系统结构 # 挂载lvm分区 mount /dev/vgname/lvname /your/mount/point # 卸载分区 umount /your/mount/point vgchange -an centos # 断开nbd连接 qemu-nbd -d /dev/yournbddev pvscan --cache
虚机文件系统为非LVM
# 连接镜像 qemu-nbd -f qcow2 -c /dev/yournbddev yourimg lsblk -f #查看新增文件系统结构 # 挂载分区 mount /dev/[yournbddev][pn] /your/mount/point # 其中pn代表你要挂载的时镜像里的分区n # 卸载分区 umount /your/mount/point # 断开nbd连接 qemu-nbd -d /dev/yournbddev
虚机文件系统为ntfs
# 连接镜像 qemu-nbd -f qcow2 -c /dev/yournbddev yourimg lsblk -f #查看新增文件系统结构 # 挂载分区 mount -t ntfs-3g /dev/[yournbddev][pn] /your/mount/point # 其中pn代表你要挂载的时镜像里的分区n # 卸载分区 umount /your/mount/point # 断开nbd连接 qemu-nbd -d /dev/yournbddev
注意
- 一般如果虚机在运行中突然断电关机(比如直接杀死qemu进程或者用virsh destroy命令关闭),此时虚机文件系统可能损坏,这时候直接mount一般会出错,建议用
-o ro,norecovery
选项挂载 - 在卸载过程中需要考虑是否有进程正在占用文件,一般用
fuser -k
- 注意mount和umount命令的用法
参考
https://manpages.debian.org/testing/qemu-utils/qemu-nbd.8.en.html
How to Mount Guest Qcow2 Virtual disk Image containing LVM on KVM Host Machine
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)