使用 tmpfs 内存文件系统

  • 2016-10-09
  • 1,857
  • 2

一、介绍

  Tmpfs 是linux中的内存文件系统,相当于在内存中划分一块区域,挂载到某一个目录;当有文件写入这个目录时,实际上没有写在磁盘里,而是写入内存中的。优点是比磁盘设备IO要快很多,缺点嘛…断电就没了
  系统中默认是有这个文件系统的,df 可以查看到 /dev/shm 就是系统默认的tmpfs挂载点。

 
二、测试

方式一.
修改 /dev/shm 的默认值,编辑 /etc/fstab 文件中tmpfs一行,
tmpfs /dev/shm tmpfs defaults 0 0

默认挂载参数是default,会分配一半内存大小给tmpfs,可以加上比如”size=1G”控制其大小,
tmpfs /dev/shm tmpfs defaults,size=1G 0 0

 挂载参数中,还有inode节点数量和权限等设置:
 nr_inodes=10k 挂载时指定inode节点数为10240
 mode=1777 代表带有sticky bit特殊权限的700权限

修改 /etc/fstab 后,要重新挂载一下,


方式二.
单独创建一个挂载点,挂载tmpfs

 PS:通过df命令查询到的tmpfs大小,只代表上限,即使改为超过物理内存,也能挂载上;如果内存不够充裕,建议使用默认挂载参数,不然调整太大的话,内存不足时还是会用到swap,对提高读写速度没有意义

创建后,dd命令生成小文件测试一下,生成30个10M的小文件,差别是非常大的!

1. 测试磁盘中的目录
tmpfs-1

2. 测试挂载为tmpfs的目录
tmpfs-2

 
三、tmpfs搭配NFS

  在生产环境中,遇到了这样一种场景,A服务器需要从B服务器,读取缓存文件,缓存是放在B服务器的tmpfs中的。如果两台服务器在内网中,不妨考虑用NFS。虽然测试发现NFS成为瓶颈,读写速度不太理想,但是这个方案比较简单易用,顺便再记录一下如何用NFS挂载tmpfs文件系统的远程路径。

1. 安装和启动服务
两台服务器使用centos6.4,都先用yum安装好 nfs-utils 和 rpcbind

服务端启动 nfs 和 rpcbind 两个服务,客户端启动 rpcbind 和 rpcidmapd,可以临时关闭 iptables 和 selinux

2. 服务端和客户端
B服务器 192.168.0.10(NFS服务端):

 
A服务器 192.168.0.11(NFS客户端)


如果只是做实验,关闭防火墙的情况下,这几步操作即可完成用nfs挂载一个远端的tmpfs.

评论

    • nando回复

      tmpfs中的内容肯定会掉嘛,毕竟是写内存

发表评论