Você não indicou o método que estava tentando evitar.
Tradicionalmente, você emite um comando dd
que, por sua vez, envia um arquivo zero do tamanho apropriado, executa mkswap
, adiciona a entrada a /etc/fstab
e, em seguida, swapon
para ativar isto. Anexei um script de exemplo bastante escrito que tenho certeza que tem erros (é tarde onde estou e a entrada fstab
está longe de ser perfeita)
#!/bin/bash
# --- allocate 10Gbyte of swap space as 10 separate 1Gbyte files
# --- that are brought online sequentially during processing
for swpidx in 01 02 03 04 05 06 07 08 09 10
do
dd if=/dev/zero of=/swapfile.$swpidx bs=16738 count=65536
mkswap /swapfile.$swpidx
echo "/swapfile.$swpidx swap swap default 0 0" >> /etc/fstab
swapon -a
done
swapon -s
No entanto, parece que você está tentando evitar esse método. A solução mais rápida que eu poderia fornecer seria usar uma partição de swap, que não requer o processo de zerar, e pode ser colocada online em minutos. Se a sua instância estiver executando o LVM e você tiver um grupo de volumes existente para o qual você poderia criar uma partição, que funcionaria da mesma forma, e a alocação poderia ser concluída em apenas alguns minutos.
Acho que devo mencionar que a criação de um espaço de troca desse tamanho é um pouco incomum, mesmo para um servidor; e só digo isso porque a maioria dos servidores tem vários GB de RAM conectados ao lidar com programas / dados desse tamanho. Não para bisbilhotar ou qualquer coisa, mas você está realmente precisando de muito espaço de troca?
Outra coisa que você pode considerar é reajustar sua carga de trabalho, em vez de tentar alocar dinamicamente o espaço de troca. Embora seja ótimo ter tanto "sob demanda", como você mesmo apontou, ele se tornará rapidamente um gargalo devido à baixa taxa de transferência de E / S na sua instância do servidor. Quando você esgotar sua memória e estiver essencialmente "vivendo em swap", você descobrirá que a taxa de transferência de 20Mbyte / segundo transforma sua instância em um 386SX.