Dienstag, 12. August 2008

Ramdisk mit ramfs

Tach,

wie man sich denken kann, sind Zugriffe auf den Arbeitsspeicher sehr viel schneller als Zugriffe auf die Festplatte.. warum also Dateien, auf die oft zugegriffen wird, nicht in den Arbeitsspeicher packen?
Kandidaten wären zum Beispiel der Ordner (oder Teile davon) der Http-Dateien oder aber auch die Session-Daten von PHP.

Dies geht sehr schön mit dem ramfs Dateisystem (ab Kernel 2.4).

Zuerst Vereichnis anlegen, dann Dateisystem mounten

# mkdir /RAM1
# /bin/mount -t ramfs none /RAM1 -o maxsize=10000

(das wars schon)

Nun haben wir eine Ramdisk mit 10MB Platz. Dieser Ordner lässt sich nun wie jeder andere Ordner auch behandeln. Wenn wir nun beispielsweise die PHP-Sessiondaten hier speichern wollen geben wir in der php.ini einfach session.save_path = "/RAM1" an.
"maxsize" gibt es laut Manpage übrigens nicht, soll aber wohl funktionieren (siehe Quellen) :)

Der Vorteil bei der Anwendung von ramfs liegt darin, dass - egal welche Größe man festlegt - nur so viel Speicher benutzt wird wie gerade benötigt. Also hat man nur 3MB Daten im obigen Beispiel, so benutzt das System die verbleibenden 7MB.

Wenn man die http Daten dort speichern möchte, muss man darauf achten, dass diese Daten bei einem Neustart des Rechners oder beim unmounten der Partition weg sind. Es lohnt sich also nur bei Dateien die nicht verändert werden oder unwichtig sind.

Ein Initskript, welches beim Systemstart ausgeführt werden kann um eine Ramdisk zu erstellen und den Http-Ordner dorthin zu kopieren, könnte so aussiehen:

#!/bin/sh
/bin/mount -t ramfs none /RAM1 -o maxsize=10000
/bin/cp -r -p /srv/www/htdocs /RAM1


schöner Artikel zum Thema: http://www.linuxfocus.org/Deutsch/July2001/article210.shtml

Keine Kommentare: