Eine RAM-Disk, auch RAM-Drive (eingedeutscht in etwa RAM-Laufwerk) oder englisch Memory Disk, ist ein virtueller und temporärer Datenträger im Arbeitsspeicher (RAM) eines Computers. Sie wird u. a. bei Live-Systemen eingesetzt, bei Installationsmedien wenn ein Rechner neu aufgesetzt wird (die Installation eines Betriebssystems), wenn andere physische Speichermedien für einen bestimmten Zweck zu langsam sind, oder um bei einem Speichermedium wie einer SSD den Verschleiß bei Aufgaben mit zahlreichen Schreibvorgängen zu reduzieren.
Beim Anlegen wird ein definierter Teil des Arbeitsspeichers meist statisch für die RAM-Disk reserviert („abgezweigt“) und dabei wie eine Festplatte oder allgemein wie ein Extra-Laufwerk angesprochen, mit einem Dateisystem formatiert und schließlich eingehängt.
Eine RAM-Disk wird in Software erzeugt und verwaltet – die Umsetzung hängt daher im großen Maße von dieser Software ab, die z. B. die Firmware des Computers wie UEFI, das Betriebssystem selbst sowie Gerätetreiber oder Programme von Drittanbietern sein kann.
Direktzugriffsspeicher, englisch Random-Access Memory oder kurz RAM, wird von einem Computer normalerweise hauptsächlich als physischer Arbeitsspeicher verwendet. Bei manchen Systemen, die für wenig Arbeitsspeicher ausgelegt sind aber weit mehr RAM als dafür nötig verbaut haben, wurde in den 1980er Jahren die RAM-Disk als virtuelles Laufwerk entwickelt, um diesen sonst ungenützten und meist relativ schnellen Speicher als zusätzlichen Datenspeicher nutzen zu können. Dabei greift ein Gerätetreiber auf die im Betriebssystem vorhandenen Zugriffs-Routinen zurück und erstellt damit einen Zugriffspfad, der auf den im Arbeitsspeicher reservierten Teil für die RAM-Disk Zugriff ermöglicht und diesen Speicherbereich im Betriebssystem wie ein weiteres reguläres Laufwerk ansprechbar macht. Die Größe der RAM-Disk war dabei zuanfangs bereits bei der Initialisierung fix festzulegen, erst später wurden RAM-Disks mit variablen Speicherkapazitäten entwickelt.
Bei manchen Varianten ist der Inhalt der RAM-Disk dabei vollständig in die virtuelle Speicherverwaltung des Betriebssystems integriert und kann somit auch ausgelagert werden. Dies geschieht automatisch wenn der Arbeitsspeicher vom Betriebssystem für andere Programme benötigt wird. Diese Art von RAM-Disk widerspricht jedoch dem Konzept, die Daten zu jeder Zeit im Arbeitsspeicher zu halten. Andererseits kann damit aber ein Hängenbleiben des gesamten Systems verhindert werden, für den Fall, dass immer mehr Daten in die RAM-Disk geschrieben werden, bis der Arbeitsspeicher komplett aufgebraucht ist; in diesem Fall werden Teile der RAM-Disk einfach ausgelagert und das System bleibt in Funktion.[1]
Ältere und einfachere RAM-Disks erstellen nur das virtuelle Laufwerk; um dieses auch nutzen zu können, muss es zuerst formatiert werden, wobei eines der vom Betriebssystem unterstützten Dateisysteme verwendet werden muss. Moderne Programme und Treiber zur Erstellung einer RAM-Disk erledigen diese Aufgabe meist automatisch bei der Erstellung gleich mit, bei älteren und einfacheren Implementierungen muss dieser Schritt jedoch manuell vom Anwender erledigt werden.
Bessere RAM-Disk-Programme können zudem den Inhalt des virtuellen Laufwerks vor dem Lösen der Einbindung (z. B. beim Herunterfahren, oder beim sicheren Entfernen oder Auswerfen des virtuellen Datenträgers) in eine Datei auf der Festplatte sichern und beim erneuten Erstellen der RAM-Disk automatisch wiederherstellen.
RAM-Disks werden vor allem bei Live-Medien verwendet. Dabei wird oft von einem Speichermedium gestartet, das nur gelesen werden kann (z. B. von CD-ROM). Moderne Betriebssysteme benötigen jedoch einen Bereich, in dem temporäre Dateien gespeichert werden können – dieser wird bei einem Live-Betriebssystem durch die RAM-Disk bereitgestellt.
Live-Systeme, die eine RAM-Disk verwenden, sind u. a. die meisten Linux-Distributionen und Windows PE von Microsoft. Eine Vielzahl moderner Betriebssysteme verwenden eine RAM-Disk bei der Betriebssystem-Installation.
Gängige Betriebssysteme liefern zudem Treiber, um eine RAM-Disk anzulegen. Für verbreitete Betriebssysteme, wie DOS, Mac OS (Classic und macOS) oder Windows, gab bzw. gibt es zahlreiche Softwareangebote von Drittanbietern, die eine RAM-Disk bereitstellen und um sinnvolle Funktionen ergänzen, und sich damit von der im Betriebssystem integrierten Funktion absetzen. So kann der Inhalt der RAM-Disk beispielsweise beim Herunterfahren oder im Minutenabstand auf eine Festplatte gesichert werden, oft sind auch flexible RAM-Disk-Größen (Speicherkapazität) einstellbar.
In PC DOS 3.0 von 1984 war erstmals der VDISK.SYS
(für Virtual Disk) genannte Gerätetreiber von IBM beigelegt, der eine RAM-Disk unter PC-kompatiblem DOS bereitstellen konnte. In PC DOS 3.3 war auch der Quelltext VDISK.ASM
enthalten.[2] Microsoft integrierte 1986 in MS-DOS 3.2 mit RAMDRIVE.SYS
ebenfalls eine RAM-Disk. Auch Digital Research lieferte in DR DOS 3.31 von 1988 eine eigene Version von VDISK.SYS
mit.[3] Im Benutzerhandbuch von Caldera DR-DOS 7.03 wird die RAM-Disk als englisch Memory Disk bezeichnet.[4]
Beim Betriebssystem des Amiga von Commodore wurde mit Workbench 1.2[5] vom September 1986 eine RAM-Disk (als englisch Recoverable RAM Disk) eingeführt. Ab Version 1.3 von 1988 gibt es in AmigaOS zwei verschiedene RAM-Disks:[6] Die eine benutzt eine beim Start festzulegende Menge des Arbeitsspeichers, während die andere dynamisch Hauptspeicher anfordert bzw. freigibt und sich so an den Speicherbedarf anpasst. Erstere hat den Vorteil, dass ihr Inhalt einen Computerneustart (Warmstart) überlebt, solange der Speicherbereich nicht durch ein unkontrolliert abstürzendes Computerprogramm überschrieben wurde.[7]
Unter Unix-Betriebssystemen lässt sich die RAM-Disk durch das Verzeichnis /dev/shm
(shm für englisch shared memory, gemeinsam genutzter Speicher) verwenden. Unter Linux wird dafür das Dateisystem tmpfs verwendet, das automatisch eine RAM-Disk anlegt – neben /dev/shm
auch für weitere Verzeichnisse, darunter auch /dev
(devtmpfs
) und /run
. Die Implementierung von tmpfs baut auf ramfs auf, das jedoch nicht auslagerbar ist.[8] Mit zRAM steht unter Linux zudem eine Variante bereit, die zusätzlich Datenkompression bietet und somit den tatsächlich genutzten Speicherverbrauch reduziert.[9][10]
Unter klassischem Mac OS auf Macintosh-Computern von Apple und Macintosh-Klonen war es ab System 7 von 1991 möglich, eine RAM-Disk zu aktivieren. Das Betriebssystem formatiert diese automatisch mit einem Dateisystem (HFS) und sichert den Inhalt beim regulären Herunterfahren, um die Daten beim nächsten Start wiederherstellen zu können. Die RAM-Disk kann im Kontrollfeld „Speicher“ eingerichtet werden.
In der UEFI-Spezifikation Version 2.6 von 2016 wurde das UEFI RAM Disk Protocol festgelegt.[11][12] So lässt sich noch vor dem Start des Betriebssystems eine RAM-Disk anlegen, die von einem kompatiblen Betriebssystem oder von der Firmware selbst verwendet werden kann. Dies beschleunigt unter anderem die Firmware-Entwicklung, weil unabhängig von weiteren Datenträgern Entwicklungen und Konfigurationen getestet werden können.[13] UEFI, das auf den Architekturen Itanium (IA-64), IA-32 (32-Bit-x86), x64 (64-Bit-x86), und ARM64 existiert, ist seit ca. 2010 auf IBM-kompatiblen PCs der Nachfolger für das BIOS.[14][15]
Einige Betriebssysteme starten aus einer anfänglichen RAM-Disk, die nach dem Start jedoch wieder entfernt wird. Bei Linux ist dies z. B. durch initrd oder dem moderneren initramfs bei den meisten Linux-Distributionen der Fall, der Linux-Kernel selbst kann jedoch auch ohne diese Anfangs-RAM-Disk booten.
Wenn ein Dateisystem auf einem schreibgeschützten Medium oder ein absichtlich schreibgeschützt verwendetes Dateisystem unter einem modernen Betriebssystem verwendet werden soll, kann mittels Überlagerung durch eine RAM-Disk ein lesender und schreibender Zugriff ermöglicht werden. Dabei werden nur die modifizierten Datenblöcke per Copy-On-Write (COW) in die RAM-Disk gespeichert, sodass das Dateisystem insgesamt als schreibfähig erscheint. Alle Änderungen sind jedoch nach einem Neustart wieder verschwunden. Dies findet oft bei Live-Systemen Anwendung.
Alternativ kann als COW-Speicher auch ein schreibfähiger Datenspeicher (z. B. Festplatte oder SSD), oder eine der Partitionen darauf, verwendet werden, wodurch die Änderungen vorerst erhalten bleiben. Dadurch können einerseits vom Urzustand, dem schreibgeschützten Dateisystem, mehrere unterschiedliche COW-Zustände abgeleitet werden, andererseits lässt sich der Urzustand auch sehr leicht wiederherstellen, indem der COW-Datenträger zurückgesetzt wird.
Da Arbeitsspeicher zu teuer und zu schnell ist um ihn brach liegen zu lassen, verwenden moderne Betriebssysteme über einen Input-/Output-Cache, kurz I/O-Cache, jeden freien Block im RAM (Arbeitsspeicher) normalerweise für das Zwischenspeichern (Puffern) von Lese- und Schreibvorgängen. Dadurch füllt sich das RAM stetig mit jedem Lesevorgang. Benötigt ein Prozess abermals einen Zugriff auf eine Datei und befinden sich die Daten bereits im Cache, so spart sich das Betriebssystem einen erneuten Lesevorgang vom langsameren Speichermedium (wie z. B. einer Festplatte), da die Daten ja bereits im schnellen RAM liegen und über den I/O-Cache sofort verfügbar sind.
Benötigt jedoch ein anderer Prozess Arbeitsspeicher und es ist keiner mehr frei, so werden nach einer bestimmten Logik Teile des I/O-Cache verworfen. Eine einfache Logik ist etwa die FIFO-Strategie, bei der die ältesten gepufferten Daten verworfen werden. Siehe Cache-Verdrängungsstrategien.
Der Einsatz einer RAM-Disk ist oft reine Geschmackssache. Viele Programme werben mit schnelleren Startzeiten für darauf gespeicherte (oder gar installierte) Programme und Daten. Es ist jedoch immer zu beachten, dass nicht nur Vorteile mit dem Einsatz einer RAM-Disk einhergehen.
Moderne Betriebssysteme beinhalten heutzutage in der Regel ein Cache-Management, bei dem das Betriebssystem selbstständig den jeweils aktuell freien Speicher verwendet, um Daten zwischenzuspeichern. So werden Daten oder Programme, die von Festplatten gelesen werden, auch in diesem dynamischen Cache gespeichert. Bei einem erneuten lesenden Zugriff kann das System die Daten dann direkt aus dem RAM statt von dem externen Datenträger lesen. Da die Verwaltung dieses Caches vom System selbstständig übernommen wird (das System weiß, was besonders häufig gelesen wird), kann ein Cache heutzutage in vielen Situationen einer RAM-Disk überlegen sein.
Im Gegensatz zum direkten Ansprechen des Arbeitsspeichers durch ein Computerprogramm stehen dem Programmierer durch Benutzung einer RAM-Disk die mit der Dateiverwaltung zusammenhängenden Dienste des Betriebssystems zur Verfügung. Für den Anwender ergibt sich der Vorteil, dass durch eine RAM-Disk Computerprogramme ohne Änderungen mit Daten sowohl auf Datenträgern als auch im Arbeitsspeicher arbeiten können. Der Vorteil einer RAM-Disk im Vergleich zur Festplatte ist die Einsparung von Festplattenzugriffen und die damit verbundene deutlich höhere Schreib-/Lese- und Zugriffsgeschwindigkeit[16], was auch die Verwendung in Supercomputern erklärt sowie die Verminderung von Verschleiß.[A 1] Beispielsweise können beim Startvorgang eines Computers häufig benötigte Kommandos im Arbeitsspeicher abgelegt dafür sorgen, dass die zum Starten benötigte Zeit verringert wird. Da für den Zugriff auf den Arbeitsspeicher weniger Energie benötigt wird, ist für mobile Computer zudem der energiesparende Effekt und die damit verbundene verlängerte Akkulaufzeit von Vorteil. Ähnlich zum gegebenen Beispiel für den Startvorgang wird bei entsprechender Konfiguration auf häufig verwendete Dateien im Arbeitsspeicher zugegriffen, wodurch die interne Festplatte öfter bzw. länger in den Energiesparmodus versetzt werden kann – was die Akkulaufzeit abermals steigert.
Für schreib-intensive Anwendungen, die jedoch die geschriebenen Dateien gleich nach deren Verwendung wieder verwerfen, kann eine RAM-Disk den Vorteil bringen, dass nicht häufiger als absolut nötig auf ein Medium mit begrenzten Schreibzugriffen (wie beispielsweise Flash-Speicher) geschrieben wird. Voraussetzung ist allerdings, dass genügend Arbeitsspeicher zur Verfügung steht. Ein Beispiel dafür ist die Nutzung von tmpfs für portage von Gentoo Linux – bei dieser Linux-Distribution werden die Programme nicht als binäre Pakete installiert, sondern der Quelltext der jeweiligen Software auf dem Rechner selbst kompiliert. Dieser Vorgang ist zwar rechenintensiv, aber er ermöglicht die Optimierung auf das jeweilige System sowie die Auswahl und Kontrolle durch den Benutzer, welche Funktionen im Programm tatsächlich enthalten sein sollen. Wenn der Vorgang des Kompilierens und Linkens im RAM stattfindet, ist er einerseits schneller, andererseits werden die vielen temporär angelegten Dateien dann nicht auf die SSD geschrieben und verlängern somit die Lebensdauer dieses Flash-basierten Speichermediums.[17]
Nachteil der RAM-Disk ist, dass der betreffende Speicherplatz dem freien Arbeitsspeicher, also dem Betriebssystem und anderen Programmen zum Zwischenspeichern, nicht mehr zur Verfügung steht. Nach einem Neustart des Systems (z. B. nach einem Absturz) ist der Inhalt der RAM-Disk im Allgemeinen verschwunden. Da Arbeitsspeicher zu den flüchtigen Speichermedien zählt, verschwindet bei Unterbrechung der Stromzufuhr (z. B. beim Abschalten) mit dem Arbeitsspeicher-Inhalt auch der RAM-Disk-Inhalt. Daher sollten auf der RAM-Disk keine wichtigen Daten abgelegt werden, sofern nicht die unterbrechungsfreie Stromversorgung des Computers gewährleistet ist. Weiterhin sollten vor dem Ausschalten des Computers evtl. noch benötigte Dateien gesichert werden (z. B. automatisiert per Skript). Gemessen am Preis je Speichergröße zählt diese Art zu den teureren Speicherverfahren.
Einige andere Technologien, die ebenfalls RAM als Basis oder Namen für den Datenspeicher verwenden, haben – trotz ähnlich klingender Bezeichnung – mit dem Konzept einer RAM-Disk nichts zu tun. Auch ähnliche Konzepte wie überlagerte Dateisysteme und der I/O-Cache zählen nicht zum Begriff der RAM-Disk.
RAM-Floppys sind ein hardwareseitiger Ersatz für ein Diskettenlaufwerk (englisch Floppy Disk Drive, kurz FDD), gedacht für ältere Rechnersysteme. RAM-Floppys sind dabei nicht an die Anschlüsse für reguläre Laufwerke gebunden, sie können z. B. auch als Steckkarte ausgeführt sein.[18][19] Auch wenn hierbei nicht nur durch Software ein Teil des Arbeitsspeichers abgezweigt, sondern zusätzliche Hardware verwendet wird, handelt es sich bei einem solchen Laufwerk um eine gewöhnliche RAM-Disk.
DVD-RAMs sind eine der drei wiederbeschreibbaren DVD-Formate und zeichnen sich hierbei durch eine deutlich verbesserte Wiederbeschreibbarkeit gegenüber den anderen aus. In den frühen 2000er-Jahren wurden diese oft in Videokameras und DVD-Rekodern eingesetzt, wurden aber recht schnell durch den immer günstiger werdenden Flash-Speicher ersetzt. Auch durch die verhältnismäßig hohen Preise der DVD±RW-Rohlinge konnte sich die DVD-RAM letzenendes nicht lange auf dem Markt behaupten. 2019 wurde die Produktion vom letzten Hersteller final eingestellt.