ubuntu20.04挂载qcow2磁盘镜像

在主机系统挂载qcow2磁盘镜像后,无需登录虚拟机就可以直接浏览磁盘镜像的文件系统。可通过以下两种方法来进行挂载操作。

方法一:qemu-nbd

1.安装qemu-nbd命令行工具

$ sudo apt install qemu-utils 

2.将qcow2磁盘镜像导出到磁盘

$ sudo modprobe nbd max_part=8    					#加载 nbd 内核模块。"max_part=N" 选项指定我们想要通过 nbd 管理的分区的最大个数。
$ sudo qemu-nbd -c /dev/nbd1 /XXX/XXX/imgname.qcow2	#磁盘镜像导出为网络块设备(/dev/nbd0,/dev/nbd1,/dev/nbd2等块设备中未使用的块)

3.挂载qcow2磁盘镜像分区

$ sudo fdisk -l | grep /dev/nbd  					#查看导出后的磁盘分区
Disk /dev/nbd1:40 GiB,42949672960 字节,83886080 个扇区
/dev/nbd1p1         2048  4194303  4192256   2G  e W95 FAT16 (LBA)
/dev/nbd1p2      4194304 83886079 79691776  38G 83 Linux

$ sudo mkdir /mnt/nbd1 /mnt/mbd2  					#创建2个目录准备挂载/dev/nbd1p1和/dev/nbd1p2这两个分区。

$ sudo mount /dev/nbd1p1 /mnt/mbd1   				#挂载/dev/nbd1p1
$ ls /mnt/nbd1/   									#查看/dev/nbd1p1分区中的文件
config-4.19.90-2106.3.0.0095.oe1.x86_64         loader
dracut                                          symvers-4.19.90-2106.3.0.0095.oe1.x86_64.gz
efi                                             System.map-4.19.90-2106.3.0.0095.oe1.x86_64
grub2                                           vmlinuz-4.19.90-2106.3.0.0095.oe1.x86_64
initramfs-4.19.90-2106.3.0.0095.oe1.x86_64.img

$ sudo mount /dev/nbd1p2 /mnt/nbd2   				#挂载/dev/nbd1p2
$ ls /mnt/nbd2/   									#查看/dev/nbd1p2分区中的文件
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

3.断开磁盘镜像的链接

$ sudo umount /mnt/nbd1 /mnt/nbd2  					#取消挂载
$ sudo qemu-nbd -d /dev/nbd1						#取消镜像链接
/dev/nbd1 disconnected

方法二: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

你可能感兴趣的:(Linux学习,linux,qemu)