环境为CentOS7.8
在平常工作中,我们经常需要查看Linux服务器磁盘挂载使用情况,可以使用df命令,但是使用此命令除了会查看到系统盘以及数据盘挂载情况,还会看到一个tmpfs也在挂载。
这个tmpfs的名称是临时文件系统,是为了储存一些需要高速读写的文件而开辟的临时空间,tmpfs可以使用系统的内存或swap分区来存储文件。由此可见,tmpfs主要存储暂存的文件。
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 777M 0 777M 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 5.6G 30G 16% /
/dev/sda1 1014M 162M 853M 16% /boot
tmpfs 394M 8.0K 394M 1% /run/user/42
tmpfs 394M 48K 394M 1% /run/user/0
/dev
/dev这个目录对所有的用户都十分重要。
因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。
它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
/dev/shm
/dev/shm/是一个设备文件,它使用就是tmpfs文件系统
(注意:在CentOS和RedHat下,/dev/shm目录是一个链接,指向/run/shm目录,在Ubuntu系统下tmpfs文件系统对应的是/run/shm目录,可以使用df命令查看)
但后期的centos版本中 /dev/shm 就是一个被挂载的目录
/run
它被识别为 “tmpfs”(临时文件系统),因此我们知道 /run 中的文件和目录没有存储在磁盘上,而只存储在内存中。
它们表示保存在内存(或基于磁盘的交换空间)中的数据,它看起来像是一个已挂载的文件系统,这个可以使其更易于访问和管理。
/sys/fs/cgroup
Cgroup是将任意进程进行分组化管理的Linux内核功能
cgroup本身提供将进程进行分组化管理的功能和接口的基础结构
/run/user/0
我们看到的/run/user/下的每个目录与当前登录的用户或显示管理器 gdm 相关。数字代表他们的 UID。
/run/user/0 表示root用户
/run/user/后面的其他数表示某个普通用户,比如图中的run/user/42,通过id命令查询结果是
[root@localhost ~]# cat /etc/passwd| grep adm
adm:x:3:4:adm:/var/adm:/sbin/nologin
gdm是Linux的图形界面 GDM (The GNOME Display Manager)是GNOME显示环境的管理器
介绍
tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M。
tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的tmpfs文件系统会完全驻留在内存RAM中,读写几乎可以是瞬间的。同时它也有一个缺点tmpfs数据在重新启动之后不会保留,这点与内存的数据特性是一致的。
但是这个df查看到的挂载内存大小的数值,如果没有使用,是没有去真正占用的,只有真正在tmpfs存储数据了,才会去占用。比如,tmpfs大小是777M,如果用了10M大小,内存里就会使用真正使用10M,剩余的767M是可以继续被服务器其他程序来使用的。
适用场景:
- 天生就是为临时目录而生的
- 适合存储socket、session等,对于的临时数据也可以选择进行存储,
- 对于高I/O并且还需要持久化到磁盘的,需要通过其他手段,tmpfs可以提高linux系统的性能。
调整大小
我们可以根据实际需要调整tmpfs的大小
[root@localhost ~]# mount -o remount,size=500M tmpfs /dev/shm
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 500M 0 500M 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 5.6G 30G 16% /
/dev/sda1 1014M 162M 853M 16% /boot
tmpfs 394M 4.0K 394M 1% /run/user/42
tmpfs 394M 48K 394M 1% /run/user/0
这种是临时修改,重启后会恢复为默认值,永久修改可以通过修改配置文件的方式
[root@localhost ~]# vim /etc/fstab
~
tmpfs /dev/shm tmpfs defaults,size=777M 0 0
~
这样设置后重启会自动挂载为777M大小,永久生效
tmpfs挂载
1 命令挂载
挂载某个已经存在的目录,例如/tmp
这种方式在重启后就会失效
[root@localhost ~]# cd /tmp
[root@localhost tmp]# ll
total 0
drwx------ 2 root root 6 Nov 24 14:49 akonadi-root.RYVunj
drwx------. 2 root root 24 Nov 24 14:49 kde-root
-rw-r----- 1 root root 0 Nov 24 14:49 qipc_sharedmemory_soliddiskinfomem29a63fd10214ad112d9240e81c18480e18516c85
-rw-r----- 1 root root 0 Nov 24 14:49 qipc_systemsem_soliddiskinfomem29a63fd10214ad112d9240e81c18480e18516c85
-rw-r----- 1 root root 0 Nov 24 14:49 qipc_systemsem_soliddiskinfosemc4149a4d0835438aced6b5ccf94f57211588fb55
drwx------ 2 root root 24 Nov 24 14:49 ssh-zOWKKI5zvtHD
drwx------ 3 root root 17 Nov 24 14:48 systemd-private-0fd1b7475fb745f6880ae25b79adf55e-bolt.service-xDdbIc
drwx------ 3 root root 17 Nov 24 14:48 systemd-private-0fd1b7475fb745f6880ae25b79adf55e-colord.service-XZEMHX
drwx------ 3 root root 17 Nov 24 14:48 systemd-private-0fd1b7475fb745f6880ae25b79adf55e-cups.service-T5lV2y
drwx------ 3 root root 17 Nov 24 14:48 systemd-private-0fd1b7475fb745f6880ae25b79adf55e-rtkit-daemon.service-6mLedV
drwx------ 2 root root 6 Nov 24 14:49 tracker-extract-files.0
drwx------ 2 root root 6 Nov 24 14:37 vmware-root_745-4290690999
drwx------ 2 root root 6 Nov 24 14:48 vmware-root_760-2990613113
设想:如果直接挂载,会将/tmp目录下原有的文件覆盖掉
[root@localhost tmp]# mount -t tmpfs -o size=20m tmpfs /tmp
[root@localhost tmp]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 500M 0 500M 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 5.6G 30G 16% /
/dev/sda1 1014M 162M 853M 16% /boot
tmpfs 394M 4.0K 394M 1% /run/user/42
tmpfs 394M 48K 394M 1% /run/user/0
tmpfs 20M 0 20M 0% /tmp
卸载已经挂载的/tmp
[root@localhost tmp]# umount /tmp
[root@localhost tmp]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 500M 0 500M 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 5.6G 30G 16% /
/dev/sda1 1014M 162M 853M 16% /boot
tmpfs 394M 4.0K 394M 1% /run/user/42
tmpfs 394M 48K 394M 1% /run/user/0
2 配置文件挂载
修改/etc/fstab配置文件,重启后生效
[root@localhost tmp]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Mar 29 12:58:30 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=44d9f476-37ec-497a-8431-88b72220c42c /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=777M 0 0
tmpfs /tmp tmpfs defaults,size=25M 0 0
然后reboot重启
重启后结果如下,可以看到/tmp挂在成功
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 777M 0 777M 0% /dev/shm
tmpfs 2.0G 13M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 5.6G 30G 16% /
tmpfs 25M 8.0K 25M 1% /tmp
/dev/sda1 1014M 162M 853M 16% /boot
tmpfs 394M 48K 394M 1% /run/user/0
卸载已经挂载的/tmp
删除配置,然后mount -a (--测试/etc/fstab无错误),最后重启系统 即可。
结果如下
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 777M 0 777M 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 5.6G 30G 16% /
/dev/sda1 1014M 162M 853M 16% /boot
tmpfs 394M 48K 394M 1% /run/user/0