Erstellen Sie unter Linux eine RAM-Disk, die das Dateisystem nach dem Neustart nicht ändert

715
treecoder

Ich erstelle eine RAM-Disk unter Ubuntu 16.10 (läuft in einer VM) mit den folgenden Befehlen

sudo mkdir -p / media / RAMDisk Sudo-Mount -t tmpfs -o Größe = 2048M tmpfs / media / RAMDisk 

Danach gehe ich in die RAMDisk und mache das

df. 

Ich bekomme folgendes

tmpfs 2097152 0 2097152 0% / media / RAMDisk 

So weit, ist es gut.

Dann starte ich Ubuntu neu (wodurch die über Workstation Pro ausgeführte VM neu gestartet wird).

Nach dem Neustart erwarte ich, dass der /media/RAMDiskOrdner überhaupt nicht vorhanden ist oder als tmpfsDateisystem ohne Inhalt vorhanden ist.

Der /media/RAMDiskOrdner existiert zwar ohne Inhalt, aber überraschenderweise als /dev/sda1Dateisystem. Wenn ich df .mit /media/RAMDisk, ich sehe dies:

 / dev / sda1 17413904 9577448 6928836 59% / 

Jetzt könnte ich leicht die Befehle in meinen .bashrceinfügen und sie jedes Mal ausführen und die richtigen Dinge tun, aber ich muss wissen, was los ist.

Könnte mein Virtual Machine Manager - Workstation Pro - auch etwas tun?

0

1 Antwort auf die Frage

1
Kamil Maciorowski

Was ist los?

Nichts Ungewöhnliches.

df /media/RAMDiskWenn es sich darauf bezieht /dev/sda1, sagt es Ihnen, dass das Verzeichnis zu dem Dateisystem gehört, in /dev/sda1dem es gemountet ist /.

Dies liegt daran, dass der Effekt Ihres mountBefehls nicht dauerhaft ist, er übersteht den Neustart nicht. Auf der anderen Seite hat der mkdirBefehl ein Verzeichnis im Dateisystem von erstellt, /dev/sda1und dieses Dateisystem wird nach jedem Neustart eingehängt, sodass das Verzeichnis selbst erhalten bleibt, jedoch als Teil des /dev/sda1Dateisystems.

Sie müssen RAMDisknach (oder bei) jedem Booten irgendwie einhängen .


Wie montieren?

Das Ausführen mountvon innen .bashrcist keine gute Idee, da diese Datei während einer einzelnen Sitzung mehrmals beschafft werden kann. Da Sie sudosowieso brauchen, ist es besser zu verwenden, /etc/rc.localwas einmal ausgeführt wird, wenn das Betriebssystem startet.

Die noch bessere Möglichkeit ist jedoch, die folgende Zeile in Ihre Zeile einzufügen /etc/fstab:

tmpfs /media/RAMDisk tmpfs defaults,nosuid,nodev,size=2048M 0 0 

Untersuchen Sie userund noautoOptionen (siehe man 5 fstab). Vielleicht möchten Sie diese verwenden und mount /media/RAMDisknur bei Bedarf aufrufen .


systemd?

Diese Site lässt mich glauben, dass Sie ein systemdGerät ausführen können, wenn sich ein bestimmter Benutzer zum ersten Mal anmeldet, und es beendet, sobald die letzte Sitzung für den Benutzer geschlossen ist. Ich kenne mich nicht so gut aus systemd, daher kann ich Ihnen nicht sagen, wie (wenn) Sie es mit dem .mountGerät schaffen können.

Aber wenn Sie verwenden, systemddann sollten Sie bereits ein persönliches haben tmpfsmontiert /run/user/<UID>. Die systemweite sollte eingeschaltet sein /dev/shm.


Über /media/

Anmerkung /media/wird auch von Ubuntu verwendet, um Mountpoints zu erstellen, zB für externe USB-Laufwerke (ich glaube, udisks2ist dafür verantwortlich). Sie sehen /media/<username>/<label>so aus, als würde ich /media/RAMDiskmit nichts kollidieren. Im Allgemeinen würde ich die Verwendung dieses Standorts jedoch vermeiden. In meinen Systemen (Debian, Kubuntu, Raspbian, OpenWRT) verwende ich /mnt/<something>und hatte noch nie Probleme.

Danke für diese sehr hilfreiche Antwort. Ich werde die von Ihnen vorgeschlagenen Optionen ausprobieren. treecoder vor 6 Jahren 0