我有一些虚拟机。我想编写一个自动执行以下过程的脚本......
因为,我正在使用libvirt,我有一些虚拟机的qcow2图像。要将图像挂载到我的ubuntu上,我正在使用nbd模块。以下是我正在尝试的命令:
modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 image.qcow2
mount /dev/nbd0p1 /mnt/image
它给了我错误:
mount: special device /dev/nbd0p1 does not exist
当我用nbdo替换nbd0p1时,我收到以下错误(虽然我不确定我想要做什么)
mount: you must specify the filesystem type
任何建议以及可能出现的问题......?
答案 0 :(得分:4)
检查/sys/modules/nbd/parameters/max_part
是否具有预期值。如果它为0或太低,则内核将无法使用分区/dev/nbd0p1
等。如果在运行nbd
时已加载max_part
内核模块(使用不同的modprobe
参数),则会发生这种情况。
你可以通过卸载模块并再次修改它来解决这个问题。
答案 1 :(得分:3)
[不是问题的直接答案,而是替代方案]
您可以尝试将qcow2图像转换为raw,然后安装原始图像。
转换:
qemu-img convert -f qcow2 image.qcow2 -O raw image_raw.raw
安装:
sudo losetup /dev/loop0 image_raw.raw
sudo kpartx -a /dev/loop0
sudo mount /dev/mapper/loop0p3 /mnt/image
sudo mount /dev/mapper/loop0p2 /mnt/image/boot
答案 2 :(得分:1)
可能是分区不在MBR的第一个插槽中,还是正在使用扩展分区?检查是否正在创建任何其他nbdXpY
设备节点,或在其上运行fdisk
并p
打开分区表。
答案 3 :(得分:1)
我偶然发现了同样的问题和相同的错误,但是在vdi上
qemu-nbd -c /dev/nbd0 image.vdi
对我来说解决方案很简单我刚刚将nbd0
更改为nbd1
qemu-nbd -c /dev/nbd1 image.vdi
然后:
sudo mount /dev/nbd1p1 /media/eddie/virtual
的工作。
如果这对您有用,请发表评论以及图片的类型。