Zum Inhalt springen

tmpfs

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 9. Januar 2025 um 19:50 Uhr durch imported>Y2kbug (Einleitung: Eigentlich ist es ja keine RAM-Disk mehr, wenn Teile davon (nicht ausgelagert werden _können_ -- von wem nämlich? sondern) auslagerbar sind, und zwar durch die Virtuelle Speicherverwaltung, was transparent und für den Benutzer nicht beeinflussbar abläuft. Mit ramfs war man sich sicher, dass es zu 100% eine RAM-Disk ist und immer sein wird, bei tmpfs kann man sich hingegen niemals ganz sicher sein... https://docs.kernel.org/filesystems/tmpfs.html).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

tmpfs (englisch für {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) ist ein Dateisystem, das in vielen Unix-artigen Betriebssystemen, als verbesserter Ersatz für ramfs, zum Anlegen einer RAM-Disk eingesetzt wird. Wie auch mit ramfs, können mit tmpfs Teile des realen Arbeitsspeichers wie eine Festplatte eingebunden und beschrieben werden. Allerdings verwendet tmpfs dazu den virtuellen Speicher und kann daher, im Gegensatz zu ramfs, auch ausgelagert werden wenn kein freier Arbeitsspeicher mehr verfügbar ist; Mit ramfs hingegen kann es zu einem Überlauf in den noch regulär verwendeten Arbeitsspeicher und somit zum Systemabsturz kommen. Zusätzlich bietet tmpfs POSIX ACLs und erweiterte Dateiattribute, außerdem sind manche Einbindungsparameter im laufenden Betrieb veränderbar, wie beispielsweise die Größe des Dateisystems, die erhöht werden kann (aber nicht verkleinert).

Funktion

Alles, was in tmpfs gespeichert wird, ist nur temporär, da es nicht auf der Festplatte gespeichert wird, und ist nach einem Neustart nicht mehr verfügbar. Der Vorteil von tmpfs liegt in seiner Geschwindigkeit: Aus dem Arbeitsspeicher kann viel schneller als von der Festplatte gelesen und geschrieben werden. Aus diesem Grund wird das temporäre Verzeichnis /tmp häufig damit realisiert. Auch die Verzeichnisse /var/run und /var/lock werden häufig mittels dieser Systeme erzeugt.

Der von tmpfs genutzte Speicher wächst und schrumpft, abhängig von den darin enthaltenen Dateien, und kann in einen Swap-Bereich ausgelagert werden.

Viele Unix-Distributionen verwenden tmpfs standardmäßig für den /tmp Zweig des Dateisystems oder für Shared Memory. Dies kann durch den Befehl df nachvollzogen werden:

Dateisystem    Größe   Benutzt    Verf.    Verw%  Eingehängt auf
tmpfs           256M      688K    256M        1%  /tmp

Implementierungen

SunOS / Solaris

SunOS und später Solaris beinhalten eine der frühesten Implementierungen von tmpfs,<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Internetquelle: archiv-url ungültig tmpfs: A Virtual Memory File System.] (PDF; 26 kB) , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 7. Mai 2007.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> wo es ab Version 4.1 Verwendung fand, welche im März 1990 veröffentlicht wurde.<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Internetquelle: archiv-url ungültig SunOS 4.1 Performance Tuning.] (gzipped PostScript; 39 kB) , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 15. Februar 2013.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.sun3arc.orgVorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Seit Solaris 2.1 ist /tmp standardmäßig ein tmpfs-Dateisystem. Der Befehl df zeigt als Hintergrundspeicher korrekt „swap“, unabhängig davon, was beim mount-Befehl als Hintergrundspeicher angegeben wurde, da dieser Parameter von mount_tmpfs ignoriert wird.

# df -k
Dateisystem 1K-Blöcke  Benutzt    Verf.    Verw%  Eingehängt auf
swap        601592           0   601592       0%  /tmp/test

Linux

Der Linux-Kernel stellt tmpfs ab Version 2.4 bereit.<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Common threads: Advanced filesystem implementor’s guide, Part 3.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 15. Februar 2013.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung Beschreibung der Implementierung in Linux</ref> Tmpfs (ehemals auch als shmfs bekannt) unterscheidet sich von einer Linux RAM-Disk insofern, als Speicher dynamisch alloziert wird und weniger genutzte Seiten in einen Swap-Bereich ausgelagert werden können. Ramfs nutzt dagegen keinerlei virtuellen Speicher (was sowohl Vor- als auch Nachteil sein kann). Tmpfs kann dynamisch bis zu einer vorgegebenen Maximalgröße (auf die Hälfte des vorhandenen RAMs voreingestellt) wachsen und belegt immer nur so viel Speicher, wie benötigt wird. Das Limit kann geändert werden durch Verwendung von Optionen oder z. B. durch den Befehl mount -t tmpfs -o size=1G,nr_inodes=10k,mode=0700 tmpfs /space, welcher eine maximale Größe von 1 GiB mit maximal 10240 Inodes und einen exklusiven Zugriff für den Besitzer des Dateisystems /space erlaubt. Das Limit kann im Betrieb etwa durch den Befehl mount -o remount,size=2G /space geändert werden. Wenn das Limit zu groß gewählt wird und nicht genug Swap-Speicher vorhanden ist, kommt es zu Problemen.

BSD

Tmpfs wurde am 10. September 2005 in die offiziellen NetBSD-Quellen aufgenommen<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Internetquelle: archiv-url ungültig NetBSD-SoC: Efficient memory file-system.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 15. Februar 2013.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> und ist ab Version 4.0 verwendbar. Für FreeBSD wurde die Implementierung von NetBSD portiert und ist ab Version 7.0 verfügbar.<ref>Vorlage:Cite book/NameVorlage:Cite book/Name: [Internetquelle: archiv-url ungültig FreeBSD tmpfs(5) manpage.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 15. Februar 2013.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Auf Systemen mit wenig Speicher kann die Verwendung großer temporärer Daten im Speicher zu Instabilitäten führen.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig mount_tmpfs(8) - NetBSD Manual Pages.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 15. Februar 2013.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/netbsd.gw.comVorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung NetBSD mount_tmpfs man page</ref>

Microsoft Windows

Windows besitzt mit „Temporären Dateien“ ein ähnliches Konzept. Dateien, welche mit den Flags FILE_ATTRIBUTE_TEMPORARY sowie FILE_FLAG_DELETE_ON_CLOSE angelegt wurden, werden im Speicher gehalten und nur auf die Festplatte geschrieben, wenn das System wenig Speicher verfügbar hat. So verhält es sich wie tmpfs, mit dem Unterschied, dass die Dateien in einen speziellen Ordner statt in den Swap-Bereich geschrieben werden.

Weblinks

Einzelnachweise

<references />