Parece-me que um arquivo de troca é mais flexível.
Um arquivo de troca é mais flexível, mas também mais falível do que uma partição de troca. Um erro no sistema de arquivos pode danificar o arquivo de troca. Um arquivo de troca pode ser uma dor para o administrador, já que o arquivo não pode ser movido ou excluído. Um arquivo de troca não pode ser usado para hibernação. Um arquivo de troca era um pouco mais lento no passado, embora a diferença seja insignificante hoje em dia.
A vantagem de um arquivo de troca é não ter que decidir o tamanho com antecedência. No entanto, no Linux, você ainda não pode redimensionar um arquivo de troca online: você deve cancelar o registro, redimensionar e registrar novamente (ou criar um arquivo diferente e remover o antigo). Portanto, não há muitos benefícios em um arquivo de troca no Linux, em comparação com uma partição de troca. É útil principalmente quando você precisa temporariamente de mais memória virtual, em vez de um acessório permanente.
Uma partição swap pode ser preferida porque evita a dependência do sistema de arquivos quando tudo o que você precisa é um pool de memória endereçável.
Mas nada impede que você use um arquivo de troca em vez de uma partição de troca, ou além de uma partição de troca.
Crie o arquivo:
dd if=/dev/zero of=/extraswap bs=1M count=512
Inicialize o conteúdo do arquivo:
mkswap /extraswap
Use-o:
swapon /extraswap
Veja se funcionou:
free -m
Para começar a usar o arquivo de swap sempre na inicialização, edite/etc/fstab e adicione
/extraswap swap swap defaults 0 0
[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html
Para completar, adicionarei minha própria resposta:
Como disse @Gilles, um arquivo de swap não pode ser usado para hibernação. Ao usar um arquivo de troca, o sistema deve localizar o cabeçalho do arquivo de troca, mas para fazer isso, o sistema de arquivos que contém o arquivo de troca deve ser montado e um sistema de arquivos com diário - por exemplo, ext3, ext4 e basicamente todos os sistemas de arquivos modernos usados pelo Linux - não podem ser montados durante a retomada do disco. (Na realidade, existem maneiras de fazer isso, mas bastante complicado.)
Fonte: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt
Talvez a principal razão seja que a suspensão para o disco do kernel principal não funciona com arquivos de troca. Por exemplo, as instruções Debian wiki são para instalar uswsusp
se você precisar disso.
Mais recentemente, os arquivos de swap não funcionam se o sistema de arquivos for btrfs
, então é mais simples para as distribuições sempre criar swap como uma partição.
É vagamente mencionado que usar um arquivo para troca tinha desempenho potencialmente inferior do que uma partição, antes da versão 2.6 do kernel. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15
Acho que é principalmente porque o tempo de acesso aos dados localizados em uma partição é menor. O objetivo do arquivo de troca é mais ajudar o administrador de sistemas quando ele está realmente sem RAM e precisa operar operações enormes que podem travar seu sistema. Neste caso, ele criará esporadicamente a troca arquivos quando necessário.
Mas de qualquer maneira você pode ter os dois.