ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

RAM-Disk erstellen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Wiki/Icons/Oxygen/media-flash.png Als RAM-Disk wird ein virtuelles Laufwerk bezeichnet, welches aus einem Teil des im System befindlichen Arbeitsspeichers (RAM) besteht. Dabei wird statisch oder auch dynamisch Speicherplatz im RAM belegt, mit einem Dateisystem formatiert und schließlich eingehängt. Der abgezweigte Speicherplatz steht dem System logischerweise nicht mehr zur Verfügung.

Wenn eine SSD zum Einsatz kommt, sind weitere Hinweise im Artikel SSD/Auslagerung zu finden.

Hinweis:

Zu bedenken ist, dass RAM bekanntlich zu den flüchtigen Speichermedien zählt und somit die sich auf der RAM-Disk befindlichen Dateien, ebenso wie der restliche RAM-Inhalt, bei Unterbrechung der Stromzufuhr verschwinden. 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).

Anwendungsgebiete

Der Arbeitsspeicher ist hinsichtlich der Lese- und Schreibvorgänge wesentlich schneller und weniger von Verschleiß betroffen als konventionelle Festplatten und erst recht als Flash-Speicher. Ein Paradebeispiel ist hier der Betrieb eines "RAM-Servers", der Dank der schnelleren Zugriffe besonders geschwind anfragende Clients bedienen kann. Die schnelleren Reaktionszeiten nützen natürlich nichts, wenn der Flaschenhals gar nicht von einem langsamen Speichermedium ausgeht, sondern z.B. von einer ausgelasteten CPU oder einer langsamen Netzwerkverbindung. Dies sollte also festgestellt werden, bevor man sich die Mühe macht.

Eine RAM-Disk kann auch ein Weg sein, das Löschproblem unter journalisierenden Dateisystemen wie ext3 oder 4 zu umgehen. Prekäre Dateien werden also nicht auf die mit ext3/4 formatierte Festplatte kopiert, sondern in das nicht-journalisierende Dateisystem der ohnehin vergänglichen RAM-Disk. In diesem Szenario muss natürlich darauf geachtet werden, dass die Dateien nicht versehentlich doch auf die Festplatte gelangen, z.B. weil das System swapt oder die Dateien mit einem Programm geöffnet werden, welches auf der Festplatte ungefragt zwischenspeichert oder Sicherungen anlegt.

Methode 1 - Mit tmpfs-Dateisystem

Die Verwendung vom tmpfs ist ein sehr einfacher Weg zur Erstellung einer RAM-Disk.

Hinweis:

Das tmpfs-Dateisystem ist kein reines RAM-Dateisystem, sondern schreibt Daten in den Festplatten-Swap, sobald der Speicherplatz im RAM knapp wird. Diese Eigenschaft könnte eventuell die oben genannten Vorteile zunichte machen.

Die folgenden Befehle [1][4] richten eine RAM-Disk ein:

  • Standardeinstellung (max. 50% des Arbeitsspeichers):

    sudo mount -t tmpfs none /PFAD/ZUM/EINHÄNGEPUNKT 
  • Relativ (20% des Arbeitsspeichers):

    sudo mount -t tmpfs -o size=20% none /PFAD/ZUM/EINHÄNGEPUNKT 
  • Absolut (200 MiB):

    sudo mount -t tmpfs -o size=200M none /PFAD/ZUM/EINHÄNGEPUNKT 

erstellen ohne weiteren Aufwand eine direkt nutzbare RAM-Disk. Dabei werden dynamisch immer so viele Ressourcen abgezweigt, wie gerade benötigt werden. Ist das Laufwerk also leer, belegt es auch keinen Platz im RAM. Es ist möglich, diese Partition standardmäßig beim Systemstart einzubinden, wenn man dauerhaften Zugriff darauf haben möchte. Hierzu muss man lediglich eine Zeile in die /etc/fstab einfügen [2]. Diese kann zum Beispiel so aussehen:

tmpfs    /media/ramdisk    tmpfs    defaults,size=20%      0       0

Hierzu muss natürlich das Verzeichnis /media/ramdisk/ zuvor erstellt und ihm Rechte [3] zugewiesen werden:

sudo mkdir /media/ramdisk
sudo chmod 777 /media/ramdisk 

Jetzt sollte die Platte beim Systemstart automatisch eingebunden werden. Manuell [4] erfolgt dies mit dem Befehl:

sudo mount tmpfs 

Anstatt /media/ramdisk kann auch ein beliebiger anderer Ort eingefügt werden, an dem die Partition eingebunden werden soll. Die Option size=X% legt den maximal abgezweigten Anteil des RAMs fest, den man belegen darf und kann individuell angepasst werden. Anstatt Prozent kann man auch eine absolute Zahl angeben (z.B. size=50m). Man sollte bedenken, nicht zu viel RAM freizugeben, da man ansonsten Gefahr läuft, ein System sehr stark auszubremsen (und zu viel auf die SWAP-Partition ausgelagert werden muss).

