​环境为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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