Introducción
Hace unos días publiqué un artículo sobre como “prolongar la vida de tu disco SSD en Ubuntu“, y entre los diferentes comentarios recibidos surgió la duda de como cambiar la memoria swap de partición, basicamente a un disco duro estandar, con idea de escribir lo mínimo posible en tu disco SSD.
Aquí nos enfrentamos a una circustancia sobrevenida con el hecho del cifrado de la memoria swap. Para aquellos que andan con su equipo de un lado para otro, y guardan información relevante, no es suficiente con cifrar el disco duro, también es necesario cifrar la memoria swap RAM, puesto que es puede suponer el talón de aquiles para entrar en nuestro dispositivo, como puedes leer en este artículo en el que hace referencia a la memoria RAM, pero que todavía tiene mas sentido si nos referimos a la swap. Así pues el cambio de la ubicación de memoria swap puede no ser tan sencillo si tenemos en cuenta este hecho…
¿Como podemos mover nuestra swap entre particiones?
Pasando la memoria swap de partición
Antes de nada y previo a cualquiera de las diferentes opciones que comentaré mas adelante, es necesario tener creado una nueva partición donde reubicar la memoria swap. Esto lo puedes hacer utilizando GParted y dependiendo en que disco lo ubiques es posible que lo tengas que hacer con un Live USB.
Tal y como he comentado en la introducción, podemos encontrarnos con diferentes situaciones, entre las que quiero destacar que la memoria swap no se encuentre cifrada o que se encuentre cifrada. En cualquier caso, para hacerlo lo mas sencillo posible, lo que hacemos es parar por la situación sin cifrar, y en ese momento cambiamos la partición.
Sin cifrado
Lo primero es averiguar en que situación se encuentra nuestra memoria swap, para ello, en un emulador de terminal ejectuamos el siguiente comando,
swapon -s
Que en el caso de que tengas una partición sin cifrar arrojará algo como lo que puedes ver en la siguiente imagen, donde encontrarás la particición en la que tienes la memoria swap y que utilizaremos en el siguiente comando,
Ahora vamos a desmontar la memoria swap, para ello ejecutamos el siguiente comando, donde /dev/sda1 es la partición en la que se encuentra la memoria swap
sudo swapoff /dev/sda1
Si ejecutamos el primero de los comandos, veremos el resultado que te muestro en la siguiente imagen,
El siguiente es preparar la nueva partición para que haga de swap. Para ello ejecutaremos el siguiente comando, donde /dev/sda2 es la nueva particición que utilizaremos de swap
sudo mkswap /dev/sda2
Además, al ejecutar este comando, te indicará la nueva UUID, que utilizaremos a continuación para incluirla en /etc/fstab. Esto es lo que puedes ver al ejecutar el comando (en la imagen verás /dev/sda1, pero debes poner la partición que quieras utilizar),
Ahora volvemos a habilitar la swap y veremos el resultado que arroja, para ello ejecutamos el siguiente comando, entendiendo que /dev/sda2 es la partición donde ubicarás la swap
sudo swapon /dev/sda2
Por último nos queda fijar este dato en /etc/fstab para ello editamos este archivo y sustituimos el UUID correspondiente a /dev/sda1 por el UUID correspondiente a /dev/sda2,
Si no has apuntado el UUID de la nueva unidad, solo tienes que ejecutar el siguiente comando, donde /dev/sda2 es el nombre de la partición,
blkid /dev/sda2
En mi caso y para la unidad /dev/sda1 el resultado es el que puedes ver en la siguiente imagen,
Con cifrado
Pero que pasa si, como es habitual ultimamente y recomendable, swap está cifrado. Pues como he adelantado anteriormente, el proceso pasa por desactivar el cifrado, cambiar la unidad y activar el cifrado.
¿Como sabemos si está cifrado? Sencillo, al igual que en el caso anterior ejecutamos el siguiente comando,
swapon -s
En este caso el resultado será algo como lo que puedes ver en la siguiente imagen,
Desactivar el cifrado
El primer paso es desactivar la swap, para ello ejecutamos los sogientes comandos
sudo swapoff -a sudo cryptsetup remove /dev/mapper/cryptswap1
donde /dev/mapper/cryptswap1 aparecía al ejecutar el comando swapon -s. Ahora debemos editar /etc/cryptab y quitar (o comentar añadiendo # al principio) la línea que aparece y cuya UUID se corresponde con la partición en la que tenemos instalada la memoria swap, para esto podemos ejecutar el comando que hemos visto con anterioridad.
Ahora es el momento de crear una nueva memoria swap y activarla, para lo que seguiremos los pasos que hemos visto en el apartado anterior, es decir, donde /dev/sda1 es de nuevo, la partición donde queremos ubicar nuestra memoria swap,
sudo mkswap /dev/sda1 sudo swapon /dev/sda1
y editar /etc/fstab comentando o eliminando la línea donde aparece /dev/mapper/cryptswap1, y añadiendo una nueva línea con el UUID de /dev/sda1 que te habrá apareceido al ejecutar el comando mkswap o bien utilizando el comando blkid /dev/sda1
Activar el cifrado
Una vez tenenmos nuestra unidad swap en la partición que queremos, el siguiente paso consistirá en volver a cifrar, para ello solo tenemos que ejecutar el siguiente comando,
sudo ecryptfs-setup-swap
Más información,
Muy buen post!.
Más info sobre la swap y otro concepto interesante es el swappiness:
http://www.sysadmit.com/2016/10/linux-swap-y-swappiness.html
Muchas gracias por la sugerencia.