martes, 9 de diciembre de 2008

Guardando archivos o directorios en la memoria con tmpfs

Probablemente ya sabes que leyendo desde la memoria RAM es mucho mas rápido que leer desde el disco duro. Ese artículo muestra como puedes guardar archivos y directorios en la RAM en vez de en el disco duro con la ayuda de tmpfs (un sistema de archivos para crear dispositivos de memoria). Ideal para archivos caches y otra data temporal, ya que cuando apagas el computador perderás la información.

Usando tmpfs
Hay un dispositivo de memoria estándar en cada sistema Linux (excepto en algunas maquinas virtuales) esta es /dev/shm.

Cuando ejecutas


mount


Probablemente veas algo asi:

tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)

Por defecto esto es casi la mitad del tamaño de la memoria de tu sistema, puedes comprobar esto ejecutando


df -h /dev/shm


entonces si tienes 4GB de memoria RAM, su tamaño sera casi 2GB.
Puedes usar /dev/shm como si fuera un disco duro normal, por ejemplo puede copiar un archivo a el:


cp -af test.tar.gz /dev/shm/


Así el archivo estará guardado en la memoria:


ls -la /dev/shm/


server1:/# ls -la /dev/shm/
total 316
drwxrwxrwt 18 root root 380 2008-11-27 16:06 .
drwxr-xr-x 12 root root 3780 2008-11-27 15:33 ..
-rw-r--r-- 1 root root 311636 2003-04-02 20:00 test.tar.gz
server1:/#

Si quisieras cambiar el tamaño de /dev/shm puedes hacer lo siguiente:


mount -o remount,size=3G /dev/shm


Ten cuidado al momento de cambiar el tamaño, ya que si lo haces muy grande y usas todo el espacio, entonces dejaras menos RAM para el resto del sistema y podrías causar un comportamiento no deseado.

Ahora supongamos que deseas crear una especie de archivo cache para el mayor tráfico de tu sitio web en el directorio /var/www/www.ejemplo.com/cache. Por supuesto que seria bueno tener ese cache en la memoria RAM, así que veamos como hacerlo:

Primero crea el directorio:


mkdir -p /var/www/www.ejemplo.com/cache


Ahora montas el directorio como un dispositivo de memoria (con un tamaño de 100MB y permisos de 755):


mount -t tmpfs -o size=100M,mode=0755 tmpfs /var/www/www.ejemplo.com/cache


Dale una mirada a:


mount


Y veras esto:

tmpfs on /var/www/www.example.com/cache type tmpfs (rw,size=100M,mode=0755)

Eso quiere decir que ahora puedes copiar archivos directamente a la memoria.
Si deseas tener ese directorio montado al momento de iniciar el sistema, edita el archivo /etc/fstab...
Y agrega algo así:

[...]
tmpfs /var/www/www.example.com/cache tmpfs size=100M,mode=0755 0 0
[...]


OJO: Cada vez que reinicies el sistema todo lo que este en /dev/shm se perderá.


Fuente.



No hay comentarios: