[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cgroup y lxc



El Mon, 15 de Dec de 2014, a las 04:06:45PM +0000, Camaleón dijo:

> Pues la verdad es que no :-P pero si no he entendido mal la problemática, 
> te digo lo que probaría...
> 
> 1/ Usuarios en lugar de grupos:
> 
> perico:lxc-start * lxc/%u
> pantuflo:lxc-start * lxc/%u
> 
> 2/ UID en lugar de nombres:
> 
> @lxc:lxc-start * lxc/%U

En realidad no parece que en ello esté el problema: de hecho, mientras uso
sleep todo va bien. Es al usar lxc-start cuando se descuajeringa todo.
No parece fallar cuando el criterio es simplemente

@lxc   *  lxc/%u

O sea, cualquier proceso que arranque un usuario que pertenezca a lxc,
sea el que sea.

Pero no he sido exhaustivo en las pruebas.

> 3/ No sé si será posible pero sería interesante aumentar la verbosidad 
> del registro para ver por qué no puede crear el contenedor (¿permisos?).

No, no tiene nada que ver con permisos. Tiene que ver con que
cgrulesengd deja de hacer su trabajo. Después de enviar el mensaje,
arranqué el demonio cgrulesengd en primer plano y con el máximo de
verborrea:

# cgrulesengd -d

Se puede ir viendo cómo el demonio analiza los procesos que ejecuto y
comprueba si concuerdan o no con alguna regla de las escritas en
/etc/cgrules.conf. Todo marcha bien, hasta que ejecuto "lxc-start": ese
proceso también sufre "supervisión" y aparentemente sin problemas, pero
a partir de ese momento, el demonio se queda tonto: arranque lo que
arranque después, no analiza nada. La consecuencia es que los procesos
acaban en el cgroup que está el bash en que se ejecutan, o sea, el
cgroup raíz.

Tiene pinta de ser un bug. Acabo de hacer una consulta en la lista de
usuarios de lxc. Como participan los desarrolladores, quizás me puedan
arrojar luz sobre el asunto. A ver qué saco en claro. Como sea bug, mi
gozo en un pozo, porque jessie ya está congelada.

Es una pena, porque lo tengo todo preparado: cambié la creación del
cgroup de usuario, y en vez de hacerla en /etc/profile la hago a través
de un script que se ejecuta con pam_exec: al identificarse el usuario,
se crea si no existe, y al abandonar la sesión se destruye, si no tiene
ninguna otra sesión abierta.

Mi idea es montar todo esto en un servidor que a través de ssh (con
ForceCommand y un script adecuado) permita a los alumnos entrar
exclusivamente en contenedores linux: como cada uno tiene un cgroup
independiente puedo limitar la memoria que me consuman con sus linuces
virtuales; y, como todos los contenedores están contenidos dentro de
"lxc", la memoria total que consumen entre todos. Con los ciclos de cpu
puedo hacer otro tanto. Y para limitar el disco, ya me apaño con los
subvolumenes de btrfs.  Lo que no he investigado es si se puede limitar
el ancho de banda. Quizás haya alguna forma con tc.

> Saludos,

Saludos y gracias.

-- 
   Patrimonio es un conjunto de bienes, matrimonio es un
conjunto de males.
                  --- Enrique Jardiel Poncela --


Reply to: