tmpfs

tmpfs是一种虚拟内存文件系统, 它的存储空间在VM里面,现在大多数操作系统都采用了虚拟内存管理机制, VM(Virtual Memory) 是由Linux内核里面的VM子系统管理. VM的大小由RM(Real Memory)和swap组成, RM就是物理内存, swap是通过硬盘虚拟出来的内存空间, 大小是可以配置的. swap的读写速度相对RM(Real Memory)要慢许多. 在物理内存不足时一个进程申请内存, 内核的VM子系统就会把RM里面的一些不常用的数据交换到swap里面, 在需要使用这些数据时再从swap交换到RM里.
tmpfs最大可用的存储空间等于 RM + swap, 但是tmpfs本身不知道实际使用的空间是RM还是swap.

mkdir /tmp/memory
mount -t tmpfs -o size=1024M tmpfs /tmp/memory

上面的命令分配了1GB的VM到/tmp/memory目录下, 可以用df命令查看. tmpfs一个优点就是它实际使用的空间是随着实际存储的数据而变化的, 如果/tmp/memory目录下什么也没有, tmpfs并不占用VM. 参数1024m只是告诉内核这个挂载点最大可用的VM为1024m, 如果不设置这个参数, tmpfs默认的大小是RM的一半, 假如物理内存是8GB,那么tmpfs默认的大小就是4GB.

实际应用一: 将内存挂载到文件系统

#手动挂载:
mount -t tmpfs -o size=2g tmpfs /tmp/tbls
#启动时自动挂载: 修改/etc/fstab,添加如下一行
tmpfs /tmp/tbls tmpfs size=2g 0 0

实际应用二: 快速消耗内存. 下面的脚本将占用1GB内存1个小时, 注意需要root权限

#!/bin/bash
mkdir /tmp/memory
mount -t tmpfs -o size=1024M tmpfs /tmp/memory
dd if=/dev/zero of=/tmp/memory/block
sleep 3600
rm /tmp/memory/block
umount /tmp/memory
rmdir /tmp/memory

ramfs

ramfs是Linux下一种基于RAM做存储的文件系统, 可以把ramfs理解为在普通的HDD上建立了一个文件系统, 而现在HDD被替换成了RAM. 因为是RAM做存储所以会有很高的读写速度. 在ramfs中不会使用swap. 但是ramfs有一个问题是它会吃光系统所有的内存, 即使mount时指定了大小. 同时它只能被root用户访问.

sudo mount -t ramfs -o size=10M ramfs ./ramfs/
sudo dd if=/dev/zero of=./ramfs/test.file bs=1M count=20

测试时你会发现上面这个操作是能成功的,如果直接写一个比内存更大的文件,你会发现瞬间系统就卡住了. 另外dd命令必须要有root权限

