Did you know that there is a special directory in the Linux system, which is not on the hard disk, but in the memory? It is the /dev/shm directory, which allows you to create and use files in memory, thereby improving the speed and efficiency of your system. However, the /dev/shm directory is not just a simple memory file system, it has many other functions and uses, such as shared memory, inter-process communication, encrypted files, etc. In this article, we will delve into the mysteries of the /dev/shm directory so that you can better utilize it to optimize your Linux system.
/dev/shm/ is a very useful directory under Linux, because this directory is not on the hard disk, but in memory. Therefore, under Linux, there is no need to go to great lengths to build a ramdisk. You can achieve good optimization results by directly using /dev/shm/. One thing to note about /dev /shm/ is the capacity issue. Under Linux, it defaults to half the size of the memory, which can be seen by using the df -h command. But it does not really occupy this memory. If there are no files under /dev/shm/, the memory it occupies is actually 0 bytes; if it is up to 1G and there are 100M files in it, the remaining 900M It can still be used by other applications, but the 100M memory it occupies will never be recycled and re-divided by the system. Otherwise, who would dare to store files in it?
The default system will load /dev/shm, which is the so-called tmpfs. Some people say it is similar to ramdisk (virtual disk), but it is different. Like a virtual disk, tmpfs can use your RAM, but it can also use your swap partition for storage. Moreover, a traditional virtual disk is a block device and requires a command such as mkfs to actually use it. tmpfs is a file system, not a block device; you just install it and it is ready to use.
tmpfs has the following advantages:
1. The size of the dynamic file system.
2. Another major benefit of tmpfs is its lightning speed. Because a typical tmpfs file system will reside entirely in RAM, reads and writes can be almost instantaneous.
3. tmpfs data will not be retained after reboot because virtual memory is inherently volatile. So it is necessary to make some scripts to perform operations such as loading and binding.
The default maximum half memory size may not be enough in some situations, and the default number of inodes is very low and generally needs to be increased. In this case, you can use the mount command to manage it.
#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
On a 2G machine, adjust the maximum capacity to 1.5G and the number of inodes to 1,000,000, which means that up to one million small files can be stored.
If you need to permanently modify the value of /dev/shm, you need to modify /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0
#mount -o remount /dev/shm
First create a tmp folder in /dev/shm, and then bind it to the actual /tmp
#mkdir /dev/shm/tmp
#chmod 1777 /dev/shm/tmp
#mount –bind /dev/shm/tmp /tmp(–bind)
After using the mount –bind olderdir newerdir command to mount a directory to another directory, all information such as the permissions and owner of newerdir will change. The mounted directory inherits all attributes of the mounted directory except its name. The amm memory management mode of Oracle 11g uses /dev/shm, so sometimes the ORA-00845 error will occur when modifying MEMORY_TARGET or MEMORY_MAX_TARGET
/dev/shm directory is a very powerful and flexible tool in the Linux system. It allows you to create and use files in memory, thereby improving the performance and security of the system. Through this article, we learned about the principles, functions and usage of the /dev/shm directory, as well as some common application scenarios and precautions. We hope this article can help you better understand and use the /dev/shm directory, making your Linux system more efficient and secure.
The above is the detailed content of The secret of the /dev/shm directory in Linux systems. For more information, please follow other related articles on the PHP Chinese website!