是否可以从位于外部闪存驱动器上的原始磁盘映像运行 qemu-system-x86_64 虚拟机?

是否可以从位于外部闪存驱动器上的原始磁盘映像运行 qemu-system-x86_64 虚拟机?

对于某些项目,我需要具有原始磁盘映像的 QEMU/KVM 虚拟机。
因此,我创建了这个原始磁盘映像,非常简单,如下所示

dd if=/dev/zero of=~/disk.img bs=1M count=3092

并拥有 3 Gb 的空间。

然后,我使用我的普通帐户在 Ubuntu 16.04 LTS 上从虚拟机管理器 ( ) 设置了新的虚拟机virt-manager。因此,我已从迷你iso在里面~/磁盘.img。我的用户是该组的成员libvirtd。当虚拟磁盘映像位于我的主文件夹内时,我可以启动虚拟机。

然后我将这个文件移动到外部 FAT32(vfat) 以读写方式安装的介质。因此它位于/media/用户名/FLASH/disk.img。我在虚拟磁盘虚拟机的设置部分。

但是当我尝试启动这台机器时收到以下错误消息:

启动域时出错:内部错误:连接监视器时进程退出:2020-01-22T21:45:20.221697Z qemu-system-x86_64:-drive file=/media/username/FLASH/disk.img,format=raw,if=none,id=drive-ide0-0-1:无法打开'/media/username/FLASH/disk.img':权限被拒绝

即使我使用 以 root 身份运行虚拟机管理器,此消息仍然存在sudo virt-manager

该文件的权限如下:

$ ls -al /media/username/FLASH/disk.img 
-rw-r--r-- 1 username username 3221225472 Jan 23 00:18 /media/username/FLASH/disk.img

我还尝试使用 创建符号链接,ln -s /media/username/FLASH/disk.img ~/disk.img并将机器设置为使用后者的磁盘路径。但它也不起作用。

如何从位于外部存储上的磁盘映像启动 QEMU/KVM 虚拟机?

答案1

当我从拇指驱动器运行虚拟机时遇到了这个权限问题。

我遇到的问题是我的系统(Fedora 27)会自动将新驱动器(外部硬盘、USB、SD)安装到

/run/media/(username)/(device name)(在您的系统上它是 /media/username/....)

无论出于什么原因,这都会导致权限问题。默认情况下,它是使用fmask=0022和安装的dmask=0022(使用man mount了解详情)。要修复此问题,我们需要以 root 身份从该位置卸载驱动器,然后将其安装到/mnt。在下面的示例中,拇指驱动器是/dev/sdc1。我们需要将其重新安装为fmask=0011允许所有用户和组进行写访问。

# su  -     (then enter root password)
# umount  /run/media/yourusername/devicename
# mount  /dev/sdc1 /mnt -o fmask=0011        (mount usb to /mnt)

之后我只需确保从 qcow2 驱动器的原始位置到新位置有符号链接(仍然以 root 身份)

# cd  /var/lib/libvirt/images
# ln  -s  (new target)  (link name)   

因此如果你的虚拟机名为 MyVM

# ln  -s  /mnt/Myvm.qcow2  MyVm.qcow2

当我看到我的虚拟机现在可以正常工作时,我进行了编辑/etc/fstab以自动将驱动器挂载在/mnt。文件夹和 qcow2 驱动器归我的标准用户帐户和组所有。我相信有更好的方法可以做到这一点,但这对我来说是有效的。

相关内容