Frage zum tmpfs und /lib/init/rw bzw. /dev/shm

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
jack88
Beiträge: 72
Registriert: 23.05.2008 18:50:25

Frage zum tmpfs und /lib/init/rw bzw. /dev/shm

Beitrag von jack88 » 18.01.2011 09:01:45

Hallo,

auf meinem Lenny sind unter anderen zwei tmpfs Dateisysteme gemountet:

Lenny1:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 4.0G 0 4.0G 0% /lib/init/rw
tmpfs 4.0G 0 4.0G 0% /dev/shm

Ich frage mich wofür die eigentlich benötigt werden und wieso sie bereits automatisch beim booten gemoutet werden obwohl in der fstab keine Einträge vorhanden sind?

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Frage zum tmpfs und /lib/init/rw bzw. /dev/shm

Beitrag von cosmac » 18.01.2011 12:03:07

hi,

/dev/shm steht für "shared memory", das sind Speicherbereiche, auf die mehrere Programme zugreifen können um Daten gemeinsam zu nutzen. Da das direkt im Hauptspeicher passiert, geht es schneller als über echte Dateien. Unter /dev/shm sind diese Bereiche nach außen sichtbar. Es ist zwar ein ziemlich spezieller Mechanismus, der nur von wenigen Programmen benutzt wird (z.B. Datenbanken), aber es ist ein POSIX-Standard und sollte deswegen auf jedem System vorhanden sein.

/lib/init/rw wird von (wenigen) init-Scripten gebraucht um temporäre Dateien anzulegen. Wenn das System startet, steht zunächst nur "/" zur Verfügung und das auch noch read-only. Verzeichnisse wie /tmp oder /var/run können also nicht benutzt werden; evt. liegen sie sogar auf anderen Partitionen, die noch nicht gemountet sind. Also wird als erstes ein tmpfs (eine bessere Ramdisk) unter /lib/init/rw eingerichtet. Damit ein beliebiges Init-Script auch im laufenden Betrieb noch genauso funktioniert, muss /lib/init/rw bis zum shutdown zur Verfügung stehen.

Man kann auch ohne Eintrag in /etc/fstab jederzeit beliebige Dateisysteme mounten, man muss dem mount-Befehl nur sämtliche Optionen auf der Kommandozeile mitgeben. So machen das die Init-Scripte für alle Dateisysteme, die überall auf die gleiche Art gemountet werden müssen (/proc und /dev/pts wären weitere Beispiele). Auf die Art bleibt /etc/fstab eine Art Merkzettel für die Besonderheiten eines Systems; wenn's keine gibt, läuft es sogar komplett ohne fstab.

Übrigens verbraucht ein tmpfs nur soviel RAM, wie tatsächlich Daten gespeichert sind, "df" zeigt die maximal erlaubte Größe an. Diese kann über Variablen in /etc/default/tmpfs eingestellt werden.
Beware of programmers who carry screwdrivers.

jack88
Beiträge: 72
Registriert: 23.05.2008 18:50:25

Re: Frage zum tmpfs und /lib/init/rw bzw. /dev/shm

Beitrag von jack88 » 18.01.2011 12:31:56

Super vielen Dank für diese ausführliche Antwort :-)

Meine Überlegung war nämlich tmpfs für temporäre Tabellen bei MySQL zu verwenden
und ich war mir nicht sicher ob ich dafür direkt /dev/shm benutzen könnte. Wenn ich es jedoch richtig
verstehe, dann spricht nichts dagegen.

Ich habe auch gelesen, daß tmpfs häufig für das /tmp-Verzeichnis verwendet wird.
Nun ist das bei meiner Debian-Installation nicht der Fall.
Ich frage mich ob es Sinn macht das dauerhaft zu ändern und
welche Vor-und Nachteile damit möglicherweise verbunden wären?

pferdefreund
Beiträge: 3800
Registriert: 26.02.2009 14:35:56

Re: Frage zum tmpfs und /lib/init/rw bzw. /dev/shm

Beitrag von pferdefreund » 18.01.2011 13:12:41

Je mehr da reingeschrieben - und nicht gelöscht wird bis zum nächsten Reboot, um
so weniger Ram bleibt natürlich für die Anwendungen. Das muss man abwägen...

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Frage zum tmpfs und /lib/init/rw bzw. /dev/shm

Beitrag von cosmac » 19.01.2011 11:29:42

jack88 hat geschrieben:Meine Überlegung war nämlich tmpfs für temporäre Tabellen bei MySQL zu verwenden
und ich war mir nicht sicher ob ich dafür direkt /dev/shm benutzen könnte.
Es ist eher eine moralische als eine technische Frage, in /dev/shm tauchen normal nur die shared memory Segmente auf, gemischt mit normalen Dateien ist es ein wenig unübersichtlich. Ein zusätzliches tmpfs, entweder für /tmp oder rein für MySQL, kostet so wenig...

:!: /lib/init/rw ist allerdings noch schlechter geeignet, weil es nicht zukunftssicher ist. Es kann mit dem nächsten Update in der Größe begrenzt werden oder sogar ganz verschwinden, falls jemand eine bessere Lösung für die init-Scripte hat.
Beware of programmers who carry screwdrivers.

Antworten