Todos os produtos
Search
Central de documentação

:Configure a swap partition for a Linux instance

Última atualização: Jul 03, 2026

Quando uma instância ECS da Alibaba Cloud está com pouca memória física, configurar o espaço de swap é uma solução de emergência econômica. Esse recurso utiliza espaço em disco como memória virtual para evitar erros de falta de memória (OOM) e manter o sistema em execução quando a memória física se esgota.

Importante
  • Se uma instância ECS estiver com pouca memória, recomendamos primeiro aumentar a memória física por meio da alteração do tipo de instância.

  • Não recomendamos o uso de partição swap em disco básico, pois o baixo desempenho de I/O pode causar gargalos no sistema. Para outros tipos de discos em nuvem, utilize a partição swap conforme sua necessidade. No entanto, configure-a adequadamente para evitar trocas frequentes de páginas e manter a estabilidade do sistema.

Método 1: Usar o plugin do Cloud Assistant (recomendado)

Importante

Para configurar automaticamente uma partição swap, instale o Agente do Cloud Assistant. Caso sua instância não suporte o Cloud Assistant ou não seja possível instalar o agente, utilize o Método 2 para configurar o swap manualmente.

Ativar a partição swap

  1. Faça login em uma instância ECS.

    1. Acesse ECS console - Instances. No canto superior esquerdo, selecione a região e o grupo de recursos da instância desejada.

    2. Acesse a página de detalhes da instância alvo. Clique em Connect e selecione Workbench. Siga as instruções na tela para acessar o terminal.

  2. Execute o comando a seguir para ativar a partição swap.

    acs-plugin-manager --exec --plugin ACS-ECS-SwapConfig --params  --enable

    A saída abaixo indica que a partição swap foi ativada com sucesso.

    [INFO] The system support auto config swap partition.
    [INFO] Alibaba Cloud Swap Configuration Document:https://www.alibabacloud.com/help/en/ecs/support/how-do-i-configure-the-swap-partition-of-a-linux-instance
    [INFO] Turn On Swap......
    [INFO] RAM size: 8 G
    [INFO] Swap size: 8 G
    [INFO] Check disk available size......
    [INFO] Disk available size: 33 G
    [INFO] Disk available size enough
    [INFO] Recover swap configuration from /etc/fstab
    [INFO] Config vm.swappiness=20 to /etc/sysctl.conf
    [SUCCESS] Swap has been turned on.
    Nota

    O plugin define automaticamente o tamanho da partição swap com base na memória do sistema, seguindo estas regras:

    • Se RAM ≤ 2 GB, então Tamanho do Swap = RAM × 2.

    • Se 2 GB < RAM ≤ 8 GB, então Tamanho do Swap = RAM.

    • Se RAM > 8 GB, não é recomendado usar partição swap.

    • Também não se recomenda criar partição swap se isso resultar em menos de 5 GB de espaço disponível em disco.

    O valor padrão do parâmetro vm.swappiness é 20. Para personalizar o tamanho da partição swap, consulte Método 2: Configurar manualmente uma partição swap.

Verificar o status da partição swap

Execute o comando a seguir para verificar o status da partição swap.

acs-plugin-manager --exec --plugin ACS-ECS-SwapConfig --params  --status

A saída abaixo indica que a partição swap está ativada.

[INFO] The system support auto config swap partition.
[INFO] Alibaba Cloud Swap Configuration Document:https://www.alibabacloud.com/help/en/ecs/support/how-do-i-configure-the-swap-partition-of-a-linux-instance
[INFO] ========== Swap status ==========
NAME      TYPE SIZE USED PRIO
/swapfile file   8G   0B   -2
[INFO] Swap is enabled

Desativar a partição swap

Execute o comando a seguir para desativar a partição swap.

acs-plugin-manager --exec --plugin ACS-ECS-SwapConfig --params  --disable

A saída abaixo indica que a partição swap foi desativada com sucesso.

[INFO] The system support auto config swap partition.
[INFO] Alibaba Cloud Swap Configuration Document:https://www.alibabacloud.com/help/en/ecs/support/how-do-i-configure-the-swap-partition-of-a-linux-instance
[INFO] Turn Off Swap......
[INFO] Cancel swap configuration from /etc/fstab
[INFO] Config vm.swappiness=0 to /etc/sysctl.conf
[INFO] Deleted swapfile: /swapfile
[SUCCESS] Swap has been turned off.

