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.)