我想允许我的 libvirt/lxc 容器使用 tun/tap 设备。为了做到这一点,我可以通过以下方式将正在运行的容器添加到允许的设备中:
# echo "c 10:200 rwm" > /sys/fs/cgroup/devices/libvirt/lxc/client-1/devices.allow
导致:
# cat /sys/fs/cgroup/devices/libvirt/lxc/client-1/devices.list
c 1:3 rwm
c 1:5 rwm
c 1:7 rwm
c 1:8 rwm
c 1:9 rwm
c 5:0 rwm
c 5:2 rwm
c 136:* rwm
c 10:200 rwm
然而,我在将其设为每个容器的默认设置时遇到了一些困难。
谷歌搜索显示,改变/etc/cgconfig.conf到
group libvirt/lxc {
devices {
devices.allow="c 10:200 rwm";
}
}
应该可以修复,但是没有修复(即使按照所有可能的顺序重新启动了相关服务 -libvirtd、cgconfig)
玩了一下cgroup.clone_children设置但没有帮助。
我的问题是:
1 如何将此设备添加为每个 libvirt/lxc 容器的默认允许设备?
2 哪个进程负责默认允许列表?
c 1:3 rwm
c 1:5 rwm
c 1:7 rwm
c 1:8 rwm
c 1:9 rwm
c 5:0 rwm
c 5:2 rwm
c 136:* rwm
所有软件包均来自最新的 Fedora 18 系统。
答案1
/dev
libvirt_lxc根据客户机的配置在启动时填充客户机树。文档表示您必须将配置放入来宾的 XML 配置文件中。使用hostdev
带有“misc”的type
,并将其source
指向char
处的设备/dev/net/tun
。
该代码片段应如下所示:
...
<devices>
...
<hostdev mode='capabilities' type='misc'>
<source>
<char>/dev/net/tun</char>
</source>
</hostdev>
</devices>
...
要编辑客户的 XML 文件,请使用virsh
。对于本地实例,请使用以下命令:
virsh -c lxc:/// edit GUESTNAME
我可以确认它可以与 libvirt-1.2.1 一起使用。