RAM-Disk

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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.

Technik[Bearbeiten | Quelltext bearbeiten]

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.

Verwendung[Bearbeiten | Quelltext bearbeiten]

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.

Verbreitung[Bearbeiten | Quelltext bearbeiten]

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]

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.[9][10] 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.[11] 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.[12][13]

Ähnliche Konzepte[Bearbeiten | Quelltext bearbeiten]

Starten eines Betriebssystems[Bearbeiten | Quelltext bearbeiten]

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.

Überlagerung mit einem schreibgeschützten Dateisystem[Bearbeiten | Quelltext bearbeiten]

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.

I/O-Cache[Bearbeiten | Quelltext bearbeiten]

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.

Vor- und Nachteile[Bearbeiten | Quelltext bearbeiten]

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.

Vorteile[Bearbeiten | Quelltext bearbeiten]

Das Foto zeigt die Ergebnisse eines Benchmarkings einer Ram-Disk in CrystalDiskMark
Wohl der offensichtlichste Vorteil: Sehr schnelle Lese- und Schreibraten

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[14], 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.[15]

Nachteile[Bearbeiten | Quelltext bearbeiten]

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.

Abgrenzung[Bearbeiten | Quelltext bearbeiten]

Einige andere Technologien, die ebenfalls RAM als Basis 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-Floppy[Bearbeiten | Quelltext bearbeiten]

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.[16][17] 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.

Anmerkungen[Bearbeiten | Quelltext bearbeiten]

  1. Siehe dazu auch Solid-State-Drives im Vergleich

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Rob Landley: Ramfs, rootfs and initramfs. In: The Linux Kernel documentation. kernel.org, 17. Oktober 2005, abgerufen am 26. Januar 2022 (englisch): „ramfs and tmpfs: One downside of ramfs is you can keep writing data into it until you fill up all memory, and the VM can’t free it because the VM thinks that files should get written to backing store (rather than swap space), but ramfs hasn’t got any backing store. Because of this, only root (or a trusted user) should be allowed write access to a ramfs mount. A ramfs derivative called tmpfs was created to add size limits, and the ability to write the data to swap space. Normal users can be allowed write access to tmpfs mounts.“
  2. IBM DISK OPERATING SYSTEM (DOS) VERSION 3.30. Announcement Letter Number 287-098 dated April 2, 1987. IBM, 2. April 1987, abgerufen am 29. Juli 2018 (englisch): „DOS 3.30 TECHNICAL REFERENCE; … VDISK.ASM is a file containing the Assembler Language source code for Virtual Disk (RAM memory disk) device driver (VDISK.SYS). The assembled object code for VDISK.SYS and instructions for its use are included in the DOS 3.30 package. The VDISK.ASM file is provided on the DOS 3.30 Technical Reference utilities diskette for programmers who want to use it as a model for creating device drivers.“
  3. Matthias Paul: Re: [fd-dev] How to detect a RAM drive (Was: Games + Freedos) (Frontier Elite II). (Mailingliste) In: freedos-dev. 19. Februar 2002, abgerufen am 29. Juli 2018 (englisch).
  4. Chapter 4 - Working with Caldera DR-DOS. In: Caldera DR-DOS Quick Start Guide. Caldera, Inc., 1998, abgerufen am 29. Juli 2018 (englisch): „[This …] type of disk, a memory disk, is not a physical disk but part of your computer's memory that the operating system treats as a disk. This is why a memory disk is also referred to as a virtual disk. … A memory disk only stores data temporarily. When you switch off your computer, or reboot, any data stored in a memory disk is lost.“
  5. Workbench 1.2. In: The Amiga Museum. Abgerufen am 19. Juli 2019 (englisch): „Workbench 1.2 was the first version of Workbench to feature the use of a RAM disk as standard.“
  6. Chris Cebelenski: Amiga 1.3. (Blog) In: Retrocomputing. 21. April 2010, abgerufen am 29. Juli 2018 (englisch).
  7. Amiga Enhancer V1.3 is a Disk-Based Update. Commodore Amiga, Inc., 1988, abgerufen am 29. Juli 2018 (englisch): „Recoverable RAM Disk: Keeps its contents until the Amiga is turned off“
  8. Christoph Rohland u. a.: Tmpfs. In: The Linux Kernel documentation. kernel.org, 13. Juli 2020, abgerufen am 26. Januar 2022 (englisch): „If you compare it to ramfs (which was the template to create tmpfs) you gain swapping and limit checking. Another similar thing is the RAM disk (/dev/ram*), which simulates a fixed size hard disk in physical RAM, where you have to create an ordinary filesystem on top. Ramdisks cannot swap and you do not have the possibility to resize them.“
  9. Adrian Kingsley-Hughes: UEFI Forum announces updated UEFI v2.6 and ACPI v6.1 specifications. The latest updates to UEFI and ACPI help allow PCs to offer enhanced mobility and manageability for customer and enterprise levels. In: Blog „Hardware 2.0“. ZDNet, 9. März 2016, abgerufen am 28. Juli 2018 (englisch): „Added to UEFI Specification v2.6 are … Formal API definition for RAM Disk Protocol.“
  10. MdePkg: Add EFI RAM Disk Protocol definitions. In: tianocore/edk2. GitHub, 3. Februar 2016, abgerufen am 28. Juli 2018 (englisch).
  11. Dong Wei, Ting Ye: Accelerating Firmware Development With UEFI Advanced Features. (PDF; 2,6 MB) In: IDF16-Präsentation. Intel, 2016, S. 17, abgerufen am 28. Juli 2018 (englisch).
  12. Christof Windeck: Abschied vom PC-BIOS. In: Heise online. 3. Juni 2011. Abgerufen am 28. Juli 2018.
  13. Christof Windeck: Intel: UEFI-BIOS verliert 2020 die BIOS-Kompatibilität. In: Heise online. 15. November 2017. Abgerufen am 28. Juli 2018.
  14. Blog vom Karpfenweg: RAM-Disk / RAM-Drive - Was es bringt und wem es nützt (Memento des Originals vom 18. Oktober 2008 im Internet Archive)  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.piksa.info
  15. Portage TMPDIR on tmpfs. In: Gentoo Wiki. Abgerufen am 21. März 2020 (englisch).
  16. RETROPORT: RAM-Floppy 256K (Rex 9680) bei Archive.org (Memento vom 2. Mai 2012 im Internet Archive)
  17. Homecomputer DDR: RAM-Floppy RAF2008