- tmpfs
-
tmpfs (engl. für Temporary File System) ist ein Dateisystem, das in vielen Unix-artigen Betriebssystemen als verbesserter Ersatz für eine Ramdisk eingesetzt wird. Im Gegensatz zur Ramdisk bei der realer Arbeitsspeicher verwendet wird, wird bei tmpfs virtueller Arbeitsspeicher statt der Festplatte als Speicher benutzt.
Inhaltsverzeichnis
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. Es kann viel schneller aus dem Arbeitsspeicher als von der Festplatte gelesen und geschrieben werden. Aus diesem Grund wird das temporäre Verzeichnis /tmp häufig so realisiert. Auch die Verzeichnisse /var/run und /var/lock werden häufig mittels dieser Systeme erzeugt um ein Bereinigen bei jedem Neustart zu vermeiden.
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:
Filesystem Size Used Avail Use% Mounted on swap 256M 688K 256M 1% /tmp
Einige UNIX-Varianten listen hier statt swap tmpfs obwohl tmpfs kein Hintergrundspeicher ist und daher nicht den Regeln entspricht.
Implementierungen
SunOS / Solaris
SunOS und später Solaris beinhalten eine der frühesten Implementierungen von tmpfs [1], wo es ab Version 4.1 Verwendung fand, welche im März 1990 veröffentlicht wurde.[2]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(1M) ignoriert wird.# df -k Filesystem kbytes used avail capacity Mounted on swap 601592 0 601592 0% /tmp/test
Linux
Der Linux-Kernel stellt tmpfs seit Version 2.4 bereit.[3] tmpfs (ehemals auch als shmfs bekannt) unterscheidet sich von einer Linux Ramdisk insofern, als Speicher dynamisch alloziiert wird und weniger genutzte Seiten in einen Swap-Bereich ausgelagert werden können. RAMFS dagegen nutzt keinerlei virtuellen Speicher (was sowohl Vor- als auch Nachteil sein kann). tmpfs kann dynamisch wachsen bis zu einer vorgegebenen Maximalgröße (Voreingestellt auf Hälfte des vorhandenen RAM Speichers) 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 Befehlmount -o remount,size=2G /space
geändert werden. Wenn das Limit zu groß gewählt wird und nicht genug Swapspeicher vorhanden ist kommt es zu Problemen.BSD
tmpfs wurde am 10. September 2005 in die offiziellen NetBSD Quellen aufgenommen[4] und ist seit Version 4.0 verwendbar. Für FreeBSD wurde die Implementierung von NetBSD portiert und ist seit Version 7.0 verfügbar.[5].
Auf Systemen mit wenig Speicher kann die Verwendung großer temporärer Daten im Speicher zu Instabilitäten führen.[6].
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 Pfad geschrieben werden anstatt in den Swap-Bereich.
Einzelnachweise
- ↑ Peter Snyder: tmpfs: A Virtual Memory File System (PDF). Abgerufen am 7. Mai 2007.
- ↑ Hal L. Stern: SunOS 4.1 Performance Tuning (GZipped PostScript). Abgerufen am 7. Mai 2007.
- ↑ Daniel Robbins (September 1, 2001): Advanced filesystem implementor's guide. Abgerufen am 7. Mai 2007. Beschreibung der Implementierung in Linux
- ↑ Julio M. Merino Vidal (February 24, 2006): NetBSD-SoC: Efficient memory file-system. Abgerufen am 7. Mai 2007.
- ↑ Derek Morr (December 2, 2008): FreeBSD tmpfs manpage. Abgerufen am 2. Dezember 2008.
- ↑ NetBSD team (February 13, 2008): mount_tmpfs(8) - NetBSD Manual Pages. Abgerufen am 7. Mai 2009. NetBSD mount_tmpfs man page
Referenzen
- Dokumentation in den Linux-Quellen
- tmpfs(7FS) Solaris 10 man page
- mount_tmpfs(8) NetBSD man page
Kategorien:- BSD-Software
- Linux-Software
- Dateisystem
Wikimedia Foundation.