对于某些项目,我需要具有原始磁盘映像的 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 驱动器归我的标准用户帐户和组所有。我相信有更好的方法可以做到这一点,但这对我来说是有效的。