TMPFS Virtual Memory File System in Linux

Tmpfs Virtual Memory File System In Linux



Tmpfs, früher bekannt als shmfs, ist ein temporäres Dateisystem und bezieht sich auf ein Dateisystem, das sich im Arbeitsspeicher und/oder der/den Swap-Partition(en) befindet. Tmpfs speichert die Dateidaten nicht auf normalem, nicht flüchtigem Speicher. Stattdessen verwaltet der UNIX-Kernel den virtuellen Speicher, in dem sich Tmpfs-Dateien befinden. Der Hauptgrund für die Erstellung von Tmpfs war die Verbesserung der Leistung, indem die temporären Dateien ohne Verwendung der Festplatte oder der Netzwerk-E/A geschrieben und gelesen werden können.

Worüber werden wir sprechen?

In diesem Artikel sehen wir einen Überblick über das Tmpfs-Dateisystem in Linux.

Vorteile der Verwendung des Tmpfs-Systems

Das frühere Random Access Memory File System (ramfs) in Linux wurde durch das neue temporäre Dateisystem (Tmpfs) ersetzt. Dies liegt daran, dass das alte RAMFS die Situationen nicht richtig angegangen ist, wenn dem System der RAM ausgegangen ist.







Das Mounten von Verzeichnissen als Tmpfs hat mehrere Vorteile, wie zum Beispiel:



1. Um den Zugriff auf die darin enthaltenen Dateien zu beschleunigen.



2. Um sicherzustellen, dass bei jedem Neustart des Systems der Inhalt der Verzeichnisse automatisch gelöscht wird.





3. Tmpfs erhöht die Dateimanipulationsrate, während die Semantik einer UNIX-Datei erhalten bleibt.

4. Tmpfs benötigt keinen festen oder dedizierten Speicherplatz für Dateien und wirkt sich nicht negativ auf die Leistung aus.



Anstatt den dedizierten physischen Speicher wie eine „RAM-Disk“ zu verwenden, speichert Tmpfs die Dateidaten im Seitencache eines Betriebssystems. Es erleichtert das Lesen und Schreiben der Dateien, lässt das Dateisystem im laufenden Betrieb wachsen und schrumpfen, ohne Speicherplatz zu belegen, und beeinträchtigt nicht die Gesamtleistung des Systems.

Montage Tmpfs

Verwenden Sie den Befehl mount und wählen Sie „tmp“ als Dateisystemtyp, um ein Dateisystem vom Typ Tmpfs zu erstellen. Da Tmpfs immer den Arbeitsspeicher als Dateisystemressource verwendet, wird der zu mountende Ressourcenparameter (z. B. Raw Device) nicht berücksichtigt. Da Tmpfs immer den Arbeitsspeicher als Dateisystemressource verwendet, wird der Ressourcenparameter für das Mounten (z. B. Raw Device) nicht berücksichtigt.

Derzeit hat Tmpfs keine Mount-Optionen. Viele reguläre Mount-Optionen sind für den Kontext von Tmpfs nicht relevant. Beispielsweise macht es keinen Sinn, einen Tmpfs-Mount „schreibgeschützt“ zu machen, da sie keine Daten enthalten, wenn sie zum ersten Mal gemountet werden. Tmpfs unterstützt alle Arten von Dateien, zu denen auch symbolische Links, Blöcke und spezielle Gerätedateien für Zeichen gehören – UNIX-Dateisemantik. Obwohl es viele Tmpfs-basierte Dateisysteme geben kann, die auf einem System gemountet sind, müssen sich alle denselben Ressourcenpool teilen.

Da der Inhalt eines speicherbasierten Dateisystems nach einem Systemneustart oder einem Unmount-Vorgang gelöscht wird und diese Dateien eine sehr kurze Lebensdauer haben, /tmp i s der für sie am besten geeignete Standort (daher bekannt als Tmpfs). Dies weist darauf hin /usr/tmp ist kein geeigneter Ort zum Mounten eines Tmpfs-Dateisystems, da sein Inhalt zwischen Neustarts beibehalten wird.

Größe von Tmpfs