⚓︎

Methode 2 - Mit ext2-Dateisystem

Die Vorgehensweise entspricht der bei der Formatierung einer Festplatte, mit dem einzigen Unterschied, dass als Ziel ein Bereich des RAMs ausgewählt wird. Man öffnet zunächst ein Terminal [1]. Mit dem Befehl

sudo mke2fs -m 0 /dev/ram0 

bewirkt man, dass der Teil des RAMs, der vom System mit ram0 angesprochen wird, mit dem ext2-Dateisystem formatiert wird. Die Option -m 0 stellt sicher, dass auf der Partition kein Speicherplatz für den Root-Benutzer reserviert wird, was ansonsten unnötig Platz kosten würde. Zu beachten ist, dass der erstellte Teil damit effektiv den Systemressourcen entzogen wird, der verfügbare Arbeitsspeicher also, solange die Partition besteht, kleiner wird.

Als Ergebnis existiert jetzt eine beschreibbare Partition im RAM, die ganz normal eingebunden [4] werden kann:

sudo mount /dev/ram0 /PFAD/ZUM/EINHÄNGEPUNKT 

Also beispielsweise:

sudo mkdir /media/ramdisk
sudo mount /dev/ram0 /media/ramdisk 

erstellt werden. Falls die RAM-Disk zwar korrekt eingebunden wird, aber nicht gelesen/beschrieben werden kann, sollte man überprüfen, ob man die erforderlichen Berechtigungen [3] hat. Diese müssen gegebenenfalls mit

sudo chown BENUTZERNAME /media/ramdisk
sudo chmod u+rwx /media/ramdisk 

erteilt werden. Damit sollte man eine funktionierende RAM-Disk erstellt haben.

Größe einstellen

Mit

dmesg | grep RAMDISK 

kann man sich die momentane Größe der so erstellten RAM-Disk ausgeben lassen. Ist diese unpassend, kann diese mit der Option GRUB_CMDLINE_LINUX=ramdisk_size=x des Boot-Managers GRUB_2 bzw. in der Datei /etc/default/grub angepasst werden.

Erstellen eines Skriptes

Da die RAM-Disk bei jedem Neustart verschwindet, ist es unter Umständen praktisch, ein Skript für die obigen Befehle zu erstellen, was einem die Arbeit abnimmt, alles jedes mal von Neuem eintippen zu müssen.

Hierzu wird zunächst mit einem Editor [2] eine Datei erstellt und folgender Inhalt eingefügt:

#!/bin/sh
sudo mke2fs /dev/ram0
sudo mount /dev/ram0 /media/ramdisk
sudo chown BENUTZERNAME /media/ramdisk
sudo chmod u+rwx /media/ramdisk

Dann speichert man die Datei ab und gibt ihr noch Ausführrechte [3]. Beim Ausführen dieses Skriptes wird nun automatisch eine RAM-Disk erstellt und benutzbar gemacht. Das Erstellen der RAM-Disk kann über einen Eintrag in der Datei /etc/rc.local automatisiert werden.

⚓︎

Methode 3 - Mit ramfs-Dateisystem

Das ramfs-Dateisystem unterscheidet sich vom tmpfs-Dateisystem vor allem dadurch, dass es keine Daten in den Swap auslagert, also ein reines RAM-Dateisystem ist. Die Vorgehensweise ist hier noch simpler:

sudo mkdir /media/ramdisk
sudo mount -t ramfs ramfs /media/ramdisk 

Damit erhält man eine RAM-Disk, die sich (wie tmpfs) dynamisch der benötigten Größe anpasst. Um die Partition beim Systemstart automatisch einzuhängen, öffnet man einen Editor mit Root-Rechten und fügt folgende Zeile in die /etc/fstab hinzu:

ramfs   /media/ramdisk     ramfs   defaults        0       0

Achtung!

Das ramfs-Dateisystem hat im Gegensatz zu tmpfs leider keine Mountoptionen und bietet somit auch keine Möglichkeit, die Größe zu limitieren. Das bedeutet, dass im Extremfall das System keinen freien Hauptspeicher mehr zur Verfügung hat und nur noch auf die Festplatte auslagern kann.

RAM-Disk-Größe vs. verfügbares RAM

Grundsätzlich kann man die RAM-Disk - egal nach welcher Methode erstellt - beliebig groß halten. Zu beachten ist jedoch, dass dem System noch ausreichend "normaler" Arbeitsspeicher zu Verfügung steht, da ansonsten zu oft auf den Auslagerungsspeicher (Swap) zugegriffen werden muss, was den Geschwindigkeitsvorteil der RAM-Disk komplett wieder zunichte macht. Für Ubuntu sollte z.B. mindestens 1 GiB "normales" RAM verfügbar sein.

Diese Revision wurde am 5. März 2018 21:26 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: System