Método 2: Configuração manual

Ativar a partição swap

Etapa 1: Verificar o status atual do swap

Antes de começar, verifique se o sistema já possui alguma configuração de swap para evitar conflitos.

  1. Faça login em uma instância ECS.

    1. Acesse ECS console - Instances. No canto superior esquerdo, selecione a região e o grupo de recursos da instância desejada.

    2. Acesse a página de detalhes da instância alvo. Clique em Connect e selecione Workbench. Siga as instruções na tela para acessar o terminal.

  2. Verifique a configuração da partição swap.

    swapon --show
    • Caso o comando não retorne nenhuma saída, não há swap configurado e você pode prosseguir para a próxima etapa.

    • Se houver uma saída semelhante à mostrada abaixo, já existe um espaço de swap ativo. Nesse caso, desative e limpe o arquivo de swap ou crie um novo arquivo de swap em um disco diferente.

      image

Etapa 2: Criar e configurar o arquivo de swap

  1. Crie um arquivo de swap.

    Este exemplo mostra como criar um /swapfile de 1 GiB. Recomendamos o uso do comando fallocate, pois aloca espaço instantaneamente e é muito mais eficiente que o dd.

    # Create a 1 GiB swap file
    sudo fallocate -l 1G /swapfile
    Se o sistema de arquivos (como versões antigas do XFS) não suportar fallocate , o sistema retornará o erro fallocate failed: Operation not supported . Nessa situação, utilize o comando dd para criar o arquivo, embora esse processo seja mais demorado.
    sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
    • O valor /swapfile do parâmetro of é uma variável personalizável que representa o identificador da partição swap e não pode ser igual a um identificador de partição existente.

    • Os valores de bs e count determinam o tamanho do arquivo de swap e podem ser personalizados. Por exemplo, bs=1M count=1024 define o tamanho do arquivo de swap como 1 GB.

  2. Defina permissões seguras.

    Para impedir que usuários sem privilégios de root leiam o arquivo de swap, que pode conter dados sensíveis como senhas e chaves, defina suas permissões como 600.

    sudo chmod 600 /swapfile
  3. Marque o arquivo como espaço de swap.

    sudo mkswap /swapfile

    Uma resposta bem-sucedida será semelhante à seguinte:

    Setting up swapspace version 1, size = 1 GiB (1073737728 bytes)
    no label, UUID=a1a7e24c-38f6-41a4-9e18-be60b631133a
    Nota : O tamanho do arquivo de swap deve ser maior que 40 KB. Caso contrário, o comando mkswap reportará um erro.

Etapa 3: Ativar e verificar o arquivo de swap

Ative o arquivo de swap recém-criado e confirme se o sistema o reconheceu.

  1. Ative o arquivo de swap.

    sudo swapon /swapfile
  2. Verifique se o swap está ativado.

    swapon --show

    Após a ativação bem-sucedida, a saída será semelhante a esta:

    NAME       TYPE SIZE USED PRIO
    /swapfile  file   1G   0B   -2

    Alternativamente, execute free -h. A linha Swap deve exibir o tamanho total.

Etapa 4: Garantir persistência

Grave a configuração do swap no arquivo /etc/fstab para garantir que o swap permaneça efetivo após reinicializações da instância.

  1. (Recomendado) Faça backup do arquivo fstab para prevenir erros operacionais.

    sudo cp /etc/fstab /etc/fstab.bak.$(date +%Y%m%d)
  2. Adicione a configuração do swap ao arquivo fstab.

    O comando abaixo verifica se já existe uma entrada de swap antes de adicionar uma nova, evitando duplicatas.
    SWAP_FILE_PATH="/swapfile"
    if ! grep -q "swap" /etc/fstab; then
        echo "${SWAP_FILE_PATH} none swap sw 0 0" | sudo tee -a /etc/fstab
    else
        echo "Swap entry already exists in /etc/fstab. No changes made."
    fi
  3. Verifique a configuração persistente.

    É possível validar se a configuração do /etc/fstab está correta sem reiniciar a instância.

    # 1. Disable all swap.
    sudo swapoff -a
    # 2. Remount all swap partitions based on the /etc/fstab file.
    sudo swapon -a
    # 3. Check if swap has been remounted as expected.
    swapon --show

    Se o comando exibir corretamente as informações de swap, a configuração persistente foi bem-sucedida.

Ajustar o swappiness

