tmpfs是一种虚拟内存文件系统正如这个定义它最大的特点就是它的存储空间在VM里面,这里提一下VM(virtual memory),VM是由linux内核里面的vm子系统管理,现在大多数操作系统都采用了虚拟内存管理机制。linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由你自己决定的。Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,我们为什么需要Swap呢?当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果你有足够大的物理内存,根本不需要划分Swap分区。

通过上面的说明,你该知道tmpfs使用的存储空间VM是什么了吧?前面说过VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)。 但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。

怎样使用tmpfs呢?

#mount  -t tmpfs -o size=20m  tmpfs /mnt/tmp

上面这条命令分配了上限为20m的VM到/mnt/tmp目录下,用df命令查看一下,确实/mnt/tmp挂载点显示的大小是20m,但是tmpfs一个优点就是它的大小是随着实际存储的容量而变化的,换句话说,假如/mnt/tmp目录下什么也没有,tmpfs并不占用VM。上面的参数20m只是告诉内核这个挂载点最大可用的VM为20m,如果不加上这个参数,tmpfs默认的大小是RM的一半,假如你的物理内存是128M,那么tmpfs默认的大小就是64M,

tmpfs有没有缺点呢?

当然有,由于它的数据是在VM里面,因此断电或者你卸载它之后,数据就会立即丢失,这也许就是它叫tmpfs的原故。不过这其实不能说是缺点。那tmpfs到底有什么用呢?

tmpfs的用途

由于tmpfs使用的是VM,因此它比硬盘的速度肯定要快,因此我们可以利用这个优点使用它来提升机器的性能。

#mount -t tmpfs  -o size=2m   tmpfs /tmp

上面这条命令分配了最大2m的VM给/tmp。

由于/tmp目录是放临时文件的地方,因此我们可以使用tmpfs来加快速度,由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。没有关系,只要在/etc/fstab里面加上下面的语句

tmpfs    /tmp      tmpfs  size=2m    0   0

重启电脑之后就一切OK了。

测试过程:

[root@localhost shm]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1             852G  325G 483G  41% /

tmpfs                  16G     0  16G   0% /dev/shm

/dev/md0              1.8T  506G 1.3T  30% /opt

[root@localhost shm]#

[root@localhost shm]# mount -t tmpfs -osize=2048M tmpfs /mnt/ram/

[root@localhost shm]#

[root@localhost shm]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1             852G  325G 483G  41% /

tmpfs                  16G     0  16G   0% /dev/shm

/dev/md0              1.8T  506G 1.3T  30% /opt

tmpfs                 2.0G     0 2.0G   0% /mnt/ram

[root@localhost shm]#

[root@localhost shm]#

[root@localhost chairly]#cp codeblocks-8.02-src.tar.bz2 /mnt/ram/

[root@localhost ram]#

[root@localhost ram]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda1             852G  325G 483G  41% /

tmpfs                  16G     0  16G   0% /dev/shm

/dev/md0              1.8T  506G 1.3T  30% /opt

tmpfs                 2.0G  6.6M 2.0G   1% /mnt/ram

[root@localhost ram]#

[root@localhost ram]# free

total       used       free    shared    buffers     cached

Mem:     32818744    3167792   29650952          0    128844    2710972

-/+ buffers/cache:     327976  32490768

Swap:    35005624          0   35005624

[root@localhost ram]#

[root@localhost ram]# rm *

rm: remove regular file`codeblocks-8.02-src.tar.bz2'? y

[root@localhost ram]#

[root@localhost ram]# free

total       used       free    shared    buffers     cached

Mem:     32818744    3161160   29657584          0    128856    2704292

-/+ buffers/cache:     328012  32490732

Swap:    35005624          0   35005624

[root@localhost ram]#

在/mnt/ram下无法使用dd命令测试硬盘读写速度。总是报dd: opening `/mnt/ram/write.dat': Invalid argument。

文章原地址:https://www.linuxidc.com/Linux/2011-09/42396.htm

