≡菜单

Linux上的RAMFS和TMPFS概述

这是SathiyaMoorthy撰写的来宾帖子。

[Linux 拉姆夫斯和Tmpfs]使用ramfs或tmpfs,您可以分配一部分物理内存以用作分区。您可以挂载此分区并开始写入和读取文件,例如硬盘分区。自从你’将对RAM进行读写操作会更快。

当重要的过程由于磁盘写入而变得非常慢时,可以选择ramfs或tmpfs文件系统来将文件写入RAM。


tmpfs和ramfs挂载都将为您提供从主内存快速读取和写入文件的能力。当您在一个小文件上进行测试时,您可能不会看到太大的差异。您’仅当您将大量数据写入文件并带来一些其他处理开销(例如网络)时,才会注意到差异。

1.如何挂载Tmpfs

# mkdir -p /mnt/tmp

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

df -k之后的最后一行显示了上面已安装的/ mnt / tmp tmpfs文件系统。

# df -k
Filesystem      1K-blocks  Used     Available Use%  Mounted 上 
/dev/sda2       32705400   5002488  26041576  17%   /
/dev/sda1       194442     18567    165836    11%   /boot
tmpfs           517320     0        517320    0%    /dev/shm
tmpfs           20480      0        20480     0%    /mnt/tmp

2.如何安装Ramfs

# mkdir -p /mnt/ram

# mount -t 拉姆夫斯 -o size=20m 拉姆夫斯 /mnt/ram

以下安装命令中的最后一行显示了上面已安装的/ mnt / ram 拉姆夫斯文件系统。

# mount
/dev/sda2 上  / type ext3 (rw)
proc 上  /proc type proc (rw)
sysfs 上  /sys type sysfs (rw)
devpts 上  /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 上  /boot type ext3 (rw)
tmpfs 上  /dev/shm type tmpfs (rw)
none 上  /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc 上  /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
fusectl 上  /sys/fs/fuse/connections type fusectl (rw)
tmpfs 上  /mnt/tmp type tmpfs (rw,size=20m)
ramfs 上  /mnt/ram type 拉姆夫斯 (rw,size=20m)

您可以在引导期间通过将条目添加到ramfs和tmpfs / etc / fstab.

3. 拉姆夫斯和Tmpfs

主要是ramfs和tmpfs都做相同的事情,只有很小的差异。

  • 拉姆夫斯将动态增长。因此,您需要控制写入数据的过程以确保ramfs不会’不要超过系统中可用的RAM大小。假设您的系统上有2GB的RAM,并创建了1GB的ramfs,并挂载为/ tmp / ram。当/ tmp / ram的总大小超过1GB时,您仍然可以向其中写入数据。系统不会阻止您写入超过1GB的数据。但是,当它超过2GB的总RAM大小时,系统可能会挂起,因为RAM中没有保留数据的空间。
  • Tmpfs将不会动态增长。它不允许您写超过您所能写的大小’在安装tmpfs时指定了ve。所以,你不’无需担心控制写入数据的过程,以确保tmpfs不会’不能超过指定的限制。它可能会给出类似于以下内容的错误“设备上没有剩余空间”.
  • Tmpfs的用途 交换.
  • 拉姆夫斯不使用swap。

4. 拉姆夫斯和Tmpfs的缺点

由于ramfs和tmpfs都正在写入系统RAM,因此一旦系统重新启动或崩溃,它将被删除。因此,您应该编写一个过程以定期间隔将数据从ramfs / tmpfs拾取到磁盘。您还可以编写一个进程,以在系统关闭时将数据从ramfs / tmpfs写入磁盘。但是,这对系统崩溃时没有帮助。

表:ramfs和tmpfs的比较
实验性 Tmpfs 拉姆夫斯
填满最大空间并继续书写 会显示错误 将继续写作
固定尺寸 没有
使用交换 没有
挥发性储存


如果您希望您的过程更快地编写,则选择tmpfs是更好的选择,同时注意避免系统崩溃。

