Vraag Hoe kan ik RAM-opslag gebruiken voor de / tmp-directory en hoe een maximale hoeveelheid RAM-gebruik ervoor instellen?


Na het zien de reactie door Anoniem op de vraag Hoe wordt de / tmp-map opgeruimd?, Ik vond dat het een geweldig idee zou zijn om het op mijn systeem te implementeren, aangezien ik 16GB RAM heb en ik heb het nooit helemaal gebruikt.

Mijn tijdelijke bestanden worden nooit naar de schijf geschreven. Ze worden naar een RAM-schijf geschreven. Ik heb gedaan tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 in / etc / fstab.

Mijn vraag is:

Kan ik een maximale waarde instellen voor RAM-gebruik voor /tmp? En wat zou er in dat geval gebeuren als het maximale aantal overschreden zou worden, zou het dan in de harde schijf schrijven?

Ik heb een oplossing gelezen waarin staat:

mkdir -p /tmp/ram
sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/

Maar volgens mij zal dit geen permanente oplossing zijn. Als ik het permanent wil hebben, moet het worden toegevoegd aan de /etc/fstab configuratiebestand.

Als dit de juiste oplossing is, hoe kan ik die mount-opdracht omzetten in een regel in /etc/fstab?


80
2017-08-07 18:20


oorsprong


dit is ook een goed idee als je dat hebt en SSD omdat je het niet zult 'consumeren' met niet nuttige geschriften ... - Postadelmaga
Ha ha precies dezelfde vraag bracht me hier: D - Teddy Markov


antwoorden:


Je hebt helemaal gelijk. De bijbehorende fstab-vermelding ziet er als volgt uit:

tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0

Houd er rekening mee dat:

Als tmpfs wordt opgevuld, het gedraagt ​​zich als elke fysieke harde schijf door een "niet genoeg ruimte" -fout te geven. Tijdens het rebooten (en dus het legen van de cache) zal dit verholpen worden, je kunt in de problemen komen wanneer een enkele handeling meer ruimte gebruikt om te beginnen dan dat er ruimte is op tmpfs. In dit geval zal uw computer van ram naar schijf gaan swappen, waardoor uw systeem tot stilstand zal komen, aangezien u natuurlijk een swap-partitie hebt.

Dit in aanmerking nemend, kan een afmeting van 512MB tegenwoordig veel te klein zijn, omdat veel meer ram in moderne machines bestaat en het veel goedkoper is geworden. Aangezien je al 16GB RAM hebt, gebruik je de standaardwaarde van de helft van je ram voor tmpfs zou meer dan voldoende moeten zijn voor bijna alle scenario's. Om de standaardwaarde te gebruiken, laat u eenvoudig de size=512M invoer in uw /etc/fstab het dossier.

Nog een opmerking:

Je kunt net zo gemakkelijk andere systeemmappen ook in ramdisk koppelen, zoals

/var/cache

/var/games

/var/log/apt (gebruik alleen defaults,noatime zonder mode= of nosuid)

Maar let op: Dezelfde regels zijn van toepassing als hierboven, maar als je te weinig ruimte hebt, kan dit grote problemen opleveren. Bijv. stel dat er te weinig ruimte is voor / var / log / apt, zodat u geen programma's kunt installeren! Verder laden /var/log mappen in ramdisk zullen al uw logbestanden verwijderen na het opnieuw opstarten, zodat u niet in staat zult zijn om uw systeem te debuggen als er iets onverwachts gebeurt. Gebruik deze instellingen dus op eigen risico!

Noot redactie: Ik heb de /run in tmpfs mount optie, omdat deze map en zijn submappen al zijn aangekoppeld tmpfs standaard.


73
2017-08-08 07:24



Als ik het niet mis heb, / var / tmp / is voor het bewaren van bestanden na het opnieuw opstarten. Dat is het belangrijkste verschil tussen dit en / tmp /, dus moet je niet bewegen / var / tmp om te rammen.
Als Ubuntu 4GB tmpf's heeft, gebruikt het dan mijn SWAP-partitie van 20 GB? - loostro
Ja, ik moet dit ook toevoegen. Zodra tmpf's zijn limieten heeft overschreden, wordt het uitgebreid naar swappartitie (geef aan dat er een is). - FuzzyQ
Is het toewijzen van de helft van je RAM hiertoe dat de helft van je RAM gereserveerd is voor de RAMDISK, of is het alleen een cap voor wat de RAMDISK kan gebruiken, en wat er niet in gebruik is, is vrije RAM die wordt toegewezen aan welk programma dan ook RAM nodig heeft ?? - matt
@ matt Het is maar een pet. - FuzzyQ


Op systemen die gebruiken systemd, je hebt de mogelijkheid om een ​​systemd unit-bestand te gebruiken in plaats van fstab om het doel van het gebruik te bereiken tmpfs opsteigen tmp. Op mijn Ubuntu 16.04-systeem heb ik het volgende uitgevoerd:

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

Het bestand /usr/share/systemd/tmp.mount lijkt op:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target

[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime

[Install]
WantedBy=local-fs.target

Met behulp van de fstab-benadering van FuzzyQ vertaalt systemd je fstab-ingangen dynamisch in mount-eenheden. Ik denk niet dat een van beide benaderingen beter is.


23
2017-08-13 19:02



Je zal nodig hebben systemctl enable tmp.mount na cp zal anders systemctl mislukken met bericht "Failed to start tmp.mount: Unit tmp.mount not found." - vimdude
@Rick, het is zelfs beter om te gebruiken systemctl edit tmp.mount dat zou distro-neutraal zijn. Dat zet je wijzigingen in override.conf, zodat je standaard tmp.mount niet wijzigt en je override.conf gemakkelijk kunt verwijderen om terug te gaan naar de standaardconfiguratie. - Bulat M.