Mover / tmp para RAM

16

Estou tentando mudar /tmppara a RAM e obedeço às boas práticas:

  • /var/tmpNÃO deve ser colocado tmpfs, pois deve sobreviver a reinicializações

  • não monta /tmpcomo autônomo tmpfs, mas depende /dev/shmou/run/shm

No entanto, as coisas mudaram entre os kernels 2.6 e 3.2:

Alterações na configuração e nos padrões dos sistemas de arquivos tmpfs

No kernel 3.2, use RAMTMP=yesin /etc/default/tmpfs.

Minha pergunta é: como posso atingir esse objetivo com kernels mais antigos?

Minha escolha é nem modificar / etc / fstab nem isso:

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

Existe algo parecido RAMTMPcom o kernel 2.6?

Massimo
fonte
11
tmpfsconsiderado prejudicial . Alimento para o pensamento.
sr_
8
@sr_ Desculpe, não concordo totalmente com o artigo vinculado. /tmppode e deve ser usado para arquivos temporários, esse é o objetivo. /tmpnão deve sobreviver a uma reinicialização (use /var/tmppara isso) e quem compõe um email com metade do tamanho da RAM + swap (sem salvá-lo)?
Marco
@ Marco claro, eu estava apenas jogando algo que eu pensava relacionado.
sr_

Respostas:

19

Você não precisa fazer tudo isso, você pode simplesmente montar /tmpcomo tmpfsusando uma linha como a seguinte em /etc/fstab:

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

Você também pode fazê-lo ao vivo (mas lembre-se de que as coisas que estão atualmente no /tmpseu sistema de arquivos atual não poderão ser acessadas, exceto através do inode e dos descritores de arquivos abertos no momento, portanto, você deve fazer isso modificando /etc/fstabe reinicializando):

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

Observe que um tmpfspode trocar. Se você deseja um sistema de arquivos verdadeiramente apenas com RAM, use ramfs.

Chris Down
fonte
Chris, meu ponto é "melhores práticas". Os desenvolvedores colocam suporte nativo para montar / tmp sobre ... / shm; Eu li que é melhor reutilizar os mesmos tmpfs.
Massimo
3
@ Massimo Minha opinião é que a melhor prática é não ligar o mount. Acrescenta complexidade desnecessária.
Chris #
5
@Massimo Onde você encontra essas 'melhores práticas'? A única razão pela qual vejo a montagem /tmpcomo tmpfs é porque agora você tem 2 sistemas de arquivos tmpfs em potencial que podem preencher e usar mais memória ( /tmpe /dev/shm). Mas se você estiver realmente preocupado em preencher duas montagens tmpfs, poderá diminuir o tamanho máximo da montagem tmpfs.
Patrick
@ChrisDown O que há de ruim no bind mount? Também ter um único tmpfs pode facilitar as coisas, certo?
precisa saber é o seguinte
2
As montagens @CMCDragonkai Bind são tudo menos simples internamente, elas vêm com algumas advertências não intuitivas que você provavelmente não pretende (uma particularmente divulgada é o drama que exige remontagem para montagens somente leitura). Basta usar duas tmpfsmontagens em seu lugar.
Chris Down
17

/etc/default/tmpfsfor for sysvinit, for systemd(padrão do Debian desde jessie) você só precisa fazer:

systemctl enable tmp.mount

e no Debian Stretch

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

consulte changelog em https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787542#74

Lluís
fonte
Obrigado! Este é o caminho certo para mover / tmp para tmpfs em Jessie.
Yasiru G
muito obrigado! no gentoo eu não entendi porque meu / tmp é montado tmpfs. o script systemd tmp.mount faz isso.
Ufk 11/03/16
4

Eu sei que isso é bastante antigo, mas na configuração das distribuições do tipo Debian, definir RAMTMP, RAMRUN e RAMLOCK em / etc / default / tmpfs (/ etc / default / rcS ou antes do wheezy) faz o mesmo trabalho.

luison
fonte