Práticas de configuração do servidor Linux / UNIX para / tmp

7

Com base no que todos vocês vêem, o que é uma configuração recomendada de / tmp em um sistema de servidor e por quê. Eu tive discussões sobre esses pontos ao longo dos anos, às vezes com divergências básicas.

Seguem basicamente as perguntas que vejo. Alguns podem sugerir que essas perguntas sejam feitas com várias perguntas, no entanto, acho que seria mais fácil para os administradores se essas informações estivessem sob um único cabeçalho. Tenho certeza que isso será informativo.

Especificamente para / tmp:

  1. O ln -s / var / tmp / tmp?

  2. O / tmp deve ser preservado entre as reinicializações ou não?

  3. O / tmp deve estar em uma área de disco real ou ter permissão para ser implementado basicamente na área de SWAP (ou tmpfs)?

  4. O / tmp deve estar em um disco diferente do disco / (raiz)?

  5. Você colocaria / tmp em um controlador de disco diferente do disco / (raiz)?

  6. Quaisquer regras gerais para o tamanho de / tmp?

  7. Como você gerenciaria o espaço / tmp enquanto o sistema está ativo? Excluir todos os arquivos > certa idade? Deixe a área sozinha até atingir a% de idade máxima?

  8. Todos os itens procedimentais devem entrar em vigor para governar essa área?

por mdpc 15.05.2009 / 03:02

6 respostas

14

Especificamente para / tmp:

  • Deve ln -s / var / tmp / tmp?

No caso de uma imagem de disco completa na memória (pense em "live boot CD") isso pode ser aceitável, já que todo byte de RAM precisa ser espremido. Caso contrário, a menos que você seja pressionado por espaço em disco, não. / var tem suas próprias peculiaridades e mixagem / tmp com / var / tmp pode ter consequências inesperadas ao executar a manutenção de sistemas. Ele também adiciona uma dependência extra em que / tmp deve ser montado para / var / tmp para funcionar corretamente; nem tudo precisa de / tmp e você pode ter uma situação em que deseja migrá-lo para uma partição ou unidade diferente, mas não pode, porque não deseja desmontar / var.

  • O / tmp deve ser preservado entre as reinicializações ou não?

Não. Se você estiver contando com isso como um comportamento consistente, mais cedo ou mais tarde encontrará problemas.

  • O / tmp deveria estar em uma área de disco real ou ter permissão para ser implementado basicamente na área de SWAP (ou tmpfs)?

Quando é muito usado, isso é uma tentação - "colocaremos / tmp em um disco RAM, isso acelerará o acesso e, quando o sistema for reinicializado / desligado, não há nada para limpar". No entanto, se você estiver pensando em implementar o espaço temporário como um disco RAM que será trocado, considerarei as ramificações do uso do espaço de troca do seu sistema por outros programas. Se swap estiver lá como uma forma de "estouro de emergência" para quando o sistema estiver em retas e precisar dele, a última coisa que você precisa é ter espaço de troca consumido por um processo de fuga / tmp, consumindo memória, causando pressão sobre o sistema. Subsistema VM para trocar para o disco. Entre a atividade de troca e o fluxo de entrada / saída adicional no disco de RAM (o que, por sua vez, pode fazer entradas de página adicionais para satisfazer um seek ()), seu sistema rapidamente se tornará vinculado à E / S.

  • O / tmp deve estar em um disco diferente do disco / (root)?

De preferência, sim, embora não seja necessário. Se você usa muito, ou tem uma carga de trabalho constante que requer, então definitivamente sim. Exemplo hipotético: um banco de dados que despeja arquivos temporários em / tmp ganharia um ligeiro aumento de velocidade introduzindo / tmp em um fuso separado (ou seja, drive).

  • Você colocaria / tmp em um controlador de disco diferente do disco / (raiz)?

Se você tiver requisitos de recuperação ou velocidade, isso deve ser considerado.

  • Quaisquer regras gerais para o tamanho de / tmp?

Ele deve acomodar 2x sua carga de trabalho esperada. Com isso, quero dizer que, se você tiver usuários locais regularmente usando esse espaço, mais cedo ou mais tarde alguém fará algo bobo e tentará preenchê-lo. Ter um pequeno excesso permitirá que você evite "problemas" estranhos com programas que param porque seus arquivos temporários preencheram o espaço restante.

Se esta for uma instalação de "serviços comuns", em que o servidor fornece um ou mais serviços de rede, mas não hospeda usuários, isso provavelmente estará no lado de baixo. Se esta for uma instalação multiusuário, ela estará no lado alto (sim, ainda há lugares que hospedam usuários reais e não apenas seus serviços de rede).

  • Como você gerenciaria o espaço / tmp enquanto o sistema está ativo? Excluir todos os arquivos > certa idade? Deixe a área em paz até atingir a% de idade máxima?

