Lagern von Dateien/Verzeichnissen im Arbeitsspeicher mit tmpfs

Übersetzung der Seite: http://www.howtoforge.com/storing-files-directories-in-memory-with-tmpfs

Ich gebe keine Garantie auf Richtigkeit. Das Original wurde von Falko Timme erstellt.

Du weist sicher, dass das lesen vom RAM bedeutend schneller ist als das Lesen von der Festplatte, und die Ein/Ausgänge deiner Festplatte verkleinert werden. Dieser Artikel zeigt, wie man Dateien und Verzeichnisse im Arbeitsspeicher lagert anstatt auf der festplatte mit hilfe von tmpfd  (Ein Dateiensystem welches devices erstellt). Das ist ideal für Dateien zwischenspeicher oder andere temporäre dateien. (fast wie PHP's Sitzungs-dateien wenn du session.save_handler = files benutzt)weil die Datei verloren geht, wenn du das System ausschaltest oder rebootest.

Ich gebe keinerlei Garantie, das es bei dir funktioniert

Benutzung von tmpfs

Es gibt einen Standard-Speicher auf jedem Linuxsytem (ausgenommen sind ein paar virtuelle maschienen - das hängt von der Virtualisierungstechnologie ab)  - /dev/shm.

Wenn du

mount


startest, sollte du etwas wie das hier sehen:

tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)


Standardmäßig sollte es die hälfte des Systemspeichers sein (du kannst dir seine aktuelle größe mit diesem Befehl anschauen)

df -h /dev/shm


-Wenn du also 4 GB RAM hast,sollte die aktuelle größe bei ca.2GB liegen.

Du kannst /dev/shm benutzen als wär es eine normale festplatte, zum Beispiel kannst du eine datei darauf packen:

cp -af test.tar.gz /dev/shm/


Und siehe da, die Datei ist im Speicher gelagert:

ls -la /dev/shm/


server1:/# ls -la /dev/shm/
total 316
drwxrwxrwt 18 root root    380 2008-11-27 16:06 .
drwxr-xr-x 12 root root   3780 2008-11-27 15:33 ..
-rw-r--r--  1 root root 311636 2003-04-02 20:00 test.tar.gz
server1:/#

(Bitte lass dir klar sein, das die Datei verloren geht, sobald du das System ausgeschalten hast oder neustartest!)

Wenn du möchtest, kannst du die größe verändern /dev/shm, zum Beispiel wie Folgt:

mount -o remount,size=3G /dev/shm


(Gehe das ganze mit Vorsicht an - wenn du es zu groß machst und all der Speicher belegt ist, ist nur noch ein geringer Arbeitsspeicher für dein System übrig. Das kann schwere Folgen haben!)

Nun lass uns annehmen, das du eine Art Zwischenspeicher für deine Webseite mit sehr hohem Traffic im Verzeichnis /var/www/www.example.com/cache erstellen möchtest. Klar es würde gut sein, dieses cache im Arbeitsspeicher zu haben.

So gehts:

Als erstes erstelle ein Cache-Verzeichnis:

mkdir -p /var/www/www.example.com/cache


(Falls nötig, kannst du den Benutzer ändern z.B wie hier:

chown proxy:proxy /var/www/www.example.com/cache


)

Nun hängen wir das Verzeichnis als einen Arbeitsspeicher ein (mit einer Größe von 100MB und Zugriffsrechten von 755):

mount -t tmpfs -o size=100M,mode=0755 tmpfs /var/www/www.example.com/cache


Schau hier

mount


... und du solltest das sehen:

tmpfs on /var/www/www.example.com/cache type tmpfs (rw,size=100M,mode=0755)


Das wars - Nun kannst du die Dateien direkt im Arbeitsspeicher lagern.

Wenn du das verzeichnis wärend du bootest schon eingehängt haben willst, edititiere /etc/fstab...

vi /etc/fstab


... und hänge sowas wie hier an die Datei:
[...]
tmpfs /var/www/www.example.com/cache tmpfs size=100M,mode=0755 0 0 [...]

Links

0 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: rini90