Назад | Перейти на главную страницу

Допустимые устройства cgroup для контейнера libvirt / lxc

Я хочу разрешить моим контейнерам 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

Однако у меня возникают некоторые трудности с установкой этого параметра по умолчанию для каждого контейнера.

Поиск в Google показывает, что изменение /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.

libvirt_lxc заполняет гостевой /dev дерево при запуске в соответствии с конфигурацией гостя. В документация говорит, что вы должны поместить конфигурацию в гостевой файл конфигурации XML. Использовать hostdev с "разным" 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.