Ramdisk Ubuntu 10.04

12

Ich verwende Ubuntu 10.04 (64bit) für meinen Desktop.
Der Computer verfügt über 5 GB RAM.

Ich möchte eine RAM-Disk (1G oder 2G) verwenden, weiß aber nicht, wie ich das machen soll.

Gibt es OpenSource-Produkte für RAM-Datenträger?

Benjamin
quelle

Antworten:

18

Die Technologie ist in den Kernel integriert, Sie benötigen keine zusätzlichen Tools. Tatsächlich haben Sie bereits einige RAM-Datenträger (die Sie nicht verwenden sollten, sie sind für das System reserviert), die Sie sehen können, wenn Sie dies tun

grep -w tmpfs /proc/mounts

Fügen /ramdiskSie die folgende Zeile hinzu, um eine 2-GB-RAM-Disk einzurichten, auf der bereitgestellt wird /etc/fstab:

ramdisk  /ramdisk  tmpfs  mode=1777,size=2g

Hängen Sie dann den Datenträger mit dem Befehl ein mount /ramdisk(dies erfolgt automatisch beim Neustart).

Die angegebene Größe ist ein Maximum. Die Festplatte belegt nur so viel Speicher wie die darauf befindlichen Dateien.


Sie können ändern /tmp, um eine RAM-Disk zu sein. Geben Sie in die /etc/fstabobige Zeile /tmpstattdessen einen /ramdiskNeustart ein.

Beim ersten Neustart nach dem Wechseln /tmpzu einer RAM-Disk werden die darin enthaltenen Dateien /tmpausgeblendet. Das ist harmlos, außer dass sie ein wenig Speicherplatz verschwenden. Sie können sie aufräumen ( nachdem Sie mit /tmpauf der RAM-Disk neu gestartet haben ), indem Sie dies tun

mount --bind / /mnt
rm -r /mnt/tmp/* /mnt/tmp/.*
umount /mnt

Der mount --bindBefehl erstellt /mnteine doppelte Ansicht Ihres Root-Dateisystems. Aber während die RAM-Disk jetzt /tmpin der Root-Ansicht verdeckt ist, ist nichts verdeckt /mnt/tmp.

HINZUGEFÜGT : Sie können /tmpohne Neustart auf eine RAM-Disk wechseln , dies ist nur etwas komplizierter. Fügen Sie die Zeile /etc/fstabwie oben beschrieben hinzu und führen Sie die folgenden Befehle aus:

mkdir /tmp.old
mount --bind /tmp /tmp.old
mount /tmp
cd /tmp
ln -s /tmp.old/* /tmp/.* .

Dann löschen Sie /tmp.oldnach Ihrem nächsten Neustart.

Der Grund, warum Sie nicht einfach Dateien von /tmp.oldnach verschieben können , /tmpist, dass in einigen wichtigen Programmen Dateien geöffnet sind /tmp, die beispielsweise /tmp/.X11-unix/X0vom X-Server abgehört werden und jedes GUI-Programm beim Start geöffnet wird. Wenn Sie eine Datei in ein anderes Dateisystem verschieben, müssen Sie sie kopieren und die alte Datei löschen, sodass der X-Server zwar weiterhin empfangsbereit ist /tmp.old/.X11-unix/X0, X-Clients jedoch /tmp/.X11-unix/X0vergeblich Kontakt aufnehmen . Auf einem Server könnten Sie mit einem Umzug davonkommen, wenn Sie vorsichtig sind.

Gilles 'SO - hör auf böse zu sein'
quelle
@giles: Gibt es eine Möglichkeit, dies zu tun, ohne fstab zu ändern und neu zu starten? Ich gehe davon aus, dass es eine entsprechende mkfs-Methode gibt, gefolgt von einem Mount, aber "man mkfs" war nicht sehr hilfreich.
Hotei
1
@hotei: Der Neustart ist nur zu wechseln , /tmpum über tmpfs. Es ist nicht notwendig und ich habe meine Antwort bearbeitet, um zu erklären, wie es geht, aber es ist komplizierter. Es ist nicht mkfsinvolviert, da es keinen zugrunde liegenden Speicher gibt, der vorbereitet werden muss. Der Kernel übernimmt alles.
Gilles 'SO - hör auf böse zu sein'
@giles: Danke für das Update. Mir hat der Teil gefehlt, in dem "Magie" beim Lesen der fstab-Zeile durch mount passiert. Ich glaube, ich verstehe, warum es jetzt funktioniert.
Hotei
Kann ich fragen, ob dies zu einer spürbaren Beschleunigung führt?
Robert Massaioli
@Robert: Ich denke, es hat zu einer merklichen Beschleunigung der sehr langsamen SSD meines Netbooks geführt (hauptsächlich, weil die Synchronisierung mehrere Sekunden dauern kann und /tmpdie Häufigkeit der Synchronisierungen auf der Festplatte zunimmt), aber dies ist ein unzuverlässiger subjektiver Eindruck. Ich habe noch nie versucht, ein Benchmarking durchzuführen.
Gilles 'SO- hör auf böse zu sein'