Linux-Server: Unnötige Dateien mit tmpfs vom Storage fernhalten
Der Linux-Kernel stellt ramfs und tmpfs bereit, um damit RAM-Disks zu realisieren. Das Dateisystem liegt hier im Arbeitsspeicher und entlastet das Storage.
Manche Programme brauchen Platz, um Dateien temporär auf einem Linux-Server zu speichern. Mithilfe eines Dateisystems im Arbeitsspeicher des Servers halten Sie dem „Festplatten“-Storage den Rücken frei und es kann sich um andere Aufgaben kümmern.
Eine RAM-Disk für Verzeichnisse und Dateien zu verwenden, die Sie nicht dauerhaft brauchen, hat zwei Vorteile: Es ist rasend schnell und verhindert, dass sich unnötiger Datenmüll auf dem Server sammelt.
Es gibt viele Verzeichnisse unter Linux, für die sich RAM-Disks eignen. Dazu gehört das Verzeichnis mit der Drucker-Warteschlange. Denkbar ist auch eine wichtige Applikation, die eine Laufzeit-Umgebung mit vielen temporären Dateien erstellt. Nach einem Herunterfahren des Servers, sind diese Dateien obsolet, belegen aber weiterhin Platz.
Wir nennen es RAM-Dateisystem. In Wirklichkeit handelt es sich um ein imitiertes Gerät, das Sie wie ein echtes Dateisystem adressieren können. Sie brauchen es aber nicht zu formatieren. Sie müssen lediglich einen Einhängepunkt (Mount Point) mit dem RAM herstellen. Die sich darin befindlichen Dateien sind so lange wie notwendig vorhanden.
Der Linux-Kernel stellt zwei Möglichkeiten zur Verfügung, eine RAM-Disk zu erstellen: ramfs und tmpfs. Sehen wir uns zunächst ramfs an, weil damit die Vorteile von tmpfs klarer werden.
Mit dem Befehl mount -t ramfs none /tmp erzeugen Sie eine RAM-Disk für das Verzeichnis /tmp. Alles, was nach /tmp geschrieben wird, landet dann in Wirklichkeit im Arbeitsspeicher. Das ramfs-Dateisystem kann aber nicht wirklich die Anzahl an verfügbarem RAM einschränken, die dem temporären Dateisystem zur Verfügung steht. Anders gesagt wird ramfs dynamisch wachsen. Das kann so weit gehen, dass dem System der Arbeitsspeicher ausgeht.
Um dem Verzeichnis /tmp eine spezifizierte Menge an Arbeitsspeicher zur Verfügung zu stellen, verwenden Sie mount -t tmpfs -o size=1g none /tmp. Somit haben Sie dem Verzeichnis /tmp ein GByte aus dem Arbeitsspeicher zugewiesen. Entscheidet sich der Administrator für tmpfs, kann er den verfügbaren Platz mithilfe von df -h überprüfen. Außerdem können Sie in unserem Beispiel nicht mehr als ein GByte an Daten in das Verzeichnis /tmp schreiben. Eine RAM-Disk mit tmpfs wächst also nicht dynamisch.
Ein weiterer wichtiger Unterschied zwischen ramfs und tmpfs ist, dass tmpfs Swap (Auslagerungs-Datei) benutzt, sollte dies notwendig werden. Eine mit ramfs realisierte RAM-Disk tut das nicht.
Das RAM-Dateisystem können Sie bei einem System- oder Neustart auch automatisch erstellen lassen. Dazu modifizieren Sie die Datei /etc/fstab und verwenden eine ähnliche Zeile wie die folgende:
none /tmp tmpfs size=1g 0 0
Die ersten Spalte in der Datei /etc/fstab bezeichnet in der Regel den Namen des Geräts, das eingebunden werden soll. Weil hier kein wirkliches Gerät involviert ist, schreiben wir in diese Spalte none. Die nächsten zwei Spalten stehen für das Verzeichnis, das als Mount Point dienen soll und das entsprechend zu verwendende Dateisystem. In unserem Fall ist das /tmp und tmpfs. Sie spezifizieren die gewünschte Größe der RAM-Disk in der Spalte für die Optionen. In unserem Beispiel weisen wir ein GByte zu. Da das Dateisystem nicht auf der Festplatte existiert, befüllen Sie die beiden letzten Spalten mit Nullen.
Noch ein Hinweis: In einem produktiven System sollten Sie /tmp nicht im laufenden Betrieb neu mounten. Sauberer ist es, /tmp auf eine RAM-Disk mithilfe der Datei fstab beim Systemstart einzubinden.