La creazione di uno spazio di swap

Un file di swap è un file ordinario e non viene considerato in maniera speciale dal kernel. L'unica cosa che importa al kernel è che non deve avere buchi e che sia preparato all'uso con mkswap. Deve risiedere su un disco locale, comunque, e non può trovarsi su un filesystem montato via NFS per ragioni di implementazione.

La parte sui buchi è importante: il file riserva lo spazio disco in modo che il kernel possa fare velocemente lo swap di una pagina senza dover fare tutti i passi necessari per allocare un settore di un disco ad un file. Il kernel usa semplicemente i settori che sono stati allocati per il file; dato che un buco significa che per quel posto nel file non sono allocati settori, non è bene che il kernel provi ad usarli.

Un modo buono per creare il file di swap senza buchi è usando questo comando:

$ dd if=/dev/zero of=/extra-swap bs=1024 count=1024
1024+0 records in
1024+0 records out
$
dove /extra-swap è il nome del file di swap e la sua dimensione viene data dopo count=. È meglio che la dimensione sia un multiplo di 4, perché il kernel manda in swap pagine di memoria di 4 kilobyte. Se la dimensione non è un multiplo di 4 l'ultimo paio di kilobyte può restare inutilizzato.

Anche una partizione di swap non è in nessun modo una partizione speciale: la si crea come una qualsiasi altra partizione, l'unica differenza è che viene usata così com'è e non contiene un filesystem. È una buona idea segnare le partizioni di swap come tipo 82 (Linux swap); in questo modo renderete più chiara la tabella delle partizioni, anche se non è strettamente necessario per il kernel.

Dopo aver creato un file o una partizione di swap bisogna scrivere al suo inizio una firma che contiene delle informazioni di amministrazione usate dal kernel. Il comando per farlo è mkswap, che si usa così:

$ mkswap /extra-swap 1024
Setting up swapspace, size = 1044480 bytes
$
Notate che lo spazio di swap non è ancora in uso: esiste, ma il kernel non lo usa per fornire memoria virtuale.

Va fatta molta attenzione nell'usare mkswap, dato che questo non controlla che il file o la partizione non siano usati per altre cose. Potete facilmente sovrascrivere file e partizioni importanti! Per fortuna di solito si usa mkswap solo quando si installa il sistema.

Il gestore di memoria di Linux limita la dimensione di ciascuno spazio di swap a circa 127 MB (per varie ragioni tecniche, il limite reale è (4096-10) * 8 * 4096 = 133890048 byte, o 127.6875 megabyte). Potete comunque usare fino a 8 spazi di swap simultaneamente, per un totale di circa 1 GB[1].

Note

[1]

Un gigabyte qui, un gigabyte là, presto cominceremo a parlare di memoria vera.