¿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:

[[email protected] ~]# 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
[[email protected] ~]#

[[email protected] ~]# 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
[[email protected] ~]#

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:

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

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

mount -o remount,rw /dev/shm

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Deja un comentario

Tal vez también te gustaría leer...

Corrompiendo un filesystem ext4 a propósito

He tenido la necesidad de corromper un filesystem ext4 en un RedHat 6 a propósito para realizar un test de chequeo de filesystem. En mi caso, el filesystem era el /dev/sdb. Para corromperlo, he utilizado el siguiente comando: Rebajas HP DeskJet 3639 Impresora multifunción (tinta… 42,90 EUR Comprar en Amazon Rebajas HP DeskJet 2630 Impresora

Leer más »

GlusterFS – Filesystems con Alta Disponibilidad en Linux

Alguna vez os he hablado de ServiceGuard para montar entornos de alta disponibilidad robustos, que monten filesystems y levanten servicios, pero este es un software de pago que no quería utilizar para montar un único filesystem con alta disponibilidad. En su lugar, he elegido GlusterFS, que es opensource y con soporte de RedHat. Tabla de

Leer más »

Tutorial de Ansible

Recientemente me he estado mirando el funcionamiento de Ansible para automatizar tareas de manera masiva en servidores Linux remotos mediante esta aplicación. Hasta ahora utilizo otra pero como Ansible está cada vez más extendida y considero que vale la pena mirárselo. Más aún si RedHat está apostando por esta herramienta como estándar de automatización. Su

Leer más »

RHEL y Oracle RAC – Paquetes Dropped

En un entorno de dos servidores Linux RedHat 6.9 con un cluster de Oracle RAC, hemos detectado muchos paquetes dropped en las tarjetas de red (dropped: 311815750): El equipo de Oracle ejecuta un análisis del sistema (OSWatcher) donde se indica que debemos aumentar el valor de MTU de todos los nodos del cluster, y así

Leer más »

lun4194304 has a LUN larger than allowed by the host adapter

En un RedHat 7.6 he pedido una LUN para ampliar un filesystem. Esta es una tarea rutinaria de cualquier técnico de sistemas Linux, si embargo, hoy me he encontrado con que la LUN estaba asignada al servidor pero no la veía. En el log del sistema operativo (/var/log/messages) aparecía el siguiente mensaje: Es decir, que

Leer más »

Conexiones seguras con SSH

SSH es un protocolo de comunicaciones que proporciona seguridad criptográfica cuando nos conectamos a un servidor para iniciar una sesión o transfereir archivos por SFTP o SCP. Los comandos SSH, SFTP y SCP utilizan el mismo puerto de comunicaciones, que es el 22. Rebajas HP DeskJet 3639 Impresora multifunción (tinta… 42,90 EUR Comprar en Amazon

Leer más »