如何挂载空的qcow2镜像?
如何挂载空的qcow2镜像?
Hey,我懂你遇到的麻烦了!你用guestmount -i挂载空qcow2镜像时触发的报错,本质原因很简单:空的qcow2镜像只是一块空白的块设备,里面压根没创建任何文件系统或操作系统,而-i选项是让工具自动检测镜像内的文件系统,自然啥也找不到,所以才会报错提示你手动指定。
下面分两种常见场景给你解决方案:
场景1:你想给空镜像创建文件系统后,挂载成可访问的目录
如果你的目标是让这个空镜像能像普通文件夹一样被读写访问,那得先给它创建文件系统,步骤如下:
用
guestfish给空镜像创建文件系统
先运行命令进入guestfish交互模式:guestfish -a test.qcow2然后在交互界面里依次执行以下命令:
run # 初始化并加载镜像设备 mkfs ext4 /dev/sda # 给默认的块设备创建ext4文件系统,你也可以换成xfs等其他格式 exit # 退出交互模式用guestmount挂载已创建文件系统的镜像
现在镜像里已经有了可识别的文件系统,就不用依赖-i自动检测了,直接指定文件系统所在的设备即可:guestmount -a test.qcow2 -m /dev/sda --ro /mnt/test_qcow/如果需要读写权限,去掉
--ro参数就行。
场景2:你只是想把空镜像映射成系统块设备(用于后续手动分区/格式化)
如果你只是需要把这个空qcow2镜像转换成系统里的一个块设备(方便后续自己分区、格式化),那可以借助nbd(Network Block Device)模块实现:
加载nbd内核模块
sudo modprobe nbd max_part=8将qcow2镜像映射到nbd设备
sudo qemu-nbd --connect=/dev/nbd0 test.qcow2现在
/dev/nbd0就对应你的空qcow2镜像了,你可以像操作普通U盘/硬盘一样,用fdisk分区、mkfs格式化它。使用完成后解除映射
sudo qemu-nbd --disconnect=/dev/nbd0
按照上面的步骤操作,应该就能解决你的问题啦!
备注:内容来源于stack exchange,提问作者MijatTomić




