Indice dei contenuti
Se hai già letto il mio articolo su azure-tempdisk-bootstrap, sai quanto sia utile sfruttare il disco temporaneo di Azure per memorizzare dati temporanei e cache di Nginx, PHP e .NET. Quel progetto è nato per migliorare le performance dei web server spostando su /mnt
tutti i carichi temporanei.
Questa volta voglio presentarti un progetto complementare che si concentra su un altro caso d’uso perfetto per il disco temporaneo di Azure: lo swapfile. Il progetto si chiama azure-tempdisk-swapfile ed è disponibile gratuitamente su GitHub. Il suo compito è semplice ma fondamentale: garantire che la tua VM abbia sempre uno swapfile attivo su /mnt
, anche dopo riavvii o deallocazioni, quando il disco effimero viene completamente cancellato.
Perché mettere lo swap su /mnt
Il disco temporaneo locale di Azure è fisicamente collegato all’host della VM, solitamente SSD o NVMe, e quindi è molto veloce. Poiché lo swap non richiede persistenza, è un candidato ideale per /mnt
. L’unico problema è che il contenuto del disco sparisce a ogni deallocazione: senza un sistema automatico, rischi di restare senza swap. Qui entra in gioco questo progetto.
azure-tempdisk-swapfile automatizza tutto il processo. A ogni avvio, attende che /mnt
venga montato, controlla la presenza dello swapfile, lo ricrea se mancante o con dimensioni errate, esegue mkswap
e lo attiva con swapon
. Una volta installato, non devi più preoccuparti dello swap.
Come funziona
- Si avvia tramite un servizio
systemd
di tipo oneshot. - Attende fino a quando
/mnt
non è montato (tempo massimo configurabile). - Crea lo swapfile con
fallocate
odd
se mancante. - Lo inizializza in sicurezza con
mkswap
e imposta i permessi a600
. - Lo attiva con
swapon
in modo idempotente (non fa nulla se già corretto).
Installazione
Il repository del progetto si trova qui: github.com/Ryadel/azure-tempdisk-swapfile.
Per installarlo, esegui questi passaggi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Clona il repository git clone https://github.com/Ryadel/azure-tempdisk-swapfile.git cd azure-tempdisk-swapfile # Installa lo script sudo install -D -m 0755 scripts/azure-tempdisk-swapfile.sh \ /usr/local/sbin/azure-tempdisk-swapfile.sh # Installa il servizio systemd sudo install -D -m 0644 services/azure-tempdisk-swapfile.service \ /etc/systemd/system/azure-tempdisk-swapfile.service # (Opzionale) Installa il file di configurazione sudo install -D -m 0644 defaults/azure-tempdisk-swapfile \ /etc/default/azure-tempdisk-swapfile # Abilita e avvia sudo systemctl daemon-reload sudo systemctl enable --now azure-tempdisk-swapfile.service |
Da questo momento, il servizio si occuperà automaticamente di ricreare e attivare lo swapfile a ogni avvio della VM.
Configurazione
Modifica /etc/default/azure-tempdisk-swapfile
per personalizzare le impostazioni:
1 2 3 4 |
SWAP_SIZE=16G # Dimensione desiderata (es. 8G, 16G, 32768M) SWAP_FILE=/mnt/swapfile WAIT_SECS=60 # Secondi di attesa per il mount di /mnt |
Se cambi dimensione o percorso, lo script ricreerà lo swapfile al successivo riavvio.
Verifica
Per controllare che lo swapfile sia attivo:
1 2 3 |
swapon --show free -h |
Dovresti vedere /mnt/swapfile
tra i dispositivi swap attivi.
Perché l’ho scritto
Gestendo VM che ospitano più siti WordPress e applicazioni .NET, mi è capitato spesso di trovarmi con poca RAM. Aumentare la memoria aiuta, ma avere uno swapfile affidabile su /mnt
è una sicurezza in più: non sostituisce la RAM, ma evita crash nei momenti di picco. Volevo un modo pulito, sicuro e automatico per farlo, e così è nato azure-tempdisk-swapfile.
Conclusione
Se già utilizzi azure-tempdisk-bootstrap per ottimizzare le directory temporanee dei tuoi web server, azure-tempdisk-swapfile è il complemento perfetto. Insieme, i due progetti ti aiutano a sfruttare al massimo il disco temporaneo di Azure: più performance, meno problemi, e un setup completamente automatizzato.