Linux把内存挂载成硬盘提高读写速度的更多相关文章

  1. Linux中内存挂载到目录下

    [日期:2012-11-14]   /dev/shm是linux下的一块共享内存结构.默认大小是真实内存的一半.它用来存储进程间通讯时的一些共享数据结构.在物理内存足够时,会在内存中进行数据交换,如果 ...

  2. 使用内存虚拟硬盘 提高ArcGIS server并发性能的一种方法

    1 问题提出 1.1 概述 提高ArcGIS server并发性能的方法很多,本文讨论在用户硬件足够强大的情况下(主要是内存足够大),使用内存模拟硬盘来提高数据的读取效率,以达到提高ArcGIS se ...

  3. 【linux】新添加一块硬盘制作LVM卷并进行分区挂载

    linux服务器新添加一块硬盘,可以直接将盘格式化挂载就能用,比如挂载在/usr/local目录,但是这样有一个弊端,就是如果这一块磁盘满了,后续想要扩容的话,不能继续挂载这个/usr/local挂载 ...

  4. 【转】linux挂载新硬盘,开机自动挂载

    [转]linux挂载新硬盘,开机自动挂载 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ Linux的硬盘识别: 2.6 kernel以后,linux会将 ...

  5. Linux(以centos7为例)下自动挂载NTFS硬盘

    Linux(以centos7为例)下自动挂载NTFS硬盘 作者:子敬叔叔 编写时间:2017年5月3日星期三 需求:     为了熟悉Linux的使用,在自己的笔记本上新安装一个centos7, 但我 ...

  6. 利用Linux文件系统内存cache来提高性能

    https://www.linuxjournal.com/article/6345 利用Linux文件系统内存cache来提高性能 本地磁盘文件->socket发送,4步骤数据流向: hard ...

  7. 阿里云Linux服务器,挂载硬盘并将系统盘数据迁移到数据盘

    因为之前用宝塔上线,宝塔只挂载了系统盘50G,打开阿里云云盘列表发现系统盘无法直接升级,故另买一块数据盘挂载到Linux服务器下,下面根据网上教程再结合我实际情况讲解一下实际操作,其实非常easy l ...

  8. Linux查看CPU《型号..》《内存..》《硬盘..》《系统..》

    1.查看物理cpu个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2.查看核心数量grep 'core id' /proc/cpuinfo ...

  9. Ubuntu上使用过的命令,Linux常用命令,mount 硬盘挂载, ls 列表list命令,cp 复制copy命令,mkdir 创建文件夹 ,nano 编辑器,cat 文档合并,chmod 文件权限,ssh win10连接ubuntu服务器的步骤

    man 帮助 > man ls # ubuntu的帮助 tar.gz 压缩解压 > tar -zcvf yzn.tar.gz /home/yzn # 压缩 > tar -zxvf y ...

随机推荐

  1. 代码杂谈-python函数

    发现函数可以设置属性变量, 如下 newfunc.func , newfunc.args def partial(func, *args, **keywords): """ ...

  2. 吴裕雄--天生自然Django框架开发笔记:Django简介

    Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python写成. ...

  3. visualVM远程监控jetty

    1.打开本体bin/visualvm 2.添加远程主机 3.启动应用,使用以下方式 java -Djava.rmi.server.hostname=远程IP地址 -Dcom.sun.managemen ...

  4. UML-对象设计要迭代和进化式

    1.在<如何面向对象设计>和<如何进行对象设计?>中,对如何迭代和进化式的设计对象做些总结: 1).轻量+简短 2).快速进入编码+测试 3).不要试图在UML中细化所有事物 ...

  5. JaveSE--getResource

    System.out.println(ConfigUtils.class.getProtectionDomain().getCodeSource().getLocation().getPath()); ...

  6. Linux--wget,yum,rpm,apt-get

    参考:http://blog.csdn.net/ziju125521/article/details/52575715 使用wget下载一个 rpm包, 然后用 rpm -ivh  xxx.rpm  ...

  7. squid完全攻略

    squid完全攻略 http://blog.sina.com.cn/s/blog_7572cf8e0100rl99.html squid,nginx,lighttpd反向代理的区别 [root@loc ...

  8. vue验证时间范围

    验证时间范围 type="daterange" <DatePicker class="formItem" :size="size" v ...

  9. MySql、Mongodb和Redis的区别

    NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路. M ...

  10. js 输出语句document.write()及动态改变元素中内容innerHTML的使用

    操作 HTML 元素 如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法. 请使用 "id" 属性来标 ...