Traduzioni: English - Français - Italiano
Lo spazio di swap
Lo spazio di swap in Debian e altri sistemi operativi basati su GNU/Linux è una forma di memoria virtuale. In parole povere ciò significa che se il sistema si trova in una situazione in cui la memoria fisica (RAM) è insufficiente, allora trasferisce alcuni dei dati meno usati che sono nella RAM in questo spazio. Lo spazio di swap è fondamentale anche per il funzionamento delle operazioni di "Sospensione" e "Ibernazione" di Linux. Lo swap viene impostato principalmente come una (o più di una) partizione separata dedicata (impostazione raccomandata) o come un file (o più di uno) creato appositamente che risiede in un file system esistente.
A partire dalla serie 2.4 il kernel Linux, può gestire fino a 32 partizioni di swap o file di swap distinti contemporaneamente. Questo però è estremamente raro, dato che le unità a disco sono molto più lente della RAM. La maggior parte dei sistemi ha una sola partizione di swap, o una per ogni istanza di Linux. Lo spazio di swap viene impostato nella maggior parte dei casi durante il processo di installazione di Debian, ma può essere creato o modificato in qualsiasi momento.
Notare che ci sono i moduli del kernel modules Zram e Zswap che permettono di comprimere lo swap all'interno della RAM. Zram non necessita di alcun device fisico di swap.
Informazioni e considerazioni relative alla quantità di swap da usare
La quantità di spazio di swap raccomandato era tradizionalmente il doppio della quantità della memoria fisica; con il tempo è diventata una volta e mezzo la memoria fisica. Entrambe le soluzioni sono valori indicativi ragionevoli ma stanno diventando sempre meno utili con il passare del tempo. Ci sono molte variabili correlate al singolo sistema e all'uso che se ne intende fare che hanno un ruolo nel determinare lo spazio di swap di sistema che è bene avere.
Cose da prendere in considerazione quando si decide come impostare lo spazio di swap in una macchina
- Si ha intenzione di usare le funzioni di Ibernazione e Sospensione? Se si ha intenzione di usare una o entrambe, è necessario assicurare che lo spazio di swap disponibile si sufficientemente grande da contenere tutte le informazioni che il sistema in esecuzione ha in RAM. Se si ha intenzione di usare la funzione di Ibernazione, ci si deve assicurare che l'installazione Debian abbia accesso ad una partizione o file di swap che NON è condivisa con un'altra istanza di GNU/Linux.
- Quanta memoria ha la macchina? Se la macchina ha una grande quantità di memoria RAM a disposizione e non è necessario usre le funzioni di Ibernazione o Sospensione, allora si potrà avere meno spazio di swap disponibile per il sistema. Se la macchina ha a disposizione molta poca RAM, come avviene in macchine più vecchie o nei netbook, allora ci si dovrebbe assicurare di creare uno spazio di swap sufficientemente grande. In questo caso il doppio della memoria di sistema sarebbe un buon suggerimento.
- Quanta memoria sarà usata dalle applicazioni che si intende usare? L'uso di memoria di un sistema Debian GNU/Linux varia moltissimo in base alle applicazioni che si sceglie di eseguire. Ad esempio, usare un ambiente desktop più leggero come Openbox o Xfce e le applicazioni a loro associate usa meno memoria di GNOME o KDE.
- Quanto spazio disponibile esiste sul disco fisso? Se si usa un piccolo disco a stato solido o una chiave USB per l'installazione di Debian allora lo spazio fisico può essere un bene prezioso. In questi casi può essere più ragionevole, se serve, installare più memoria di sistema invece di usare uno spazio di swap più grande. Questo ha anche il beneficio di velocizzare il sistema, dato che la velocità in lettura/scrittura del disco fisso è molto più lenta che non nella RAM.
In concreto, se la macchina usa tutta la RAM e tutto lo spazio di SWAP e ciò non è sufficiente, va in crash. Questo ha portato alla risposta semplicistica ma sicura riguardo ad un uso della spazio di swap che sia il "doppio della memoria di sistema".
Creare e modificare lo swap in una macchina esistente
Le partizioni di swap possono essere create e modificate usando strumenti grafici come GParted o strumenti a riga di comando come parted o gnu-fdisk. La creazione dei file di swap è gestita dal comando dd(1). Per creare un file di swap usando dd:
dd if=/dev/zero of=/PERCORSO/NOMEFILE bs=1024 count=DIMENSIONE mkswap /PERCORSO/NOMEFILE swapon /PERCORSO/NOMEFILE
PERCORSO è il percorso esatto della directory in cui si vuole posizionare il proprio file di swap, NOMEFILE è il nome del proprio file di swap e DIMENSIONE è la dimensione in kilobyte (ad esempio 1048576 è 1 gigabyte) desiderata per il file di swap. Il comando chmod serve ad assicurare che il file non sia leggibile da tutti per ragioni di sicurezza.
Una volta creata la propria partizione o file di swap, è necessario aggiungere una voce nel file /etc/fstab di ogni istanza di Linux che userà quello spazio di swap.
Aprire il file /etc/fstab nel proprio editor di testo preferito con i privilegi di root.
Se si sta aggiungendo una partizione di swap
Eseguire il comando blkid con i privilegi di root; questo mostra gli UUID di tutte le partizioni sulla macchina. Trovare la voce corrispondente allo swap e copiare l'UUID e aggiungerlo immediatamente dopo il "=" nella voce che si sta creando in /etc/fstab. La riga che inizia con "#" non è necessaria ma è considerata una buona abitudine.
# Partizione swap dedicata creata il DATA UUID= none swap sw 0 0
Se si sta aggiungendo un file di swap
La riga che inizia con "#" non è necessaria ma è considerata una buona abitudine.
# File di swap creato il DATA /PERCORSO/NOMEFILE none swap sw 0 0
Problemi noti e risoluzione di problemi legati allo swap
In qualsiasi sistema basato su GNU/Linux si può verificare se una particolare partizione di swap è attiva e funzionante cercando di attivarla. Ciò viene fatto usando il comando swapon(8) con i privilegi di root, per esempio con swapon /dev/sda5 dove sda5 è il nome effettivo della partizione di swap sulla macchina. Si possono cercare i nomi di tutte le partizioni sulla macchina usando il comando cat /proc/partitions. Oppure, per verificare se un file di swap è attivo, eseguire swapon /PERCORSO/NOMEFILE. Se quel particolare spazio di swap è attivo si ottiene un output simile a quello sottostante.
root@debianhost:/# swapon /dev/sda5 swapon: /dev/sda5: swapon failed: Device or resource busy
Se non si ottiene un output come questo, si dovrebbe controllare che non ci siano errori nel file /etc/fstab. Per i file di swap assicurarsi che la voce /PERCORSO/NOMEFILE sia corretta. Se si usa una partizione di swap cercare l'UUID della partizione usando il comando blkid(8). Eseguire semplicemente blkid con i privilegi di root e confrontare l'UUID ottenuto con quello usato in /etc/fstab; se non sono uguali, sostituire l'UUID in /etc/fstab con quello nell'output di blkid.
Note
Al momento della stesura di questo documento, usando l'installatore Debian per le immagini stable attuali (versione 6.0.1), il partizionamento manuale formatta in modo predefinito tutte le partizioni di swap che trova su tutti i dischi. Ciò rende non più valide le voci UUID nei file /etc/fstab di qualsiasi altro sistema basato su GNU/Linux che usa quegli spazi di swap.
Per fare sì che l'installatore non formatti una partizione di swap, è necessario marcarla manualmente come "Do not use" (Non usare) durante il partizionamento. L'installatore formatta ogni partizione di swap non marcata "Do not use" e la usa come spazio di swap nel sistema che sta installando. Se si condivide lo spazio di swap con un'altra istanza di GNU/Linux, è necessario aggiornare manualmente il suo file /etc/fstab; per farlo eseguire semplicemente blkid con i privilegi di root e mettere l'UUID ottenuto per la partizione di swap al posto del vecchio UUID nei file /etc/fstab delle altre istanze di GNU/Linux.
Per maggiori informazioni sulla memoria virtuale vedere Memoria virtuale su Wikipedia.