欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

在Linux上使用文件系统tmpfs的技巧

程序员文章站 2022-05-20 18:29:02
tmpfs是一种基于内存的文件系统,安装后即可使用,下面针对 tmpfs的用途及大小的调整做个详细介绍,感兴趣的朋友可以看看哦... 15-03-02...

  tmpfs是一种基于内存的文件系统,安装后即可使用,下面小编将针对linux tmpfs的用途及大小的调整做个详细介绍,有兴趣的朋友可以来了解下。

  tmpfs介绍

  tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化

  它最大的特点就是它的存储空间在vm(virtual memory),vm是由linux内核里面的vm子系统管理的。

  linux下面vm的大小由rm(real memory)和swap组成,rm的大小就是物理内存的大小,而swap的大小是由自己决定的。

  swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对rm(real memory)要慢许多,当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的rm时,就会把rm里面的一些不常用的数据交换到swap里面,如果需要重新使用这些数据再把它们从swap交换到rm里面。如果有足够大的物理内存,可以不划分swap分区。

  vm由rm+swap两部分组成,因此tmpfs最大的存储空间可达(the size of rm + the size of swap)。 但是对于tmpfs本身而言,它并不知道自己使用的空间是rm还是swap,这一切都是由内核的vm子系统管理的。

  tmpfs默认的大小是rm的一半,假如你的物理内存是1024m,那么tmpfs默认的大小就是512m

  一般情况下,是配置的小于物理内存大小的。

  tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1g,里头放有100m文件,那剩余的900m仍然可为其它应用程序所使用,但它所占用的100m内存,是不会被系统回收重新划分的。

  当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 vm 资源。

  #########################

  tmpfs的用途

  例如:

  oracle 中的automatic memory management特性就使用了/dev/shm。

  linux中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点提升系统性能。

  调整tmpfs大小大致有以下三种方法:

  1.直接挂载到需要的目录--比如系统的临时目录-可以根据实际需要挂载某个程序的临时文件的目录

  [root@bys3 ~]# mount -t tmpfs -o size=20m tmpfs /tmp

  [root@bys3 ~]# df -h

  filesystem size used avail use% mounted on

  /dev/sda2 16g 10g 4.7g 69% /

  /dev/sda1 99m 21m 74m 22% /boot

  tmpfs 502m 0 502m 0% /dev/shm

  tmpfs 20m 0 20m 0% /tmp

  由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。可以写入/etc/fstab,这样重启后也有效。

  2./etc/fstab文件来修改/dev/shm的容量(增加size=100m选项即可),修改后,重新挂载即可:

  [root@bys3 ~]# cat /etc/fstab

  label=/ / ext3 defaults 1 1

  label=/boot /boot ext3 defaults 1 2

  tmpfs /dev/shm tmpfs defaults,size=600m 0 0

  tmpfs /tmp tmpfs defaults,size=25m 0 0

  devpts /dev/pts devpts gid=5,mode=620 0 0

  sysfs /sys sysfs defaults 0 0

  proc /proc proc defaults 0 0

  label=swap-sda3 swap swap defaults 0 0

  /dev/sda5 swap swap defaults 0 0

  [root@bys3 ~]# mount -a --测试/etc/fstab无错误,重启os系统

  [oracle@bys3 ~]$ df -h --重启后的信息如下,tmpfs文件系统的对应条目已经改变为配置的

  filesystem size used avail use% mounted on

  /dev/sda2 16g 10g 4.7g 69% /

  /dev/sda1 99m 21m 74m 22% /boot

  tmpfs 600m 0 600m 0% /dev/shm

  tmpfs 25m 0 25m 0% /tmp

  3./dev/shm建一个tmp目前,并与/tmp绑定。 --这方法有点烦琐,不如方法1方便快捷。

  [root@bys3 ~]# mkdir /dev/shm/tmp

  [root@bys3 ~]# chmod 1777 /dev/shm/tmp

  [root@bys3 ~]# mount --bind /dev/shm/tmp /tmp -注意mount --bind 这里bind前是两个-

  [root@bys3 ~]# ls -ld /tmp

  drwxrwxrwt 2 root root 40 dec 8 12:15 /tmp

  [root@bys3 ~]# df -h

  filesystem size used avail use% mounted on

  /dev/sda2 16g 10g 4.7g 69% /

  /dev/sda1 99m 21m 74m 22% /boot

  tmpfs 600m 0 600m 0% /dev/shm

  tmpfs 600m 0 600m 0% /tmp ----可以看到/tmp使用到了 /dev/shm的空间。

  上面就是linux使用tmpfs的方法介绍了,本文除了介绍tmpfs的用途外,还介绍了调整tmpfs大小的三大方法,因为tmpfs不是块设备,需安装使用。