O swappiness é um parâmetro do kernel Linux que controla a agressividade com que o sistema utiliza o swap. Seu valor varia de 0 a 100.

  • Valor mais alto: O kernel usa o swap de forma mais agressiva, movendo páginas de memória inativas para o disco mais rapidamente.

  • Valor mais baixo: O kernel evita o uso de swap, preferindo manter as páginas na memória física e recorrendo ao swap apenas quando a memória física estiver criticamente baixa.

Importante

O ajuste de parâmetros de swap exige cautela. Alterações inadequadas podem degradar o desempenho do sistema ou causar comportamentos inesperados na memória virtual. Faça alterações somente quando sua carga de trabalho específica exigir e você compreender totalmente a função do parâmetro. Em caso de dúvida, mantenha a configuração padrão.

Recomendações baseadas em cenários:

Cenário de aplicação

Valor de swappiness recomendado

Justificativa

Bancos de dados (MySQL, PostgreSQL)

1–10

Para garantir o desempenho das consultas, evita-se mover os pools de buffer principais para o swap.

Bancos de dados em memória (Redis, Memcached)

1

Bancos de dados em memória são extremamente sensíveis à latência. Qualquer atividade de swap pode degradar severamente o desempenho. O valor 1 significa que o swap é usado apenas quando absolutamente necessário.

Servidores de aplicações web (Nginx, Apache)

10–60

Equilibra velocidade de resposta e utilização de memória, permitindo que páginas de processos inativos e não essenciais sejam movidas para o swap.

Cargas de trabalho padrão/gerais/em lote

60 (padrão do sistema)

Adequado para a maioria dos cenários de uso geral. Permite que o sistema mova processos inativos para o swap, liberando memória física para tarefas ativas.

Procedimento:

  1. Edite o arquivo /etc/sysctl.conf. Por exemplo, para usar a partição swap apenas quando a memória física estiver abaixo de 10%, ajuste o seguinte parâmetro.

    vm.swappiness=10
  2. Salve o arquivo e saia. Em seguida, execute o comando abaixo para aplicar a configuração.

    sudo sysctl -p
  3. Verifique se a configuração do parâmetro swappiness entrou em vigor.

    cat /proc/sys/vm/swappiness

    A saída abaixo indica que a configuração do parâmetro swappiness foi aplicada corretamente.

    image

Monitorar o uso de swap

Objetivo do monitoramento

Comando recomendado

Descrição

Visualize o uso geral de memória e swap

free -h

Comando mais comum e direto.

Monitorar atividade de swap em tempo real (swap-in/swap-out)

vmstat 1

Observe as colunas si (swap-in) e so (swap-out). Valores diferentes de zero nessas colunas por um período prolongado indicam que o sistema está realizando operações de swap frequentemente, o que pode sinalizar problemas de desempenho.

Identificar processos que estão usando swap

`for file in /proc/*/status; do awk '/Name:/{n=$2} /VmSwap:/{s=$2} END{if(s>0) printf "%-20s %s\n", n, s"kB"}' $file; done

sort -k2 -hr`

Este comando itera sobre todos os processos, lista o nome e o uso de swap de cada um, e ordena os resultados para mostrar primeiro os processos com maior consumo de swap.

Analisar desempenho histórico

atop

O atop é uma ferramenta poderosa de monitoramento de desempenho capaz de registrar o uso histórico de recursos. Quando o sistema ficar lento, utilize os logs do atop para rastrear os processos e o estado dos recursos no momento em que o problema ocorreu.

Desativar e limpar o swap

Quando um arquivo de swap não for mais necessário, desative-o com segurança e exclua o arquivo para liberar espaço em disco.

  1. Desative o arquivo de swap especificado.

    sudo swapoff /swapfile
  2. Remova a configuração de montagem automática do fstab. Utilize o comando sed para remover a linha correspondente com segurança e evitar erros de edição manual.

    sudo sed -i '\|/swapfile|d' /etc/fstab
  3. Exclua o arquivo de swap para liberar espaço em disco.

    sudo rm /swapfile
  4. Verifique se o swap foi completamente desativado.

    Execute swapon --show ou free -h para confirmar que as informações de swap desapareceram.

Perguntas frequentes

Por que o swap não funciona como esperado?

Após criar uma partição swap e ajustar o parâmetro swappiness, você pode notar um fenômeno confuso: mesmo quando a memória física está sob alta pressão, o uso da partição swap permanece baixo, dando a impressão de que a configuração do swappiness não teve efeito.