Die Menge an freiem Speicherplatz, die von Tmpfs verwendet werden kann, ist direkt proportional zur Menge an ungenutztem Auslagerungsspeicher. Die Größe eines Tmpfs-Dateisystems wächst mit den hinzugefügten Dateien, aber die Benutzer, die Tmpfs regelmäßig verwenden, müssen sich darüber im Klaren sein, dass dieses Wachstum mit einigen inhärenten Kosten verbunden ist. Tmpfs teilt seine Ressourcen mit den Daten und Stapelsegmenten von Programmen, die ausgeführt werden.

Wenn Tmpfs-Dateisysteme ihre maximal zulässige Kapazität erreichen, ist es möglich, dass die Ausführung sehr großer Programme beeinträchtigt wird. Tmpfs kann den gesamten Auslagerungsbereich des Systems mit Ausnahme von 4 MB zuweisen. Dies reicht aus, um sicherzustellen, dass die meisten Programme ausgeführt werden können. Dennoch ist es möglich, dass bestimmte Programme nicht ausgeführt werden können, wenn die Tmpfs-Dateisysteme fast voll ausgelastet sind. Benutzer, die große Programme ausführen und Tmpfs ausgiebig nutzen möchten, sollten nach Möglichkeiten suchen, den verfügbaren Auslagerungsspeicher im System zu vergrößern.

Verwendung von Tmpfs

Die Verwendung von Tmpfs umfasst:

1. Es gibt immer einen internen Mount im Kernel, der nicht sichtbar ist. SYSV Shared Memory und Shared Anonymous Mappings verwenden beide Tmpfs. Tmpfs-Mount ist unabhängig von CONFIG_TMPFS. Der für den Benutzer sichtbare Teil von Tmpfs wird nicht erstellt, wenn CONFIG_TMPFS nicht festgelegt ist. Interne Mechanismen bestehen jedoch zu jeder Zeit.

2. POSIX Shared Memory (shm_open, shm_unlink) erfordert, dass tmpfs für glibc-Versionen 2.2 und höher unter /dev/shm gemountet wird. Dies kann behoben werden, indem die folgende Zeile in die Datei /etc/fstab aufgenommen wird:

tmpfs / Entwickler / shm tmpfs-Standardwerte 0 0

Erstellen Sie bei Bedarf das Verzeichnis, in dem Sie die Tmpfs bereitstellen möchten.

Der gemeinsam genutzte Speicher, der von SYSV verwendet wird, benötigt keinen Tmpfs-Mount. Dies geschieht mit der internen Halterung. Um den gemeinsam genutzten SYSV-Speicher in den 2.3-Kernelversionen zu verwenden, musste shm fs (der Vorgänger von Tmpfs) gemountet werden.

3. Für einige Benutzer ist es wirklich nützlich, es an Orten wie z /tmp und /var/tmp und haben eine beträchtliche Auslagerungsplatte. Außerdem funktionieren Loop-Mounts von Tmpfs-Dateien jetzt. Daher sollte die mkinitrd der meisten Distributionen mit einem Tmpfs arbeiten.

4. Und es gibt zu viele, um sie aufzulisten.

Mount-Optionen für Tmpfs

Lassen Sie uns einige der Mount-Optionen mit Tmpfs untersuchen:

Größe: Dies gibt die maximale Anzahl von Bytes an, die für eine Tmpfs-Instanz verwendet werden können. Standardmäßig kann nur die Hälfte des physikalischen Arbeitsspeichers ohne Auslagerungsspeicher verwendet werden.

Wenn Tmpfs-Instanzen größer gemacht werden, als sie sein müssen, bleibt die Maschine in einem Deadlock stecken, weil der OOM-Handler diesen Speicher nicht freigeben kann.

nr blöcke: Es ist das gleiche wie die Größenoption. Es ist jedoch in Blöcken von PAGE_CACHE_SIZE.

keine Inodes : Dies ist die Obergrenze der Inodes für diese Instanz. Der Standardwert ist die Hälfte der physischen RAM-Seiten oder die Anzahl der Lowmem-RAM-Seiten (auf einem System mit Highmem), je nachdem, welcher Wert kleiner ist.

Fazit

Normalerweise werden Tmpfs-Dateien bei Systemneustarts gelöscht. Aber wenn Sie sie erhalten möchten, können Sie die systemd-tmpfiles verwenden. Wir empfehlen Ihnen, die Manpages zu lesen, wenn Sie mehr über Tmpfs erfahren möchten.