qemu-nbd挂载虚拟机镜像文件系统

qemu-nbd挂载虚拟机镜像文件系统

基本原理

nbd(网络块设备: Network Block Device),利用qemu-nbd将qemu虚拟机镜像挂载到Linux上。

一般步骤

  1. 加载 nbd 驱动(sudo modprobe nbd)

    1. 查看有没有加载nbd模块lsmod |grep nbd
    2. 加载nbd模块sudo modprobe nbd max_part=16
  2. 连接 qemu-nbd(sudo qemu-nbd -c nbd设备路径 虚拟机镜像路径)

    1. 查看分区: sudo fdisk -l nbd设备,可能虚拟机不止一个分区(一般还会有一个boot分区)
  3. 挂载(sudo mount nbd分区 挂载路径)

  4. 解挂(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

注意

  1. 一般如果虚机在运行中突然断电关机(比如直接杀死qemu进程或者用virsh destroy命令关闭),此时虚机文件系统可能损坏,这时候直接mount一般会出错,建议用-o ro,norecovery选项挂载
  2. 在卸载过程中需要考虑是否有进程正在占用文件,一般用fuser -k
  3. 注意mount和umount命令的用法

参考

挂载qcow2文件,qcow2里边还有个lvm

linux nbd & qemu-nbd

https://manpages.debian.org/testing/qemu-utils/qemu-nbd.8.en.html

通过qemu-nbd方式挂载qcow2镜像格式

于LVM和NBD实现网络远程LVM镜像方法

How to Mount Guest Qcow2 Virtual disk Image containing LVM on KVM Host Machine

posted @   main_c  阅读(850)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示