Usando tmpfs + uma partição swap muito grande para / tmp ao invés de um sistema de arquivos regular?

7

Eu tenho servidor Linux e tenho uma partição de disco sobressalente de 500GB. Eu queria formatá-lo e usá-lo para / tmp. Ocasionalmente, o servidor executa algumas tarefas de processamento de dados grandes, portanto, pode acontecer que / tmp contenha GB de dados temporários.

Então eu tive uma idéia que, em vez disso, eu poderia adicioná-lo como uma partição swap e montar / tmp para tmpfs. Esta ideia é razoável?

O servidor tem 6 GB de RAM, portanto, na maioria dos casos, os dados em / tmp seriam apenas na RAM, com a vantagem óbvia de velocidade. A questão é: e se houver digamos 10 a 20 GB de dados em / tmp, como o sistema funcionará? Qual seria o desempenho comparado a ter simplesmente / tmp montado em uma partição ext4? Obrigado pela ajuda.

Editar: É claro que o sistema começará a trocar memória quando o uso de tmpfs atingir o limite de RAM. Mas o Linux é inteligente o suficiente para trocar dados do tmpfs e manter dados "regulares" na RAM? Se sim, então suponho que poderia se comportar de maneira razoável. Caso contrário, todo o sistema será severamente afetado.

    
por Petr Pudlák 27.09.2012 / 14:27

2 respostas

11

Esta NÃO é uma boa ideia TM .

Você ficará bem com uma grande partição /tmp , montada assim (do seu /etc/fstab )

tmpfs  /dev/tmp  tmpfs  defaults,nosuid,nodev,noexec,noatime,nodiratime,size=6000M 0 0

E você pode adicionar sua unidade externa como uma partição swap gigante

/dev/sdb1  swap  swap  defaults  0 0

Quando isso atinge seu limite, sua máquina começará a trocar as páginas da RAM para o disco - nesse ponto, as médias de carga passarão pelo telhado e a máquina ficará paralisada.

É uma má idéia confiar na SWAP de qualquer forma, seria melhor vender sua unidade de 500 GB e simplesmente comprar mais RAM - é barato.

Em resumo

Se você realmente deseja usar o disco de 500 GB, pode montar o disco de 500 GB em /tmp com um sistema de arquivos não com diário, com atime e diratime desativados (por exemplo, ext2 ). Isso seria substancialmente mais rápido do que lidar com uma máquina que é SWAP ing

    
por 27.09.2012 / 15:08
0

Esta pode ser uma ideia razoável.

Colocar um sistema de arquivos real em / tmp causa sobrecarga, porque os sistemas de arquivos passam por grandes comprimentos para garantir que os dados no disco não sejam corrompidos em caso de falha do sistema. Para um / tmp que é limpo no momento da inicialização, isso é obviamente apenas sobrecarga. Usar um tmpfs evitaria essa sobrecarga.

Por outro lado, os sistemas de arquivos também garantem que os arquivos sejam organizados no disco de maneira a otimizar o tempo de acesso, ou seja, evitarão a fragmentação. Acessos de arquivos seqüenciais típicos (principalmente) resultarão em acessos de disco sequenciais, que são mais eficientes que acessos aleatórios. Esse efeito é mais pronunciado nos discos rígidos giratórios do que no SSD. A combinação swap + tmpfs não pode fazer isso facilmente, porque a troca não está ciente de qual parte da memória pertence a qual arquivo e o tmpfs não está ciente de como as páginas são mapeadas para a memória física ou para o disco. Para arquivos grandes, no entanto, ele deve funcionar bem, já que tanto o tmpfs quanto o swap tentam manter as coisas contíguas nesse caso. Pelo menos, contanto que haja muito espaço livre na troca (caso contrário, a fragmentação entra em ação), e as gravações acontecem de forma lenta o suficiente para que elas tenham uma chance de serem trocadas.

Portanto, a linha inferior é: depende, você deve tentar as duas opções para ver qual funciona melhor.

Quando você monta o tmpfs, lembre-se de definir o tamanho explicitamente. O padrão é metade da RAM física, então apenas 3 GB.

    
por 01.09.2017 / 16:16