Diagnóstico do problema

A causa raiz desse problema reside nos mecanismos do systemd e de grupos de controle (Cgroup), amplamente utilizados nas distribuições Linux modernas.

  1. Regras específicas de Cgroup: No modo padrão Cgroup v1, o systemd cria Cgroups separados para componentes como serviços do sistema (system.slice) e sessões de usuário (user.slice). Cada Cgroup pode ter seus próprios parâmetros de controle de recursos, como o memory.swappiness.

  2. Configurações locais substituem as globais: Quando o systemd inicializa esses Cgroups, ele define um valor padrão de memory.swappiness para eles (geralmente 60). Essa configuração específica do Cgroup tem precedência sobre o vm.swappiness global configurado no /etc/sysctl.conf.

  3. Resultado: O programa em execução segue a regra de swappiness do seu Cgroup em vez da regra global, tornando a configuração global ineficaz.

Verificação rápida
  1. Encontre o PID de um processo em execução (por exemplo, pidof nginx).

  2. Verifique o cgroup ao qual o processo pertence:

    cat /proc/[PID]/cgroup

    Você verá um caminho como /system.slice/nginx.service.

  3. Verifique o valor real de swappiness deste Cgroup:

    cat /sys/fs/cgroup/memory/system.slice/nginx.service/memory.swappiness

    Provavelmente a saída será 60, mesmo que você tenha definido o vm.swappiness global com outro valor. Isso indica que a configuração global não está tendo efeito.

Soluções

Solução 1: Migrar para cgroup v2 (recomendado)

Princípio: O cgroup v2 corrige muitos problemas de design da versão v1 e utiliza uma estrutura hierárquica unificada. No modo v2, os cgroups filhos herdam a configuração do nó pai por padrão. Basta configurar o vm.swappiness global, e essa configuração será aplicada automática e uniformemente a todos os processos do sistema.

Procedimento:

  1. Atualize os parâmetros de inicialização do kernel: Use a ferramenta grubby para adicionar o parâmetro systemd.unified_cgroup_hierarchy=1 a todos os kernels, habilitando o cgroup v2.

    sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
    Nota: Este comando é persistente. Ele modifica a configuração de boot do GRUB, fazendo com que o sistema inicialize no modo cgroup v2 na próxima reinicialização.
  2. Reinicie a instância ECS: Esta configuração é um parâmetro de nível de kernel e requer reinicialização para entrar em vigor.

    sudo reboot
  3. Verifique e configure:

    • Verificação: Após a reinicialização, execute mount | grep cgroup. Se você vir um ponto de montagem do tipo cgroup2, a migração para cgroup v2 foi bem-sucedida.

    • Configuração: Defina o valor desejado de vm.swappiness no /etc/sysctl.conf e execute sudo sysctl -p para aplicar a configuração a todo o sistema.

Solução 2: Configurar persistência no cgroup v1 (alternativa)

Se o seu ambiente não puder ser migrado por motivos específicos (por exemplo, executa softwares de contêiner mais antigos incompatíveis com cgroup v2), utilize uma configuração drop-in do systemd para resolver o problema.

Princípio: Este método não depende mais de configurações globais potencialmente falhas. Em vez disso, instrui diretamente o systemd a usar o valor de swappiness especificado ao criar os slice principais.

Procedimento:

  1. Crie uma configuração de substituição para o system.slice (isso afeta todos os serviços do sistema):

    Substitua 60 pelo valor de swappiness desejado.

    sudo mkdir -p /etc/systemd/system/system.slice.d/
    sudo tee /etc/systemd/system/system.slice.d/99-swappiness.conf <<'EOF'
    [Slice]
    MemorySwappiness=60
    EOF
  2. Crie uma configuração de substituição para o user.slice (isso afeta todas as sessões de login de usuário).

    Substitua 60 pelo valor de swappiness desejado.

    sudo mkdir -p /etc/systemd/system/user.slice.d/
    sudo tee /etc/systemd/system/user.slice.d/99-swappiness.conf <<'EOF'
    [Slice]
    MemorySwappiness=60
    EOF
  3. Aplique a configuração.

    sudo systemctl daemon-reload
    sudo reboot
    O comando daemon-reload apenas recarrega a configuração do systemd . Para garantir que todos os serviços e sessões sejam criados sob a nova configuração de Slice, é obrigatório reiniciar o servidor.