我有一个全新安装的 Open Nebula 3.2.1,我正在尝试让它运行并管理一些新安装的 debian squeeze kvm 主机。
我的问题是,当 Open Nebula 部署虚拟机时,KVM 进程无法访问/dev/kvm
主机上的设备。
我已根据文档设置了所有内容:
root@onhost1:~# ls -al /dev/kvm
crw-rw---- 1 root kvm 10, 232 Feb 8 11:24 /dev/kvm
root@onhost1:~# id oneadmin
uid=500(oneadmin) gid=500(oneadmin) groups=500(oneadmin),106(kvm),108(libvirt)
libvirt/qemu.conf has:
user = "oneadmin"
group = "oneadmin"
当 libvirt 创建虚拟机时,它们没有设置任何辅助组,因此进程无法/dev/kvm
通过文件权限进行访问。好吧,这很公平,尽管 Open Nebula 文档似乎表明应该以这种方式进行设置。
我尝试挂载 cgroup 来解决这个问题。挂载后,kvm 进程有以下 cgroup 条目:
1:devices,cpu:/libvirt/qemu/one-29
对应于:
/dev/cgroup/libvirt/qemu/one-29/devices.list:c 10:232 rwm
我对 cgroups 的工作方式缺乏了解,这告诉我这应该允许该进程访问/dev/kvm
,但却不行。
我可以通过添加 ACL 条目 ( setfacl -m u:oneadmin:rw /dev/kvm
) 来使它正常工作,但这似乎不对。Open Nebula/libvirt 不应该处理这个问题吗?
- 需要做出哪些正确的改变?
- 是否应该更改文档?
- 我是否遗漏了什么?
答案1
尝试将 libvirt/qemu.conf 更改为:
user = "oneadmin"
group = "kvm"