我在设置脚本以启动kvm实例时遇到了一些奇怪的行为,我希望你们都可以权衡这里发生的事情 .
安装程序:我有一个使用virt-install启动kvm的脚本 .
virt-install ... --disk=image.qcow2 ...
我想在不同版本的image.qcow2上运行相同的脚本,所以我创建了一个到我最新图像的符号链接 .
我的目录结构看起来像这样:
startKvm.sh
image.qcow2 -> image_v2.0.qcow2
image_v2.0.qcow2
image_v1.0.qcow2
但是,当我尝试运行virt-install命令时,它返回以下错误 .
ERROR内部错误:连接到监视器时退出进程:datetime qemu-kvm:-drive file = / path / image.qcow2,if = none,id = drive-ide0-0-0,format = qcow2:无法打开磁盘image /path/image.qcow2:无法打开文件:权限被拒绝
关于原因和替代解决方案的想法?
1 回答
我有类似的想法使用符号链接,但在我的场景中,我通过SSH运行
virt-manager
,X转发作为wheel(admin)组中的用户 . 创建虚拟客户机会产生相同的错误:事实上,问题是权限 . 使用
qemu-kvm
设置.iso映像时,它会在部署时将其所有权更改为用户/组qemu . 我们需要确保用户qemu在整个文件路径中具有访问权限 .测试用例
用户运行
virt-manager
:yahol(wheel / admin group)Iso或qcow2图像位置:
/home/yahol/isos/archlinux-2018.02.01-x86_64.iso
注意:请忽略时间戳,因为我在2天内将这个答案整合在一起 . 已经很晚了,我太累了,不能在前一天完成它 .
从用户主目录中的图像开始:
在KVM映像的默认路径中以root身份创建符号链接:
Symlink属于用户root,而实际文件仍然具有普通用户的用户/组 . 通过
virt-manager
设置和部署虚拟机 . 注意图像文件的用户/组如何更改为qemu:此时,VM管理器,无论是
virt-manager
还是virt-install
,都会引发上述错误 . 发生这种情况是因为用户qemu无法访问完整路径 . 用户yahol的主目录只能由用户yahol访问:现在让我们创建qemu具有完全访问权限的另一条路径:
这非常好用,虚拟机已经部署并且正在运行 .
可能的解决方案:
WARNING: 这可能会产生安全隐患!
摘要:
即使所有内容都由具有root权限的用户完成,使用VM映像的实际用户也是qemu . 将qemu添加到wheel组仍然需要提供进行身份验证的方法,因为它是一个无登录用户,所以它可能很棘手 .