Quando montar / tmp (e outros diretórios temporários)

1

Quando é o momento certo para montar /tmp (no Debian)? Para /home , eu não me sentiria mal só com echo "/dev/foo /home type defaults 0 0" >>/etc/fstab - mas posso ter certeza de que /tmp não é usado por nenhum programa quando o fstab é aplicado?

Estou usando o Ubuntu ou simplesmente Debian ou Debian / Grml - isso não faria muita diferença Eu acho.

O que eu li até agora:

  • A internet está cheia de conselhos para adicionar apenas tmpfs /tmp tmpfs <optionns> 0 0 - mas não tenho certeza.

  • Eu encontrei esta resposta sobre o que fazer quando /tmp está cheio sem reiniciar (em suma: É melhor reinicializar de qualquer maneira, exceto talvez para uma montagem de união).

  • A [política do Deban] não explica onde adicionar a montagem ou quando o primeiro acesso a /tmp pode acontecer. Mais úteis são /etc/init.d/README e /etc/rcS/README no meu Ubuntu ( lê-los on-line ).

Contexto: Vou usar alguns sabores do Debian no meu Netbook (sem HD, SSD de 8 GB, 1 GB de RAM - duplicará a RAM quando necessário). Eu não estou com pouca memória. Algumas tarefas são muito lentas (construir programas em C de tamanho médio ou compilar o PDF a partir do TeX levam mais de 5 segundos), mas não demoram em um tmpfs. Eu quero montar um tmpfs em / tmp para acelerá-los.

    
por Mark 21.04.2012 / 07:41

4 respostas

2

Isto não parece ser explicitamente especificado pela política Debian, mas o Debian suporta fazer /tmp um sistema de arquivos separado (assim como /home , /var e /usr ). Isso é tradicionalmente suportado por sistemas unix. E eu posso confirmar que fazer /tmp um sistema de arquivos tmpfs, e montá-lo automaticamente via /etc/fstab , funciona no Debian.

Há alguma dificuldade na transição para /tmp em tmpfs em um sistema ativo, por causa dos arquivos que já estão em /tmp e não podem ser copiados. Mas nenhum arquivo em /tmp deve ser salvo nas reinicializações. É seguro montar um sistema de arquivos diferente para /tmp no momento em que as partições em /etc/fstab são montadas.

    
por 22.04.2012 / 01:28
1

Em geral, você deve telinit 1 antes de montar o seu diretório atual / tmp. No modo de usuário único, não deve haver arquivos em / tmp necessários para a operação do sistema, portanto, você deve poder limpar o diretório, desmontá-lo (se for uma partição separada) e, em seguida, montar outra parte nessa montagem ponto antes de retornar ao modo multiusuário.

Para garantir que / tmp não esteja em uso:

  1. Quando / tmp é um sistema de arquivos montado, fuser -m /tmp verificará se nenhum processo está usando o ponto de montagem antes de modificá-lo.
  2. Quando / tmp não é um sistema de arquivos separado, find /tmp -print0 | xargs -0 fuser fornecerá resultados semelhantes.

Você também pode considerar montar um sistema de arquivos tmpfs separado e exportar o TMPDIR (ou as variáveis de ambiente semelhantes do seu compilador) para fazer uso dele. Isso lhe daria o benefício de um espaço de rascunho do tmpf sem exigir mudanças em todo o sistema.

    
por 22.04.2012 / 04:31
1

tmp não deve ser usado para dados persistentes

O LSB (Linux Standard Base) define no FHS (FilesystemHierarchyStandard) 2.3 que

"Os programas não devem presumir que quaisquer arquivos ou diretórios em / tmp sejam preservados entre invocações do programa."

Como Gilles apontou, isso pode incluir sockets para executar programas. A maioria desses programas são serviços de rede propícios, localizados no nível de execução 2 ou 3.

Para obter informações detalhadas sobre o seu sistema:

cd /etc/init.d ; grep tmp * deve mostrar o uso de tmp durante a inicialização.

Faça um grep mktemp * adicional para procurar pelo uso de tmp em níveis mais altos.

Todo programa deve usar o tmp apenas muito em breve.

Em seu sistema em execução, execute fuser /tmp/* ; fuser /tmp/*/* e assim por diante para verificar se há processos em execução que bloqueiam o tmp.

Além disso, o / etc / fstab deve ser um local padrão para montar sistemas de arquivos - por que você não deveria adicioná-lo com "1 2"?

    
por 21.04.2012 / 22:05
0

/etc/fstab é usado somente quando algo é executado em mount .

As três vezes em que consigo pensar:

  • durante a inicialização do sistema (em um sistema Debian, isso é cedo durante a inicialização via /etc/rcS.d/S10mountall.sh )
  • quando o superusuário executa mount -a
  • quando o superusuário executa mount <mount point mentioned in /etc/fstab>

Se você está dizendo que quer criar um novo tmpfs para programas que está prestes a rodar, mas sem reiniciar, eu acho que você terá que montá-lo em algum lugar diferente de /tmp para não quebrar programas que já estão em execução.

Por que não apenas

mkdir /tmpnew
mount -t tmpfs tmpfs /tmpnew
TMPDIR=/tmpnew make...
    
por 22.04.2012 / 00:14