Creación de dispositivos RAMDISK en Linux

Pero, que es un ramdisk? Un ramdisk o disco ram es un 'trozo' de memoria RAM que puede ser usada como si fuera un dispositivo de disco duro. Un ramdisk posee un tamaño fijo y actúan como las particiones de discos convencionales. Sin embargo el acceso de lectura/escritura de un ramdisk es mucho más rápido que un disco duro físico, por contra, los datos contenidos dentro del ramdisk se pierden al apagar la máquina, aunque esto último se puede remediar. Estos 'dispositivos' pueden resultar de gran utilidad para manejar datos temporales como por ejemplo:

  • Para archivos de paginación.
  • Archivos temporales de los navegadores web.
  • Archivos de cache de diversos programas (edición de vídeo, editores gráficos, etc...).
  • Bases de datos.
  • Etc.
El principal requisito para crear ramdisks, es obviamente, el de tener suficiente memoria RAM, aunque con las máquinas de hoy en día no resulta un gran problema. De cualquier manera se puede ajustar el tamaño que tenga el/los ramdisk según los recursos del sistema.

Paso 1: Por defecto, la mayoría de las distribuciones (nosotros usaremos un Linux Mint) traen una serie de dispositivos creados con el propósito de instanciar ramdisk. Si listamos el contenido de la carperta /dev, debería aparecernos un listado parecido este:


listado dispositivos ram


Como se puede apreciar está distribución trae creados 16 ramdisk, pero están 'inactivos' o sin consumir recursos de nuestra RAM.

Paso 2: Vamos a ajustar el tamaño que tendrán nuestros discos ramdisk, para ello tenemos que editar el archivo de configuración de grub y añadir al final de la linea que carga el kernel ramdisk_size=tamaño_en_KB, es decir, para el caso de querer ramdisks de 16MB habría que poner ramdisk_size=16000, quedándonos el archivo de configuración de grub (/boot/grub/grub.cfg) algo parecido a esto:


configuracion tamaño maximo ramdisk

Paso 3: Ahora tenemos que dar formato a los ramdisks que queramos usar, en este caso solamente usaremos uno el /dev/ram0, por tanto ejecutamos mke2fs -m 0 /dev/ram0, dando una salida parecida a esta:

formateo disco ramdisk


Paso 4: Para poder usar el ramdisk que acabamos de crear tenemos que montarlo, para ello creamos un directorio que sera nuestro punto de montaje y montamos sobre este directorio el ramdisk. Para hacer esto ejecutamos mkdir /mnt/ramdisk y luego mount /dev/ram0 /mnt/ramdisk/.

Una vez montado el ramdisk podemos comprobar su estado ejecutando df -h | grep ram0tune2fs -l /dev/ram0 para una vista más detallada) y tendría que salirnos algo como esto:


comprobar montaje ramdisk

Paso 5: El siguiente paso es permitir la lectura/escritura al usuario que va a poder acceder al ramdisk, para ello ejecutamos la siguiente lista de comandos:
  1. Hacemos propietario al usuario deseado: # chown usuario:root /mnt/ramdisk/
  2. Cambiamos los permisos del ramdisk: # chmod 0750 /mnt/ramdisk/
  3. Comprobamos el resultado de los comandos anteriores: # ls -ald /mnt/ramdisk/

Paso 6: Si no queremos tener que repetir los pasos 3 y 5 cada vez que arranquemos nuestra máquina, tenemos que automatizar la creación, el montaje y la asignación de permisos. Hay muchas maneras de hacer esto, pero la que más veces hemos visto – tanto en máquinas reales como en guías- es editar el fichero /etc/rc.local y añadir las siguientes lineas:

  • Damos formato al ramdisk: /sbin/mke2fs -q -m 0 /dev/ram0
  • Montamos el ramdisk, se supone que el directorio de punto de montaje ya esta creado: /bin/mount /dev/ram0 /mnt/ramdisk
  • Cambiamos de propietario: /bin/chown usuario:root /mnt/ramdisk
  • Asignamos permisos: /bin/chmod 0750 /mnt/ramdisk
 
Paso 7: Por último para comprobar que realmente un ramdisk es más rápido que un disco normal (nosotros lo hemos probado en un Western Digital de 320GB y 7200 RPM), podemos realizar los siguientes test de lectura/escritura:
*Nota: Hemos cambiado el tamaño de nuestro ramdisk de 16MB a 1GB para que sea más fácil interpretar los datos.

Para el test de lectura podemos ejecutar el siguiente comando hdparm -tT /dev/dispositivo 2>/dev/null. En nuestro caso obtenemos los siguientes datos de salida:


test escritura ramdisk

Para el test de escritura ejecutamos los siguientes comandos, obteniendo como resultado:

test lectura ramdisk

Como se puede apreciar por los datos obtenidos al realizar estos dos test, un ramdisk ofrece un rendimiento bastante superior al de un disco físico tradicional.

Para 'conservar' el contenido de nuestro ramdisk al apagar o reiniciar la máquina, solamente tendremos que crearnos un script que copie/mueva los datos que contiene el ramdisk a otra ubicación en un disco no volátil (acordarse de hacerlo ejecutable con chmod +x). Una vez creado el script creamos enlaces a este en los directorios /etc/rc0.d/ y rc6.d/ con un formato K99nombre. Luego podemos añadir al fichero /etc/rc.local la acción inversa, es decir, que copie/mueva los datos de la ubicación física a nuestro ramdisk.


Lo has visto primero en CeroWarnings. Recuerda que puedes dejarnos tus peticiones en nuestro Buzón de Sugerencias.

Publicar un comentario

0 Comentarios