Verschieben Sie / tmp in das RAM

16

Ich versuche in /tmpden Arbeitsspeicher zu wechseln und befolge die folgenden bewährten Methoden:

  • /var/tmpsollte NICHT eingelegt werden tmpfs, da es Neustarts überstehen muss

  • nicht /tmpals Stand-alone- Mount tmpfs, sondern auf /dev/shmoder verlassen/run/shm

Zwischen Kernel 2.6 und 3.2 hat sich jedoch einiges geändert:

Änderungen an der Konfiguration und den Standardeinstellungen von tmpfs-Dateisystemen

Verwenden Sie auf 3.2-Kernel RAMTMP=yesin /etc/default/tmpfs.

Meine Frage ist: Wie kann ich dieses Ziel mit älteren Kerneln erreichen?

Ich habe weder die Wahl, noch / etc / fstab zu ändern:

mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp

Gibt es so etwas wie RAMTMPfür 2.6-Kernel?

Massimo
quelle
1
tmpfsals schädlich angesehen . Denkanstoß.
Sr_
8
@sr_ Entschuldigung, ich bin mit dem verlinkten Artikel überhaupt nicht einverstanden. /tmpkann und sollte für temporäre Dateien verwendet werden, das ist der springende Punkt. /tmpsoll einen Neustart nicht überstehen (dafür verwenden /var/tmp) und wer erstellt eine E-Mail, die halb so groß ist wie RAM + Swap (ohne es zu speichern)?
Marco
@ Marco sicher, ich warf nur in etwas, was ich für verwandt hielt.
Sr_

Antworten:

19

Sie müssen nicht alles tun, können Sie einfach montieren /tmpwie tmpfsin durch eine Zeile wie die folgende verwenden /etc/fstab:

tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0

Sie können dies auch live tun (beachten Sie jedoch, dass auf Inhalte, die sich derzeit in /tmpIhrem aktuellen Dateisystem befinden, nur über den Inode und die derzeit geöffneten Dateideskriptoren zugegriffen werden kann. Sie sollten dies also wirklich tun, indem Sie sie ändern /etc/fstabund neu starten):

mount -o mode=1777,nosuid,nodev -t tmpfs tmpfs /tmp

Beachten Sie, dass eine tmpfsDose tauschen kann. Wenn Sie ein reines RAM-Dateisystem benötigen, verwenden Sie ramfs.

Chris Down
quelle
Chris, mein Punkt ist "Best Practices". Die Entwickler haben native Unterstützung für mount / tmp über ... / shm; Ich habe gelesen, dass es besser ist, die gleichen tmpfs wiederzuverwenden.
Massimo
3
@ Massimo Meine Meinung ist, dass die beste Vorgehensweise darin besteht , Mount nicht zu binden. Es fügt unnötige Komplexität hinzu.
Chris Down
5
@ Massimo Wo finden Sie diese "Best Practices"? Der einzige Grund, warum ich das Mounten /tmpals tmpfs ablehnen kann, ist, dass Sie jetzt 2 potenzielle tmpfs-Dateisysteme haben, die mehr Speicher ( /tmpund /dev/shm) belegen und nutzen können . Wenn Sie jedoch wirklich Bedenken haben, 2 tmpfs-Bereitstellungen aufzufüllen, können Sie die maximale Größe der tmpfs-Bereitstellung verringern.
Patrick
@ ChrisDown was ist schlecht an bind mount? Auch mit einem einzigen tmpfs könnte es einfacher werden, oder?
CMCDragonkai
2
@CMCDragonkai Bind-Reittiere sind intern alles andere als einfach. Sie sind mit einigen nicht intuitiven Vorbehalten verbunden, die Sie wahrscheinlich nicht beabsichtigen (besonders bekannt ist das Drama, das Remount für Nur-Lese-Reittiere erfordert). Verwenden Sie tmpfsstattdessen zwei Halterungen.
Chris Down
17

/etc/default/tmpfsist für sysvinit, für systemd(Debian-Standard seit Jessie) müssen Sie nur Folgendes tun:

systemctl enable tmp.mount

und auf Debian Stretch

cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount

Weitere Informationen finden Sie im Changelog unter https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787542#74

Lluís
quelle
Vielen Dank! Dies ist der richtige Weg, um / tmp nach tmpfs in Jessie zu verschieben.
Yasiru G
ich danke dir sehr! auf gentoo habe ich nicht verstanden, warum mein / tmp tmpfs gemountet ist. das systemd script tmp.mount erledigt das.
Ufk
4

Ich weiß, dass dies ziemlich alt ist, aber in Debian-Distributionen erledigt die Einstellung RAMTMP, RAMRUN und RAMLOCK in / etc / default / tmpfs (/ etc / default / rcS oder bevor Wheezy) den gleichen Job.

luison
quelle