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

Re: Konflikt zwischen lxc und cgroup-bin



Am Sonntag, 3. Juli 2011 schrieb Michael Hierweck:
> Hallo allerseits,

Hi Michael,
 
> offenbar gibt es Konflikte zwischen lxc und cgroup-bin. Ich konnte
> diese nicht abschließend lösen, so dass ich nur entweder lxc oder
> cgroup-bin einsetzen kann.

Zunächst einmal: Die Userspace-Seite der cgroups ist noch sehr jung und 
meines Erachtens noch nicht ausgereift. Und das hat meines Erachtens recht 
wenig mit Debian zu tun. Das dürfte anderswo auch so sein.

Insbesondere mit Debian Squeeze nicht. Wenn Du Bleeding Edge einsetzen 
möchtest, empfehle ich Dir, auch die jeweils *neuesten* Paketversionen 
einzusetzen, rückzuportieren.

> * Lxc verweigert in jedem Fall den Start eines Containers, wenn
> cgroup-bin alle Prozesse in die Gruppe sysdefault verschiebt. Diea
> lässt sich duch eine Änderung in /etc/default/cgconfig abstellen. Der
> Standardwert ist meiner Ansicht nach unglücklich gewählt.

Nennt Lxc einen Grund dafür? Gibt es eine Fehlermeldung?

> * cgroup-bin mountet nach /mnt/cgroup/cpu, /mnt/cgroup/devices usw.,
> trägt diese mounts allerdings nicht nach /etc/mtab ein. Lxc verweigert
> dann die Arbeit und weist an, cgroups an geeigneter Stelle zu mounten.

Schön länger nicht mehr:

merkaba:~> grep cgroup /proc/mounts
cgroup /sys/fs/cgroup cgroup rw,relatime,cpu 0 0
cgroup /sys/fs/cgroup/cpuacct cgroup rw,relatime,cpuacct 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,relatime,devices 0 0

Mit cgroup-bin 0.37.1-1 aus unstable, systemd mountet die cgroups AFAIR 
auch unterhalb /sys/fs/cgroup. Das geht meines Wissens aber nur mit 
hinreichend aktuellen Kernel, weil sonst Mounts in das /sysfs nicht 
möglich sind oder irgendetwas in der Art.

/etc/mtab ist seit systemd mehr oder weniger deprecated. In Symlink auf 
/proc/self/mounts müsste funktionieren. Ist hier aber auch noch nicht 
geschehen. Hab aber auch systemd derzeit nicht drauf. Das ist nämlich für 
Debian zumindest auch noch nicht so ganz fertig, finde ich.

> * Kopiert man /proc/mounts nach /etc/mtab, so erkennt lxc, dass cgroups
> gemountet sind, kommt aber nicht damit klar. Lxc scheitert dann daran,
> dass es die Prozesse-ID des Containers nicht von /mnt/cgroup/<pid> nach
> /mnt/cgroup/<name> verschieben/umbenennen kann.

Fehlermeldung?

Bitte immer Fehlermeldungen angeben oder explizit sagen, dass es keine 
gab. Nachfragen kosten Zeit.

Ggf. auch mal in Protokoll-Dateien schauen.

> Insgesamt habe ich den Eindruck, dass die Handbabung von cgroups unter
> Debian Squeeze wenig "abgestimmt" erfolgt, wenn mehrere Pakete Gebrauch
> von cgroups machen. Offenbar treffen verschiedene Pakete
> widersprüchliche Annahmen.

Willkommen als Betatester. ;) Das ist einfach Bleeding Edge, jeder baut es 
ein, doch die Koordination steht noch aus. Das ist sicherlich kein Debian 
spezifisches Problem. Mit anderen Worten: Das ist noch nicht fertig. Das 
ist zumindest meine Einschätzung dazu.

Und ich gehe auch davon aus, dass es innerhalb Debian Stable nicht gelöst 
ist. Du wirst Backports oder Wheezy/Sid brauchen.

> Ich würde gern einen Bug-Report schreiben, bin aber unsicher, welches
> Paket hier konkret die Schuld trifft. Generell wäre der richtige Ansatz
> vermutlich, eine Strategie für das cgroup-Handling festzulegen,
> zulässige Annahmen, und einige Vorgaben etc. definieren und alle Pakete
> mit cgroup Nutzung dagegen zu testen und anzupassen.
> 
> Ich bin mir auch unsicher, wie "schwerwiegend" dieser Fehler ist.
> Grundsätzlich handelt es sich um einen schweren Fehler handeln, weil
> die Installation von cgroup-bin dazu führt, dass lxc aufhört zu
> arbeiten. Andererseits tendiere ich dazu, dies auf eine fehlerhafte
> Implementation von lxc zurückzuführen, welches unzulässige Annahmen
> trifft. Der Fehler ist mindestens "important".
> 
> Man kann aber auch eine "Policy Violation" darin sehen, weil lxc und
> cgroup-bin "de facto" durch den Fehler (ungewollt) im Verhältnis
> "conflicts" oder "breaks" zueinander stehen, dann wäre es "serious".
> "critical" wäre vielleicht etwas weit hergeholt, da der Schaden an den
> lxc-Container durch Deinstallation rückgängig gemacht werden kann.

Ich würd *irgendwo* anfangen. Der Maintainer kann den Bug dann immer noch 
woanders hin verschieben. Ich tendiere zu lxc, wenn lxc auf die Schnauze 
fällt, wenn die cgroup-Dateisysteme anderswo gemountet sind. Idealerweise 
würde es einfach schauen, wo sie gemountet sind oder meinetwegen sie 
doppelt mounten, das geht glaub auch und man müsste dann jeweils die 
gleiche Sicht sehen. Besser ist jedoch, /sys/fs/cgroup zu verwenden. Das 
scheint sich als Standard herauszukristallisieren.

Bevor Du irgendwo anfängst, stelle aber sicher, dass Du die *neuesten* 
Version von allem cgroup-bezogenen hast, was Du einsetzt. Und am besten 
auch einen Kernel, der etwas neuer als 2.6.32 ist.

Wenn Dir das zu aufwändig ist, dann lasse lieber die Finger von Control 
Groups. Zumindest solange Du Squeeze einsetzt.

Bevor Du Fehlerberichte erstellst, gucke immer, welche es schon gibt. Und 
am besten: Berichte gleich Upstream oder leite den Debian-Bugreport 
Upstream weiter. Und poste mal die Links zu Deinen Bug-Reports hier ;).

-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7


Reply to: