Criar uma partição SWAP para uma VM do Azure Linux
Aplica-se a: ✔️ VMs do Linux
Para criar uma partição SWAP em VMs Linux do Azure, você precisa configurar o cloud-init para criá-la automaticamente no disco efêmero (recurso) da VM. O disco de recursos é montado por /mnt
padrão. Ele está localizado no servidor físico em que a VM do Linux está hospedada e tem menor latência. Não é recomendável criar partições SWAP em discos do sistema operacional ou discos de dados que possam afetar o desempenho do sistema operacional e dos aplicativos. É importante lembrar que o disco de recursos nunca deve ser usado para armazenar dados regulares, pois é apenas um armazenamento temporário. Quando uma VM é movida para outro host ou interrompida/desalocada, todos os dados gravados nesse disco serão apagados. É recomendável usar o disco de recursos apenas para dados que podem ser removidos, como arquivos SWAP e de cache. Para obter mais informações, consulte Disco temporário.
Desabilitar a criação de SWAP na configuração do waagent
Se a criação de SWAP estiver configurada em /etc/waagent.conf, você deve desativá-la.
Desative a formatação do disco de recursos e a configuração SWAP em /etc/waagent.conf, pois essa tarefa agora é tratada pelo Cloud-Init. Defina os parâmetros da seguinte maneira:
# Format if unformatted. If 'n', resource disk will not be mounted. ResourceDisk.Format=n # Create and use SWAPfile on resource disk. ResourceDisk.EnableSWAP=n #Mount point for the resource disk ResourceDisk.MountPoint=/mnt #Size of the SWAPfile. ResourceDisk.SWAPSizeMB=0
Reinicie o Agente Linux do Azure. Consulte Como atualizar o Agente Linux do Azure em uma VM para obter informações sobre os comandos de reinicialização para diferentes distribuições do Linux.
Criar uma partição SWAP
Você pode criar uma partição SWAP usando uma das opções a seguir.
Observação
Quando uma partição SWAP é criada, um arquivo de troca também é criado nela.
Opção 1: criar uma partição SWAP no recurso ou no 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 script:
#!/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
O script será executado em cada inicialização e aloca 30% do espaço disponível no disco de recursos. Você pode personalizar os valores com base na sua situação.
Torne o script executável:
chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
Pare e inicie a VM. Só é necessário parar e iniciar a VM na primeira vez após a criação do arquivo SWAP.
Opção 2: criar uma partição SWAP no caminho do disco de recurso usando cloud-init
Crie a
CLOUD_CFG
variável em /systemd/system.conf para definir SWAP e o disco de recurso:sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
Crie um arquivo YAML que defina SWAP, criação de disco de recurso e pontos de montagem:
sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Pare e inicie a VM ou reimplante-a para criar a partição SWAP no disco de recurso.
Opção 3: criar uma partição SWAP no caminho do disco de recurso personalizado usando cloud-init
Crie a
CLOUD_CFG
variável em /systemd/system.conf para definir SWAP e o disco de recurso:sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
Crie um arquivo YAML que defina SWAP, criação de disco de recurso e pontos de montagem personalizados ("azure" é um exemplo):
sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/azure"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Observação
Verifique se o ponto de montagem personalizado existe no local especificado no arquivo YAML.
Pare e inicie a VM ou reimplante-a para criar a partição SWAP no disco de recurso.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.