¿Qué es el filesystem /dev/shm de Linux y cómo configurarlo?

El dispositivo /dev/shm aparece como un filesystem en el sistema operativo pero, en realidad, está utilizando memoria física para que el sistema pueda realizar sus operaciones internas de una manera más rápida si lo comparamos con un sistema de archivos en disco, ya que la RAM es más rápida que el disco.

El nombre shm viene de Shared Memory y es una porción de memoria, estrictamente de uso interno por el sistema operativo. Básicamente, se almacenan segmentos de memoria y otros datos temporales que se utilizan para que diferentes dispositivos y aplicaciones se comuniquen con el kernel. Los datos almacenados ahí desaparecerán al reiniciar el sistema operativo.

Recientemente, me encontré con que el equipo de Oracle quería aumentar el tamaño de la SGA de una base de datos pero no pudo porque el tamaño del «filesystem» /dev/shm era demasiado pequeño. El error concreto que me pasaron fue:

The error message ORA-00845 addresses this error:
ORA-00845: MEMORY_TARGET not supported on this system
Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux.
Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.

Como podemos comprobar, Oracle utiliza la memoria física del sistema para agilizar ciertas operaciones de la base de datos.

Crear un filesystem tmps en GNU Linux

No obstante, este filesystem no es de uso exclusivo para Oracle. También es muy utilizado por el propio sistema operativo e, incluso, lo podemos configurar para que sea utilizado por otras aplicaciones como, por ejemplo, el almacenamiento de caché de un servidor WEB o el directorio del propio plugin WP Super Caché en el que almacena los datos temporales. Ejemplo:

[root@prt53ws1 ~]# grep tmpfs /etc/fstab
tmpfs   /app/puerto53/html/wp-content/cache     tmpfs   size=20M,noatime,uid=50000,gid=50000,mode=770   0 0
tmpfs   /app/hervidores/html/wp-content/cache   tmpfs   size=20M,noatime,uid=50004,gid=50004,mode=0770  0 0
tmpfs   /app/parqueinfantil/html/wp-content/cache       tmpfs   size=20M,noatime,uid=50005,gid=50005,mode=0770  0 0
tmpfs   /app/keepcalm/html/wp-content/cache     tmpfs   size=20M,noatime,uid=50006,gid=50006,mode=0770  0 0
tmpfs   /app/silladeruedas/html/wp-content/cache        tmpfs   size=20M,noatime,uid=50007,gid=50007,mode=0770  0 0
tmpfs   /app/transpaleta/html/wp-content/cache  tmpfs   size=20M,noatime,uid=50008,gid=50008,mode=0770  0 0
tmpfs   /app/botellas/html/wp-content/cache     tmpfs   size=20M,noatime,uid=50009,gid=50009,mode=0770  0 0
[root@prt53ws1 ~]#

[root@prt53ws1 ~]# df -hP  |egrep "Filesystem|tmpfs"
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        864M     0  864M   0% /dev
tmpfs           901M  4.0K  901M   1% /dev/shm
tmpfs           901M   17M  884M   2% /run
tmpfs           901M     0  901M   0% /sys/fs/cgroup
tmpfs            20M     0   20M   0% /app/puerto53/html/wp-content/cache
tmpfs            20M     0   20M   0% /app/silladeruedas/html/wp-content/cache
tmpfs            20M     0   20M   0% /app/hervidores/html/wp-content/cache
tmpfs            20M     0   20M   0% /app/transpaleta/html/wp-content/cache
tmpfs            20M     0   20M   0% /app/keepcalm/html/wp-content/cache
tmpfs            20M     0   20M   0% /app/parqueinfantil/html/wp-content/cache
tmpfs            20M     0   20M   0% /app/botellas/html/wp-content/cache
tmpfs           181M     0  181M   0% /run/user/1000
[root@prt53ws1 ~]#

Modificando el tamaño del filesystem tmpfs

Para aumentar el tamaño de /dev/shm, simplemente modifiqué el fichero /etc/fstab con el tamaño que nos interesaba:

[root@lgdpdot0 ~]# grep shm /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=16g 0 0
[root@lgdpdot0 ~]# mount -o remout /dev/shm
[root@lgdpdot0 ~]# df -hP |grep shm
tmpfs 16G 2.7G 14G 17% /dev/shm
[root@lgdpdot0 ~]#

Una vez modificado el tamaño del FS en el fichero fstab, remontaremos el filesystem con el comando:

mount -o remount,rw /dev/shm
Valoración

Deja un comentario