Przenieś / tmp do RAM

16

Próbuję przejść /tmpdo pamięci RAM i postępować zgodnie z dobrą praktyką:

  • /var/tmpNIE należy go umieszczać tmpfs, ponieważ musi przetrwać ponowne uruchomienie

  • nie montuj /tmpjako samodzielny tmpfs, ale polegaj na /dev/shmlub/run/shm

Jednak zmieniło się między jądrem 2.6 i 3.2:

Zmiany w konfiguracji i domyślnych systemach plików tmpfs

Na jądrze 3.2, należy RAMTMP=yesw /etc/default/tmpfs.

Moje pytanie brzmi: jak mogę osiągnąć ten cel za pomocą starszych jąder?

Moim wyborem nie jest modyfikacja / etc / fstab ani tego:

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

Czy istnieje coś takiego jak RAMTMPdla jąder 2.6?

Massimo
źródło
1
tmpfsuważane za szkodliwe . Jedzenie do namysłu.
sr_
8
@ sr_ Przepraszamy, zdecydowanie nie zgadzam się z tym artykułem. /tmpmoże i powinien być używany do plików tymczasowych, o to właśnie chodzi. /tmpnie powinien przetrwać ponownego uruchomienia (użyj /var/tmpdo tego) i kto tworzy wiadomość e-mail o połowę mniejszej ilości pamięci RAM + wymiany (bez zapisywania)?
Marco
@Marco na pewno, właśnie wrzuciłem coś, co wydawało mi się powiązane.
sr_

Odpowiedzi:

19

Nie trzeba robić wszystko, że można po prostu zamontować /tmpjak tmpfsprzy użyciu wiersza jak następuje w /etc/fstab:

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

Możesz także zrobić to na żywo (ale pamiętaj, że rzeczy, które są obecnie w /tmptwoim systemie plików, nie będą dostępne, chyba że za pośrednictwem i-węzła i obecnie otwartych deskryptorów plików, więc powinieneś to zrobić, modyfikując /etc/fstabi ponownie uruchamiając):

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

Zauważ, że tmpfsmożna zamienić. Jeśli chcesz mieć system plików oparty wyłącznie na pamięci RAM, użyj ramfs.

Chris Down
źródło
Chris, mam na myśli „najlepsze praktyki”. Programiści umieścili natywne wsparcie dla mount / tmp nad ... / shm; Czytam, że lepiej jest ponownie użyć tych samych tmpfs.
Massimo,
3
@Massimo Moim zdaniem najlepszą praktyką jest nie wiązanie mount. Dodaje niepotrzebną złożoność.
Chris Down
5
@Massimo Gdzie znajdujesz te „najlepsze praktyki”? Jedynym powodem, dla którego nie widzę montowania /tmpjako tmpfs, jest to, że masz teraz 2 potencjalne systemy plików tmpfs, które mogą wypełnić i użyć więcej pamięci ( /tmpi /dev/shm). Ale jeśli naprawdę martwisz się wypełnieniem 2 montowań tmpfs, możesz zmniejszyć maksymalny rozmiar montowania tmpfs.
Patrick,
@ChrisDown co jest złego w bind mount? Posiadanie pojedynczego tmpfs może uprościć sprawę, prawda?
CMCDragonkai
2
@CMCDragonkai Bindowskie wierzchowce są niczym innym, jak prostym wewnętrznie, zawierają sporo nieintuicyjnych ostrzeżeń, których prawdopodobnie nie zamierzacie (szczególnie nagłaśniany jest dramat otaczający, wymagający remontów dla montowań tylko do odczytu). tmpfsZamiast tego użyj dwóch mocowań.
Chris Down
17

/etc/default/tmpfsjest dla sysvinit, dla systemd(Debian domyślny od jessie) musisz tylko:

systemctl enable tmp.mount

i na Debian Stretch

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

patrz dziennik zmian na https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787542#74

Lluís
źródło
Dzięki! To jest właściwy sposób na przeniesienie / tmp na tmpfs w Jessie.
Yasiru G
Dziękuję bardzo! na Gentoo nie rozumiem, dlaczego mój / tmp jest zamontowany tmpfs. robi to skrypt systemd tmp.mount.
ufk
4

Wiem, że jest to dość stare, ale w ustawieniach dystrybucji typu Debian Ustaw RAMTMP, RAMRUN i RAMLOCK w / etc / default / tmpfs (/ etc / default / rcS lub przed wheezy) wykonuje to samo zadanie.

luison
źródło