DEV Community

MagnoRSantos
MagnoRSantos

Posted on

Criar uma partição SWAP para uma VM Linux do Azure

Criar Swap de forma automática em disco /mnt nas Vms do Azure.

Bom dia pessoal, venho contribuir um pouco com uma solução para um problema que temos com memória Swap para sistemas Linux em Vms do Azure quando direcionamos o arquivo Swap para o disco de recursos padrão das Vms do Azure que são montados automaticamente no /mnt.

O conteúdo desse disco é temporário. Quando uma VM é movida para outro host ou interrompida/desalocada, todos os dados gravados neste disco serão apagados.

Porém a Microsoft recomenda criar o arquivo de Swap nesse disco, agora um problema chato que sempre tinha que ficar atento é lembrar de recriar a swap manualmente quando a máquina era desligada e ligada novamente por alguma necessidade.

Pesquisando uma forma de automatizar isso na inicialização da máquina encontrei o seguinte artigo do Microsoft Learn explicando 3 formas de fazer isso de forma simples e automatizada "Por isso gosto tanto deles kkkkkkkk".

Bom o link oficial é esse: Acesse

Vou demonstrar aqui apenas como fazer por meio de um arquivo swap.sh conforme descrito no link acima:

1 - Criar uma partição SWAP no recurso ou caminho de disco personalizado usando scripts.

Crie um script de criação SWAP chamado swap.sh em /var/lib/cloud/scripts/per-boot com o seguinte conteúdo:

#!/bin/sh

# Percent of space on the ephemeral disk to dedicate to swap. Here 30% is being used. Modify as appropriate.
PCT=0.3

# Location of the swap file. Modify as appropriate based on the location of the ephemeral disk.
LOCATION=/mnt

if [ ! -f ${LOCATION}/swapfile ]
then

    # Get size of the ephemeral disk and multiply it by the percent of space to allocate
    size=$(/bin/df -m --output=target,avail | /usr/bin/awk -v percent="$PCT" -v pattern=${LOCATION} '$0 ~ pattern {SIZE=int($2*percent);print SIZE}')
    echo "$size MB of space allocated to swap file"

     # Create an empty file first and set correct permissions
    /bin/dd if=/dev/zero of=${LOCATION}/swapfile bs=1M count=$size
    /bin/chmod 0600 ${LOCATION}/swapfile

    # Make the file available to use as swap
    /sbin/mkswap ${LOCATION}/swapfile
fi

# Enable swap
/sbin/swapon ${LOCATION}/swapfile
/sbin/swapon -a

# Display current swap status
/sbin/swapon -s
Enter fullscreen mode Exit fullscreen mode

O script será executado a cada inicialização e alocará 30% do espaço disponível no disco de recursos. Você pode personalizar os valores com base na sua situação.

2 - Torne o script executável:

chmod +x /var/lib/cloud/scripts/per-boot/swap.sh

3 - Pare e inicie a VM. Parar e iniciar a VM só é necessário na primeira vez após a criação do arquivo SWAP.

Espero que ajude! Até a próxima, fiquem com Deus.

Top comments (0)