11 noviembre 2013

Cambiar la partición de swap por un fichero

El espacio de intercambio es una zona del disco que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele llamar swap y puede estar ubicado tanto en un fichero como en una partición exclusiva o partición de swap.

Dejando de lado el debate de si es necesario o no un espacio de intercambio, hay que tener en cuenta que ambos sistemas (fichero o disco) presentan ventajas e inconvenientes que no se van a discutir en este tutorial puesto que lo que nos planteamos es la forma de eliminar la partición de swap y utilizar en su lugar un fichero de intercambio.

1. Cálculo del tamaño de la partición de swap
En el caso que nos ocupa, partimos de una situación como la indicada en la imagen, con una partición de swap de 510MB situada dentro de una partición extendida.
Para conocer el tamaño de la partición de intercambio desde la línea de comandos se podría utilizar cualquiera de los dos comandos siguientes:
$ cat /proc/swaps
Filename                         Type          Size    Used   Priority
/dev/sda5                        partition     522236  0      -1

$ free
             total       used        free   shared   buffers    cached
Mem:        507772      86888      420884        0      9508     40804
-/+ buffers/cache:      36576      471196
Swap:       522236          0      522236
Si se divide la cifra de 522236 bytes entre 1024, se obtiene el tamaño conocido de 510MB.

2. Desactivación de la partición de swap
Antes de empezar, desactivaremos la partición de intercambio:
$ sudo swapoff -a
Se puede comprobar que, efectivamente, la partición de swap ya no está activa
$ cat /proc/swaps
Filename                         Type          Size    Used   Priority

$ free
             total       used        free   shared   buffers    cached
Mem:        507772      86888      420884        0      9508     40804
-/+ buffers/cache:      36576      471196
Swap:            0          0           0
3. Supresión de la partición de swap
A continuación ya se puede eliminar la partición de swap que, en nuestro caso, está situada en la partición /dev/sda5. También podemos eliminar la partición extendida que la contiene (/dev/sda2).
$ sudo parted /dev/sda rm 5
Información: Puede que sea necesario actualizar /etc/fstab

$ sudo parted /dev/sda rm 2
Información: Puede que sea necesario actualizar /etc/fstab
Una vez eliminada la partición de swap, la situación es la siguiente:

4. Creación del nuevo espacio de intercambio
En este punto, una vez ya ha sido eliminada la partición de swap, procederemos a crear el nuevo archivo de intercambio y a su posterior activación.

En primer lugar, generamos un archivo lleno de ceros con el mismo tamaño que tenía la partición de intercambio original (510MB).
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=510
510+0 registros leídos
510+0 registros escritos
534773760 bytes (535MB) copiados, 2,77221 s, 193 MB/s
Lo siguiente será asignar el archivo recién creado como zona de intercambio y activar el swap.
$ sudo mkswap /swapfile
Configurando la versión swapspace 1, tamaño = 522236 KiB
sin etiqueta, UUID=503822fb-5cca-46c4-abf2-a366583d24c2

$ sudo swapon /swapfile
Después de lo anterior ya volvemos a tener zona de intercambio, pero ahora, en lugar de tenerla en una partición, la tenemos en un fichero. Lo podemos comprobar de nuevo.
$ cat /proc/swaps
Filename                         Type          Size    Used   Priority
/swapfile                        file          522236  0      -1
5. Consolidación de los cambios
Para que este cambio sea consistente y se mantenga activo la próxima vez que se reinicie el equipo, es preciso reflejar los cambios realizados en el archivo /etc/fstab. Para ello, basta con cambiar el antiguo UUID de la partición de swap por el nombre del nuevo fichero de intercambio y también el punto de montaje.
$ sudo vim /etc/fstab
<files system>   <mount point>   <type>   <options>  <dump>   <pass>
/swapfile            swap         swap        sw       0        0
La próxima vez que arranque el sistema, ya dispondrá del nuevo espacio de intercambio situado en el fichero /swapfile.

0 comentarios: