RHEL: Resize/disable /dev/shm filesystem
Article Number: 59 | Rating: Unrated | Last Updated: Sun, May 27, 2018 8:33 PM
# Tested on RHEL 5, 6 & 7
# Notes from www.walkernews.net, www.generation-linux.fr and Red Hat web site
# Thanks to big memory size, nowadays most of RAM is not used at all. It is thus possible
# to allocate a part of this physical memory to be used as storage.
# The name given to a temporary unix file is 'tmpfs'. From Linux 2.6 on this tmpfs is based
# on ramfs. It is possible to fix a limit to its size in a way that system will allocate
# memory dynamically.
# By default, RHEL and most Linux distributions mount tmpfs (a RAM-based temporarily
# filesystem for shared memory) on /dev/shm directory and this temporarily filesystem size
# is always set to be half of the installed memory.
# If that default size is not something expected, we can increase or reduce the /dev/shm
# filesystem size.
# We may drop or disable this temporarily RAM-based filesystem entirely, to prevent it
# from auto-mount during system boot-up, if none of the application in our server is relying
# on shared memory function or explicitly using tmpfs.
# Implementation
# ------------------------------------------------------------------------------------------
# By default, tmpfs is mounted during system start-up and its definition in /etc/fstab looks
# like this (on RHEL 7 there's no specification in /etc/fstab file by default):
tmpfs /dev/shm tmpfs defaults 0 0
# What produces, for a system with 16 GB of RAM, a F.S. like this:
df -k
[...]
tmpfs 7.8G 0 7.8G 0% /dev/shm
# Creating own tmpfs
# ------------------------------------------------------------------------------------------
# Create a mount point on /mnt/mytmpfs.
mkdir /mnt/mytmpfs
# Change directory permissions so anyone will be able to read/write/execute on it
chmod 777 /mnt/mytmpfs
# Finally, mount 'tmpfs' the usual way
mount -t tmpfs -o size=256M tmpfs /mnt/mytmpfs
# Remember that if we don't specify the size, it will be half the RAM.
# For this F.S. to be mounted during system boot-up, add it to /etc/fstab file:
tmpfs /mnt/mytmpfs tmpfs defaults,size=256M 0 0
# To increase or decrease /dev/shm filesystem size
# ------------------------------------------------------------------------------------------
# Open /etc/fstab and locate the line of /dev/shm and use the tmpfs size option to specify
# desired size (on RHEL 7, add the line if not present):
# e.g. 512MB:
tmpfs /dev/shm tmpfs defaults,size=512m 0 0
# e.g. 2GB:
tmpfs /dev/shm tmpfs defaults,size=2g 0 0
# To make change effective immediately, run following mount command to remount the
# /dev/shm filesystem:
mount -o remount /dev/shm
# Disabling /dev/shm filesystem
# ------------------------------------------------------------------------------------------
# Actually, Linux allocates the memory for this tmpfs on demand basis, up to the maximum
# size shown in 'df -h' command output. If none of the application is using the /dev/shm,
# this tmpfs in fact does not consume any memory space. So, why disable it?
# Anyway, if you prefer to disable /dev/shm temporarily just execute the umount command:
umount /dev/shm
# To prevent tmpfs from auto-mount each time RHEL boots up, just comment out or delete
# corresponding line from /etc/fstab.
# On RHEL 7 API file systems are mounted by systemd. As they constitute an important mean of
# communication kernel<->userspace and userspace<->userspace they are mounted automatically
# without user confirmation. It is possible to disable the automatic mounting of some of them,
# but /dev/shm should always become available, so better leave it mounted ;)