dd: opening `./ramfs/test.file': Permission denied

df只使用h选项是无法显示ramfs的内容的, 要用-a参数

linux-numy:~ # df -ah | grep "/mnt/ram"
ramfs 0 0 0 - /mnt/ram

ramfs与tmpfs的区别是:

  • 达到空间上限时可以继续写入
  • 非固定大小
  • 不会使用swap
# 不指定大小则为内存大小
mount -t tmpfs tmpfs /tmp/mem1/
# ramfs需要使用df -a 或 mount -t ramfs 选项才能查看到,大小都是0,但不影响使用
mount -t ramfs ramfs /tmp/mem1/

.

Linux的tmpfs和ramfs的更多相关文章

  1. Linux下tmpfs与ramfs的区别

      ramfs是Linux下一种基于RAM做存储的文件系统.在使用过程中你就可以把ramfs理解为在普通的HDD上建立了一个文件系统,而现在HDD被替换成了RAM,因为是RAM做存储所以会有很高的存储 ...

  2. Linux下tmpfs介绍及使用

    tmpfs介绍 tmpfs是一种虚拟内存文件系统,而不是块设备.是基于内存的文件系统,创建时不需要使用mkfs等初始化它最大的特点就是它的存储空间在VM(virtual memory),VM是由lin ...

  3. linux里tmpfs文件系统

    linux里tmpfs文件系统 是一个虚拟内存文件系统,它不同于传统的用块设备形式来实现的Ramdisk,也不同于针对物理内存的Ramfs.Tmpfs可以使用物理内存,也可以使用交换分区. umoun ...

  4. linux之tmpfs

    1.概述 tmpfs是ramfs的衍生品,ramfs是基于RAM的文件系统,不能使用swap空间:tmpfs可以动态释放空间.可以使用swap空间.ramfs不能控制使用内存的大小容易使内存爆掉:而t ...

  5. Linux的tmpfs文件系统

    转载:http://blog.csdn.net/wxwsixis/article/details/5752186 前几天发现服务器的内存(ram)和swap使用率非常低,于是就想这么多的资源,不用岂不 ...

  6. 转://Linux下tmpfs介绍及使用

    tmpfs介绍 tmpfs是一种虚拟内存文件系统,而不是块设备.是基于内存的文件系统,创建时不需要使用mkfs等初始化它最大的特点就是它的存储空间在VM(virtual memory),VM是由lin ...

  7. LInux 文件系统 tmpfs 分区不显示解决

    因为不小心把 kernel 的 tmpfs 的选项去掉,导致 文件系统内的 tmpfs 分区不显示. kernel 打开如下选项即可 在文件系统内就会有相关显示

  8. 【Linux】tmpfs简介及增加方式

    一. 什么是tmpfs? tmpfs是一种基于内存的文件系统,它和虚拟磁盘ramdisk比较类似,但不完全相同,和ramdisk一样,tmpfs可以使用RAM,但它也可以使用swap分区来存储.而且传 ...

  9. CentOS工作内容(一)CentOS6.4的安装 hwclock和date

    CentOS工作内容(一)CentOS6.4的安装 hwclock和date 光碟安装 分配20G磁盘空间 插入光碟 选择第一项安装 如果要急救的话请选择第三项 启动安装进程 跳过光碟检测 选择nex ...

随机推荐

  1. rabbitmq:配置rabbitmq-management插件

    rabbitmq提供了一个图形的管理界面,用于管理.监控rabbitmq的运行情况,它是以插件的形式提供的,如果要启用需要启用插件 一.启用插件 rabbitmq-plugins enable rab ...

  2. error C4996: 'AVStream::codec': was declared deprecated

    关闭VS的SDL检查 工程 属性=>C/C++ =>General=> SDL checks 改为 No(/sdl).

  3. django项目用higcharts统计最近七天文章点击量。

    下载higcharts插件放在static文件夹下 前端引入 <script src="/static/highcharts/highcharts.js"></s ...

  4. dapi 基于Django的轻量级测试平台一 设计思想

    GitHub:https://github.com/yjlch1016/dapi 一.项目命名: dapi:即Django+API测试的缩写 二.设计思想: 模拟性能测试工具JMeter的思路, 实现 ...

  5. dfs 解决(隐式)图搜索问题

    132. 单词搜索 II 中文 English 给出一个由小写字母组成的矩阵和一个字典.找出所有同时在字典和矩阵中出现的单词.一个单词可以从矩阵中的任意位置开始,可以向左/右/上/下四个相邻方向移动. ...

  6. Locust性能测试7-分布式执行

    前言 使用Locust进行性能测试时,当一台单机不足以模拟所需的用户数量的时候,可以在多台机器上分布式的执行性能测试. locust分布式启动场景有2种,一种是单机设置master和slave模式,另 ...

  7. tf学习

    常用命令: 1.显示tf框架: rosrun tf view_frames evince frames.pd tf变换,定义不同坐标系之间的平移与旋转变换关系. 参考文献: tf教程 古月居博客

  8. 在github上优雅的搭建个人博客

    前言 啊啊啊---,经过差不多两天的持续摸索优化,个人博客算是初步完成了,现在自己看的效果还是非常不错的.这篇文章就是讲我怎么搭建一个这样的博客的.早在17年的时候就用hexo 结合github搭建过 ...

  9. M × N Puzzle

    http://poj.org/problem?id=2893 来自逆序对的强大力量 #include<iostream> #include<stdio.h> #include& ...

  10. python+ddt+unittest+excel+request实现接口自动化

    接口自动化测试流程:需求分析-用例设计--脚本开发--测试执行--结果分析1.获取接口文档,根据文档获取请求方式,传输协议,请求参数,响应参数,判断测试是否通过设计用例2.脚本开发:使用request ...