Jails - Ressourcenverbrauch

bananenBrot

Well-Known Member
Hi!
Ich überlege derzeit auf meinem privaten Server mit Jails zu experimentieren. Jedoch habe ich auf diesem recht begrenzte Ressourcen und frage mich, wie das mit dem Speicherverbrauch (RAM) aussieht.
Klar, wenn in jeder Jail ein sshd läuft, wird für jeden explizit Speicher benötigt werden (das sich die Prozesse Speicher teilen schließe ich mal aus) aber wie sieht es bei einer "leeren" Jail aus?

Danke!
 
Der Resourcenverbrauch ist zu vernachlaessigen.
Ich selbst nutze praktisch fuer jeden Dienst eine einzelne Jail, um ihn einerseits abzuschotten und auf der anderen Seite das Paketupdatewirrwarr zur vereinfachen.

LG
 
Der Grundverbrauch pro Jail sind ein paar hundert Kilobyte. Mir schwirrt gerade was von 350kb im Kopf rum, aber das jetzt ohne Beleg.
 
Eigentlich wurde schon alles gesagt. Trotzdem noch einmal etwas ausführlicher: Seitdem mit FreeBSD 8.0 das neue Jail-Framework eingeführt wurde, befindet man sich immer in einem Jail. Der Host ist das spezielle und uneingeschränkte Jail 0. Das zur Zuordnung eines Prozesses zu einem Jail genutzte Feld in der Prozesstabelle ist also immer belegt. Der einzige direkte Overhead ist also ein weiterer Eintrag in der Jail-Liste. Da es eine recht umfangreiche Struct ist, können es auch schon ein paar einhundert Kilobyte sein. Insgesamt aber sowenig, dass es vernachlässigbar ist.

Der eigentliche Overhead kommt aus dem Inhalt des Jails selbst. Der normal faule Admin wie ich nutzt ja vollständige FreeBSDs als Jail, startet also auch die diversen Dienste des Basissystems wie sshd, syslogd, devd, sendmail und so weiter mit. Das braucht dann RAM. Rein technisch gesehen ist das aber gar nicht notwendig. Ein Jail kann auch nur einen einzigen Prozess beinhalten, z.B. eine statisch gelinkte Binary. Inzwischen gibt es auch einige Tools wie hastd(8), die sich nach dem Start selbst jailen. Kurz gesagt ist der Ressourcenverbrauch eines Jails also hauptsächlich davon abhängig, wie du das Jail selbst aufbaust.
 
Also in der Tat haben die Jails die ich erstellt habe keine nenenswerte Auswirkungen auf den Speicherverbrauch. Top! Klasse! Hätte ich viel früher probieren sollen.
Nur leider bekomme ich in den Jails keine raw sockets

root@lapaloma4 # sysctl security.jail.allow_raw_sockets
security.jail.allow_raw_sockets: 1

root@testjail:~ # ping heise.de
ping: socket: Operation not permitted

Macht das eigentlich Sinn, nach der Installation direkt Dienste nur in Jails zu packen und das "Basissystem" schmal zu halten?
Im Prinzip klingt es sauberer aber wenn ich dann 3 Jails hab (einen mit apache, einen mit DNS und einen mit mail) dann muss ich bei nem update ja alle 3 anfassen
 
Macht das eigentlich Sinn, nach der Installation direkt Dienste nur in Jails zu packen und das "Basissystem" schmal zu halten?
Im Prinzip klingt es sauberer aber wenn ich dann 3 Jails hab (einen mit apache, einen mit DNS und einen mit mail) dann muss ich bei nem update ja alle 3 anfassen

Also ich habe ich einen möglichst schmalen Host und das meiste ausgegliedert. Ich finde das sehr praktisch.
Der Nachteil ist natürlich, dass man jede Jail aktualisieren muss. Daher teilweile auch das selbe Paket mehrmals. Dadurch, dass man pro Jail nicht so extrem viele Pakete hat gibt es da aber recht selten Probleme.
Vorteilhafte finde ich dabei aber, dass durch minimale Anzahl Pakete im Host dieser seltenst Probleme macht und Updates selten sind. (Sprich auch wenn irgendwas schief geht, der Host läuft zumindest hoch). Sollte doch mal ein Paket Probleme machen dann hab ich nicht gleich Probleme mit allem Kram sondern nur mit dem Einen "Mikrosystem". ;)
 
Seit FreeBSD 9.2 sind Raw Sockets kein globales Sysctl mehr, stattdessen ein Flag was in der /etc/jail.conf per Jail gesetzt werden kann:
Code:
allow.raw_sockets;
Wenn du noch keine jail.conf nutzt (sie ist allerdings sehr zu empfehlen), musst du es per rc.conf-Parameter setzen:
Code:
jail_parameters="allow.raw_sockets"

Das rc-Script unter FreeBSD 9.x unterstützt dort noch keine jail.conf, weshalb du meinen sysutils/jails2 Port nutze müsstest.
 
Zurück
Oben