[转帖]Linux的tmpfs和ramfs

linux,tmpfs,ramfs · 浏览次数 : 0

小编点评

**tmpfs 文件系统** * tmpfs 是一个虚拟内存文件系统,存储空间位于 VM 中。 * VM 的大小由 RM (物理内存) 和 swap(硬盘虚拟内存)组成。 * swap 的读写速度相对 RM 要慢许多。 * 当物理内存不足时,进程申请内存时,内核将 RM 中的一些不常用的数据交换到 swap 中。 * 当需要使用这些数据时,从 swap 中交换到 RM。 * tmpfs 的最大可用的存储空间等于 RM + swap,但 tmpfs 本身不知道实际使用的空间是 RM还是 swap。 * 参数 1024m 指定 tmpfs 的最大可用的 VM 为 1024m。 * 如果不设置该参数,默认大小为 RM 的一半,即 4GB。 * 使用 tmpfs 可以节省物理内存,因为实际使用的空间随着数据变化。 **两种应用方式** * **手动挂载**:使用 `mount -t tmpfs -o size=2g tmpfs /tmp/tbls` 命令手动挂载 2GB 的 RAM 到 `/tmp/tbls` 目录。 * **快速消耗内存**:运行以下命令快速消耗 1GB 的内存 1 小时: ```bash mount -t ramfs -o size=10M ramfs ./ramfs/sudo ``` **ramfs 文件系统** * ramfs 是 Linux 中一种基于 RAM 的存储文件系统。 * 它会把 RAM 中的某些数据写入硬盘,从而实现高性能读写。 * 由于 RAM 是随机访问存储,ramfs 不会使用 swap。 * 但是,ramfs 也有一个问题,就是它会吃光系统所有的内存,即使 mount 时指定了大小。 * 同时,它只能被 root 用户访问。 **tmpfs 与 ramfs 的区别** | 特征 | tmpfs | ramfs | |---|---|---| | 存储方式 |虚拟内存 | RAM | | 可用的存储空间 | RM + swap | RAM | | 可配置大小 | 可配置 | 默认为 RM 的一半 | | 使用 swap | 不使用 | 使用 swap | | 速度 | 相对较慢 | 相对较高 | | 使用场景 | 需要节省物理内存的应用程序 | 需要快速消耗大量内存的应用程序 |

正文

 

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.

1
2
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.

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

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

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

1
2
3
4
5
6
7
8
#!/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用户访问.

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

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

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

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

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

ramfs与tmpfs的区别是:

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

与[转帖]Linux的tmpfs和ramfs相似的内容:

[转帖]Linux的tmpfs和ramfs

tmpfs tmpfs是一种虚拟内存文件系统, 它的存储空间在VM里面,现在大多数操作系统都采用了虚拟内存管理机制, VM(Virtual Memory) 是由Linux内核里面的VM子系统管理. VM的大小由RM(Real Memory)和swap组成, RM就是物理内存, swap是通过硬盘虚拟

[转帖]linux内存挂载

1.主要功能 在linux中,为了提高读写速度,可以将内存挂载到目录,常见的文件格式有tmpfs和ramfs。 2.挂载步骤 $ sudo mkdir /mnt/tmp $ sudo mkdir /mnt/ram $ sudo mount -t tmpfs -o size=20m tmpfs /mn

[转帖]linux的硬链接和软连接的区别

Linux中有两种链接文件: 1)软链接(符号链接symbol),等同于Windows中快捷方式 ln -s 源文件名 符号链接文件名,源文件名和符号链接文件名是主从关系,源被删了,符号链接也就失效了 eg: ln -s src.c linker.c (linker.c就是src.c的一个符号链接文

[转帖]linux 下 {}大括号的用法

我们平时使用Linux的时候经常遇到这样一个问题,举例有这样一种情况:执行命令 $ cp /etc/apt/sources.list /etc/apt/sources.list.bak 这里面有个问题,明明 /etc/apt/sources 这几个字都是一样的,为什么要打两遍?这样的还算短了,要是更

[转帖]Linux 运维工具

Linux系统是目前仅次于Windows系统的一个开源系统,并且拥有比Windows系统更广泛的应用范围,从航天到军事、从科研到金融、从手机到电脑,你能够在任何一个需要操作系统的地方看到Linux的身影。 实际上Linux并不是一个真正的系统,它仅仅是一个有着上万行代码的系统内核,最初版本也只能够在

[转帖]Linux Shell 脚本的 10 个有用的“面试问题和解答”

http://blog.itpub.net/31545813/viewspace-2926667/ Linux 的浩瀚无垠,使人总能每次都提交与众不同的内容。这些内容不仅对他们的职业生涯很有用,同时也让他们增长知识。在此,我们就尝试这么去做,至于能取得多大的成功,就由我们的读者朋友们来判断吧。 在此

[转帖]linux系统目录结构介绍

linux的目录结构 Linux系统各个目录的作用 /: 根目录。有且只有一个根目录。所有的东西都是从根目录开始。举个例子:当你在终端里输入“/home”,你其实是在告诉服务器,先从/(根目录)开始,再进入到home目录。 /root: 这是系统管理员(root user)的目录。对于系统来说,系统

[转帖]Linux系统下rpm命令使用详解

简介 rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。 rpm命令十分

[转帖]linux查询bash行,Linux入门11-bash常见特性及文本查看命令

https://blog.csdn.net/weixin_30847063/article/details/117008175 Linux的基本命令都存放在/bin中,里面是命令的二进制文件。下面对常用命令进行讲解。 du :查看文件或者目录的大小。常用格式:du -h 文件名/目录。常用选项-h:

[转帖]linux top命令详解

一.top简介 top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。在Linux操作系统中,top是使用最频繁,也是比较全的一个命令。Top命令类似于Windows系统的任务管理器工具。它对于所有正在运行的进行和系统负荷提供不断更新的概览信息,