本文由SathiyaMoorthy撰写。他在 bksystems有兴趣撰写文章并在业余时间为开源做出贡献。极客的东西欢迎您的提示和 客座文章.

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 21 评论… 加一 }

  • a 2008年11月6日,上午9:33

    拉姆夫斯使用交换。 ?

  • 世界银行 2008年11月7日,上午7:05

    拉姆夫斯使用交换。

    拉姆夫斯有什么优势?比tmpfs还老吗?

  • 修剪 2008年11月26日,上午4:42

    你好

    It’使用其他博客中的文章并提供链接很酷。
    更酷的是更正它(或者您可以自己复制错误吗?:)。

    您首先要说RamFS使用SWAP而不是TmpFS。
    然后,在总结中,您说相反…

    哪一个是对的?
    我会让你知道…

  • 拉梅什 2008年11月26日,下午1:56

    @ a,@ 世界银行,@ 修剪,

    拉姆夫斯不使用swap。一世’在文章中已对其进行了更正。就像Prune提到的那样,在复制来宾文章并设置其格式时,我犯了一个错误。对于错误,我们深表歉意,并衷心感谢您指出问题的帮助。

  • k3ninho 2008年12月10日,上午9:13

    拉梅什

    您还可以更正该表(ramfs和tmpfs的比较)吗?对非易失性存储的引用不’没有道理。在易失性或非易失性存储的标准意义上,RAMFS和TMPFS中使用的RAM都是易失性的,因为当断电时,它也会丢失数据。

    K3n.

  • 坦率 2009年3月10日,下午12:29

    这些选项与仅使用/ dev / shm有何不同?

    F

  • 拉梅什 2009年4月1日,下午3:10

    @ k3ninho,

    感谢您指出。一世’ve校正了比较表。

    @坦率

    dev / shm是典型的共享内存。您可以使用它在各个进程之间传递应用程序数据。以下链接对此主题进行了有趣的讨论:

    http://www.mail-archive.com/[email protected]/msg01251.html

  • 约翰斯芬 2009年4月2日,上午8:34

    我认为您讨论了有关定期或在关机时将数据复制到磁盘的过多讨论。 Tmpfs或ramfs主要用于下次重启后不再需要的数据。如果值得花时间/麻烦备份到磁盘,那么首先值得在磁盘上创建它。信任系统级缓存可以做出更好的决策,这要比您手动在ram中缓存写入以提高速度和延迟写入磁盘来确保安全性更好。

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2009年6月28日,上午11:49

    当前没有ramdisk,我的/ tmp充满了可删除的文件(在下次启动时删除)。

    通过如上所述创建tmpfs,什么将应用程序定向到该文件?

    否则,如果它是自动的,在系统启动时如何从中受益?

  • tom3k 2009年8月26日,下午1:46

    iv看到很多关于安装参数的信息“maxsize” for 拉姆夫斯…

    有谁知道这个参数是否存在?

    我基本上想要ramfs的功能(非交换,增长…),但没有将其填充到100%的危险。

    我将其用于我的mysql临时文件夹…

  • 文尼拉 2009年10月27日,上午6:51

    我获得了有关tmpfs和ramfs的良好信息。
    谢谢!

  • 匿名 2009年10月30日,下午1:01

    删除tmpfs上的文件似乎并不能立即释放空间。释放空间大约需要15分钟 “df”。我们能做些什么来立即释放空间?

  • 性能 2011年7月4日,下午1:58

    性能比较如何?
    哪一个使用较小的CPU?
    据我所知,ramfs使用了很多简单的内核代码–从理论上讲哪个更快?

  • 特雷克斯 2012年2月20日,上午3:38

    谢谢!

  • 坎特 2012年8月8日,上午1:11

    很棒的文章!很有用!非常感谢。

  • 尼依鲁 2013年5月2日,晚上9:06

    tmpfs如何使用swap ??,它会不时刷新到它??,您能帮助我理解吗?

    感谢这篇优秀的文章!!!

  • CBee 2013年6月6日,上午8:58

    @Niyiru:tmpfs几乎与其他所有应用程序一样使用交换:一旦内存运行在某个级别以下并且有交换空间,则可以/将移出较少使用的块。

    @anonymous:对于大多数文件系统:删除文件后,它们在文件名表中的条目将立即删除。仅在删除索引节点的最后一个链接(包括进程中的文件指针)后,才会删除索引节点。这可以是即时的,也可以是‘garbadge collecting’时刻。只有在那之后,数据空间才被分配给空闲块列表。依次等待释放或重新使用它。

  • 最小的 2015年2月18日,上午6:37

    感谢您的共享信息!
    但是,我想问一些其他有关树莓派设备的tmpfs实现的问题。
    我目前的/ etc / fstab内容如下:
    tmpfs / tmp tmpfs nodev,nosuid,noexec,nodiratime,大小= 10M 0 0
    tmpfs / var / lib tmpfs nodev,nosuid,noexec,nodiratime,大小= 10M 0 0
    tmpfs / var / log tmpfs nodev,nosuid,noexec,nodiratime,大小= 10M 0 0
    tmpfs / var / run tmpfs nodev,nosuid,noexec,nodiratime,大小= 10M 0 0
    / dev / mmcblk0p1 / boot vfat默认值0 2
    / dev / mmcblk0p2 / ext4 ro 0 1

    我想为我的设备创建只读FS。
    我想问一下,实施的东西是否正确?
    在我的设备首次启动时,启动时遇到一些错误’■只读FS发生了变化,设备无法使用dhcp启用,我的意思是,/ etc出于读写目的而访问这些文件,并且由于将/“ro”我很喜欢这些问题,
    因此,如果您有任何想法,可以请帮助我吗?

    提前致谢!

  • 安德鲁 2015年2月27日,上午6:26

    Johnshine,敬业第一!我不’想要恢复任何数据。它的类型,保存时间,保存时间,保存时间和方式…等。因此,在发布无知之前,您必须尝试一些开箱即用的思考…

  • Arief 2017年5月16日,下午6:24

    如果同时使用ramfs和tmpfs怎么办?
    有问题吗?

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2017年5月19日,上午8:07

    没有给出在fstab中包含tmpfs的示例。

    这是您将tmpfs与fstab一起使用的示例
    tmpfs / tmp tmpfs nodev,nosuid,noatime,大小= 1G 0 0

发表评论