Come attivare un file swap su un router


In questa pagina descriverò come attivare un file swap (file di scambio) su un router (Asus RT-AC56U) - useremo un'installazione Entware, pertanto fate riferimento a questa pagina su come installare Entware su un router.
Il file swap è usato per aumentare la memoria fisica disponibile (RAM) con un memoria virtuale (SWAP) allo scopo di avere più risorse e per fare in modo che i servizi abbiano più memoria disponibile per essere eseguiti. Un file swap viene creato su un'unità disco esterna USB. Possiamo scegliere due differenti posti dopo memorizzare e gestire il file swap. Un posto è all'interno della cartella "/opt" (questa è la cartella radice di un'installazione Entware), l'altro è all'interno della cartella radice dell'unità esterna USB montata (la posizione della cartella radice viene memorizzata all'interno delle impostazioni del router). Per creare il file swap useremo alcuni script. Diamo uno sguardo al primo script che crea il file swap nella cartella "/opt" e lo attiva:

#!/bin/sh

DIR_DL="/opt/swap"

# look for file existence

if [ ! -e "$DIR_DL" ]; then
# create a 256MB swap file ("count" is in Kilobytes)
dd if=/dev/zero of=$DIR_DL bs=1k count=262144

# set up the swap file
mkswap $DIR_DL
fi

# enable swap
swapon $DIR_DL

Dentro il suddetto script, il file "swap" (il nome di file del file swap), assieme al percorso "/opt", viene messo all'interno della variabile "DIR_DL". Controlliamo se il file esiste, se non esiste creiamo un file vuoto la cui dimensione è pari a 256 MB. L'istruzione "mkswap" viene usata per rendere il file un file swap, in questa maniera il sistema operativo capisce che questo file deve essere usato come file swap.
L'ultima istruzione "swapon" semplicemente attiva il file swap.
Uno script alternativo per creare il file swap è il seguente:

#!/bin/sh

SWAP_FOLDER=`nvram get apps_mounted_path`
DIR_DL="$SWAP_FOLDER/swap"

# look for file existence

if [ ! -e "$DIR_DL" ]; then
# create a 256MB swap file ("count" is in Kilobytes)
dd if=/dev/zero of=$DIR_DL bs=1k count=262144

# set up the swap file
mkswap $DIR_DL
fi

# enable swap
swapon $DIR_DL

Il suddetto script è simile al primo, ma in questo caso noi leggiamo le impostazioni del router usando l'istruzione "nvram" allo scopo di recuperare la cartella radice dell'unità esterna USB montata. Il nome di questa cartella di solito inizia con "/tmp/mnt" poiché questa cartella è la cartella radice di tutte le unità disco esterne USB montate dal router. Il resto dello script è lo stesso del primo script.
Dopo aver creato lo script per creare ed attivare il file swap, lo dobbiamo eseguire ogni qualvolta inseriamo l'unità disco esterna USB, cortesemente leggete la sezione "Come installare Entware su un router" su come eseguire uno script ogni qualvolta un'unità disco esterna USB viene montata.
Inoltre noi abbiamo bisogno di creare un altro script per disattivare il file swap ogni qualvolta rimuoviamo l'unità disco esterna USB. In questo caso ci basta usare l'istruzione "swapoff" per disattivare il file swap.
Il primo script file usa la cartella "/opt" per disattivare il file swap:

#!/bin/sh

DIR_DL="/opt/swap"

# disable swap
swapoff $DIR_DL

Il secondo script legge le impostazioni del router allo scopo di sapere dov'è il file swap:

#!/bin/sh

SWAP_FOLDER=`nvram get apps_mounted_path`
DIR_DL="$SWAP_FOLDER/swap"

# disable swap
swapoff $DIR_DL

All'interno del router esiste un comando per sapere quanta memoria swap è usata e disponibile, questo comando è denominato "free", ciò che segue è un esempio di risultato di questo comando:

free

         total    used     free    shared    buffers
  Mem:  255892   54432   201460         0        168
 Swap:  262140       0   262140
Total:  518032   54432   463600

Possiamo anche usare il comando "cat /proc/swaps" per conoscere tutte le informazioni sul file swap, ciò che segue è un esempio di risultato di questo comando:

cat /proc/swaps

Filename    Type  Size    Used    Priority
/opt/swap   file  262140  59256   -1