Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

sábado, 22 de agosto de 2015

Usando memoria swap en Linux

En más de una ocasión he hablado de la importancia que posee la memoria RAM en nuestro equipo, por ejemplo cuando hemos querido controlar la salud de nuestro equipo. Este recurso es bastante polémico entre aquellos que no poseen demasiados conocimientos informáticos, pues muchos piensan que tener muchísima RAM instalada en nuestro equipo es bueno, cuando a veces no se le saca todo el partido a ésta y de 8 GB se tienen 4 o más libres, cuando la memoria está instalada con un único propósito: Sacarle partido. En otras ocasiones mucha gente se encuentra en la posición contraria; es decir con un equipo con poca memoria ejecutando procesos que requieren de mucha... haciendo que se consuma un recurso del que os vengo a hablar hoy: La memoria swap
Portada_swap
Esta memoria es usada cuando un equipo carece de la memoria suficiente para tratar los datos que se encuentra en ejecución y no es ni más ni menos que un área de la memora física (del disco duro) que es usada cómo una memoria ram virtual... El problema de ésto es que el volcado de la memoria en el espacio de memoria virtual, es mucho más lento y laborioso que el realizado en la memoria física (memoria RAM) con lo que no es un recurso que se tenga que usar para trabajar, sino un recurso de emergencia para evitar que el equipo se bloquee; con lo que lo ideal suele ser que si uno se encuentra en la situación de usar memoria swap constantemente, amplíe la memoria RAM instalada. Esto no significa que la memoria swap sea inútil, nada más lejos, pero sí que debe de ser considerado como un recurso auxiliar que nos ayudará en caso de emergencia.

Ahora que tenemos clara la utilidad de dicha memoria, lo ideal suele ser tener claro cuanta swap queremos tener asignada en nuestro equipo... Esta memoria se almacenará en un partición especialmente creada con dicho propósito; partición requerirá ocupar cierto espacio en nuestro disco duro, pero con las actuales capacidades de los discos duros no deberíamos tener problema alguno... Aunque no hay unas reglas propiamente dichas para asignar espacio swap, sí que existen una serie de recomendaciones de asignación de área de intercambio en función de la cantidad de memoria RAM instalada en nuestro equipo. Dichas recomendaciones serían:
  • Con 512 MB de RAM o menos, la swap debería ser el doble de grande que la memoria RAM... Es decir que si tuviésemos 256 MB de RAM asignaríamos 512 de swap, y si tuviésemos 512 MB deberíamos asignar 1024 MB.
  • En caso de tener entre 1 y 4 GB de RAM instalada en el equipo; bastaría con establecer exactamente el mismo tamaño de swap.
  • Si tuviésemos más de 4GB de RAM, por lo general bastaría con poner únicamente 4GB de swap, a menos que tuviésemos un equipo que anduviese muy justo de recursos o fuese un servidor que temamos que en algún momento se quede sin memoria.

Para poder usar nuestra swap. lo primero que deberíamos hacer sería comprobar nuestro espacio en el disco duro y aprovechar el espacio libre que haya en éste para crear la partición con dicho espacio; en caso de no tener espacio disponible, no quedaría otra que redimensionar las particiones. Ambas tareas se pueden hacer sin ningún problema mediante la herramienta gparted, herramienta especializada en la creación y gestión de particiones... El único detalle que habría que tener en cuenta para crear la nueva partición sería que ésta debe de ser del tipo swap y que preferiblemente habría que asignarle un tamaño en función de los puntos atrás señalados. No voy a extenderme explicando el funcionamiento de gparted, ya que éste no es el objetivo de este post, si bien en caso de no tener muy claro su funcionamiento, tal vez este enlace os sirva de ayuda: http://gparted.org/screenshots.php

Otra opción, un poco menos visual, pero igualmente efectiva y que no requeriría reiniciar el equipo no recurrir a herramientas de terceros sería usar la herramienta fdisk, de la cual ya he hablado anteriormente. En este caso en concreto la partición que habría que crear sería una partición del tipo 82 desde fdisk. Aquí si quisiésemos sincronizar las tablas de particiones para poder trabajar con la nueva partición correctamente habría que ejecutar el comando partprobe, el problema radica en que dicho comando no se puede ejecutar debido a que no el paquete del que depende no está instalado en el sistema, con lo que si queremos ejecutarlo deberemos de escribir dos comandos; uno para instalar el paquete del que depende, llamado parted, y otro para ejecutar el comando:

  1. apt-get install parted
  2. partprobe

En caso de haber optado por este segundo método, habría que preparar la partición para funcione como swap, lo cual significa que debemos escribir un pequeño comando que hará que la partición funcione como tal; dicho comando se denomina mkswap y tiene la siguiente estructura:

mkswap /dev/${nombre_partición_swap}

En mi caso la partición swap se denomina sda5 (lo mas común es que reciba este nombre) con lo que simplemente habría que escribir:

  1. mkswap /dev/sda5

Con la partición creada y preparada para trabajar tenemos dos opciones para activarla:


Opción manual

Esta opción es la menos usada, ya que requiere que el usuario tenga que activar y desactivar la swap manualmente... El proceso en sí es sencillo pero si en algún momento nos olvidásemos de activar dicha memoria no estaríamos preparados para cualquier uso excesivo de memoria... Es por ello que, aunque viene bien tener conocimiento de este método, no recomiendo usarlo... La activación y desactivación manual es tan sencilla como escribir los comandos swapon, para la activación de la swap, y swapoff para la desactivación de ésta. Si por ejemplo quisiésemos manipular nuestra recién creada partición escribiríamos:

Para activar la swap:
  1. swapon /dev/sda5
Para desactivar la swap: 
  1. swapoff /dev/sda5


Montaje y activación de la partición swap en el arranque

La segunda y la más común es dirigirnos al fichero fstab para incluir nuestra nueva partición en el arranque.  Dependiendo del contenido del fichero tendremos que usar un método u otro:

En caso de trabajar con UUID:

Si trabajamos con las versiones más nuevas tendremos que hacer referencia al UUID de la partición, el cual se obtiene mediante el comando:

  1. blkid

Ahí veremos el listado de particiones con su correspondiente UUID; por ejemplo en mi caso el UUID referente a la swap sería 7ac07077-c21e-4111-8a90-b8100891376e; teniendo esa información presente habría que dirigirse al fichero fstab y añadir una línea de forma que la partición swap se ejecute automáticamente... En este caso al ser una memoria de intercambio, no habría que poner punto de montaje alguno, con lo que en mi caso, usando el UUID obtenido con el último comando añadiría:

  1. UUID=aad0119f-b19f-45e7-b621-88362cef80ab none            swap    sw              0       0

En caso de trabajar con nombre de particiones:

Este caso es cada vez menos común debido al cada vez mayor uso de las últimas versiones, a excepción de los servidores que suele correr versiones bastante antiguas de sistemas operativos...  Aún así es importante tenerlo en cuenta por si nos llegásemos a encontrar en una situación de éstas, y además es un método aún más sencillo, ya que únicamente requiere conocer el nombre de la partición, desechando el uso del comando blkid... Por ello, suponiendo que nuestra partición swap sea /dev/sda5 esta sería la línea a añadir en el fichero:

  1. /dev/sda5 none            swap    sw              0       0

Con dicha modificación en el fichero, estaríamos seguros que nuestra partición swap estaría preparada para asistirnos en cada arranque.


Espero que os haya resultado útil.

Saludos.

No hay comentarios :

Publicar un comentario