Olhe no comando tmpwatch , acho que você vai achar que combina com essa parte da sua pergunta (s ) agradável. O comando simplesmente exclui todos os arquivos após uma determinada idade em horas. Dependendo da rapidez de preenchimento, você pode fazer 30 dias, 45 dias, 90 dias, etc.

  • Todos os itens procedimentais devem entrar em vigor para governar essa área?

Eu recomendaria o seguinte:

  1. Todos os arquivos são transitórios e não é garantido que sobrevivam a uma reinicialização.
  2. Arquivos obsoletos após% age serão removidos todas as noites à meia-noite, horário local, por meio de um cron job que execute o comando tmpwatch.

O resto é uma questão de suas necessidades específicas.

    
por 15.05.2009 / 03:37
1

Muita coisa depende da carga específica do aplicativo que você está usando. Alguns servidores de aplicativos (SunONE, coisas antigas do netscape) escrevem algumas centenas a alguns milhares de arquivos para / tmp - nessa situação, você realmente não quer que ele seja um ramdisk montado, e não há razão para preservá-lo entre reinicializações.

Os servidores estão se tornando menos gerais e com um propósito mais especial - esse tipo de pergunta (e a pergunta similar "como faço para particionar meu sistema") realmente depende do seu carregamento.

Eu recentemente tive um servidor que foi reiniciado pela primeira vez depois de 4 anos ou mais - ele ficou preso no meio da inicialização apagando todos os arquivos em / tmp - havia muito lixo lá que levou uma boa hora para limpe. Definitivamente, é uma boa ideia limpá-lo periodicamente se sua caixa não for reinicializada com frequência.

    
por 15.05.2009 / 03:10
1

Da experiência, eu recomendo não misturar seus diretórios / var / tmp e / tmp.

A razão é / var (esperançosamente) onde todos os seus dados de log, cache e serviço (por exemplo, bancos de dados) residirão. Geralmente, é uma boa idéia colocar / var em uma partição separada, portanto, se um evento de dados significativo (por exemplo, muitos logs ou gravações de banco de dados) ocorrerem, suas partições root e / tmp ainda terão espaço livre para operar de forma confiável.

Por exemplo, eu acabei de retornar de um site onde essa prática não foi seguida (ou seja, tudo estava em uma partição) e, como resultado da construção de log, todo o sistema foi colocado de joelhos. Se um layout de particionamento sane tivesse sido seguido, a partição / var ficaria sem espaço, mas o servidor permaneceria responsivo.

    
por 15.05.2009 / 04:56
0

Respondendo apenas alguns pontos ...

Eu colocaria / tmp em uma partição diferente de /, apenas para que eu pudesse montar / ro durante a operação normal. Disco separado? Isso depende de quanto usar / tmp e / get e se eles ficam do outro lado.

Quanto às partes 1 e 2, na minha caixa (Mac OS X) o / var / tmp não é limpo diariamente, mas / tmp é, então eles têm políticas diferentes e, portanto, não devem ser linkados juntos. Não tenho certeza se a limpeza diária do / var / tmp não quebraria nada e gostaria de investigar isso antes de se tornar mais vociferante - são apenas 172k no momento.

    
por 15.05.2009 / 03:13
0

Um item que eu consideraria - em referência à sua última pergunta - é fazer / tmp noexec, nosuid - ou seja, nenhum executável poderá ser executado a partir de / tmp, e nenhum binário suid poderá trocar o userid. No entanto, isso pode afetar alguns programas, portanto, teste-o antes de confiar nele completamente - acho que o ssh era um desses, mas esqueci.

Esta é uma medida de segurança que melhorará sua segurança em relação a / tmp.

Outra coisa: muitos usuários tentarão usar / tmp como armazenamento temporário permanente: qualquer limpeza forçada de / tmp deve ser feita junto com a educação dos usuários: lembre-os de que / tmp é temporário e qualquer coisa colocada lá pode desaparecer a qualquer momento.

    
por 05.06.2009 / 16:42
0

Should /tmp be on a real disk area or allowed to be implemented basically on the SWAP area (or tmpfs)?

Você já considerou o que acontece quando o / tmp é preenchido nessa situação? Não é o tipo de coisa que você faz duas vezes. Eu fiz isso uma vez (no Solaris / tmp vou comer toda a memória RAM disponível e swap), e trouxe o servidor para seus joelhos.

    
por 05.06.2009 / 18:38