tmpfs não transborda para trocar

3

Eu configurei tmp em /etc/fstab assim:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 2

O problema é que agora /tmp está limitado a metade da memória da máquina e, quando atinge esse limite, estou recebendo o erro "não há espaço disponível no dispositivo".

Gostaria de torná-lo "ilimitado", ou seja, aumentar para o tamanho do disco.

    
por m33lky 16.05.2017 / 02:46

1 resposta

9

Tenho a impressão de que você tem alguns equívocos em relação a tmpfs . Você pode achar útil ler o documentação do kernel sobre o tópico; Vou tentar esclarecer as coisas para você aqui.

O título da sua pergunta " tmpfs não transborda para swap" não parece refletir o conteúdo real da sua pergunta, mas em todo caso tmpfs usa o swap, embora, sem dúvida, não transbordem para trocar. tmpfs é fundamentalmente um sistema de arquivos baseado em memória (virtual); seu conteúdo vive apenas na memória, mas como eles são trocáveis, o kernel pode armazená-los em troca, em vez de memória física, se necessário. No entanto os sistemas de arquivos tmpfs não podem ser maiores que a quantidade total de memória virtual disponível, ie RAM física e swap, conforme indicado por exemplo por free -h .

Por padrão, os sistemas de arquivos tmpfs têm um tamanho máximo igual à metade da quantidade de memória física disponível. Você pode aumentar isso usando o parâmetro size , mas, novamente, ele nunca poderá ser mais do que a memória física e a troca disponíveis (embora esse limite não seja imposto no momento da montagem). Quando o sistema de arquivos atinge o tamanho máximo (ou melhor, contém arquivos ocupando muito espaço), informa que ficou sem espaço, como você descobriu. tmpfs não suporta o transbordamento em nenhum lugar quando fica sem espaço.

Se você precisar de espaço de armazenamento temporário para arquivos grandes, use /var/tmp em vez de /tmp . Você realmente não quer um sistema de arquivos tmpfs muito grande, que é uma receita para o desastre quando ele é preenchido (as formas usuais de recuperação de memória do kernel não funcionam em tmpfs ).

(Se você tem muita memória RAM, é claro, um grande tmpfs pode funcionar. Eu corro alguns sistemas com sistemas de arquivos de compilação tmpfs dimensionados a 75% da RAM, de 32GiB, 64GiB ou até mais.)

    
por 16.05.2017 / 06:59