Linux 上 RAMFS 和 TMPFS 的介绍

举报
Tiamo_T 发表于 2021/11/24 22:46:21 2021/11/24
【摘要】 使用 ramfs 或 tmpfs,您可以分配一部分物理内存用作分区。你可以挂载这个分区,像硬盘分区一样开始读写文件。由于您将读取和写入 RAM,因此速度会更快。当重要进程由于磁盘写入而变得非常缓慢时,您可以选择 ramfs 或 tmpfs 文件系统将文件写入 RAM。tmpfs 和 ramfs mount 都将为您提供从主内存快速读取和写入文件的能力。当您在一个小文件上测试时,您可能看不到巨...

使用 ramfs 或 tmpfs,您可以分配一部分物理内存用作分区。你可以挂载这个分区,像硬盘分区一样开始读写文件。由于您将读取和写入 RAM,因此速度会更快。
[Linux Ramfs and Tmpfs]
当重要进程由于磁盘写入而变得非常缓慢时,您可以选择 ramfs 或 tmpfs 文件系统将文件写入 RAM。


tmpfs 和 ramfs mount 都将为您提供从主内存快速读取和写入文件的能力。当您在一个小文件上测试时,您可能看不到巨大的差异。只有当您将大量数据写入具有其他处理开销(例如网络)的文件时,您才会注意到差异。

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 on
/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 ramfs -o size=20m ramfs /mnt/ram

下面挂载命令的最后一行显示了上面挂载的 /mnt/ram ramfs 文件系统。

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

您可以通过在/etc/fstab 中添加一个条目,在引导期间挂载 ramfs 和 tmpfs 。

3. Ramfs 与 Tmpfs

主要是 ramfs 和 tmpfs 做同样的事情,只有很少的细微差别。

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

4. Ramfs 和 Tmpfs 的缺点

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

表:ramfs 和 tmpfs 的比较
Experinmentation tmpfs Ramfs
填满最大空间并继续书写 会显示错误 会继续写
固定尺寸 是的
使用掉期 是的
易失性存储 是的 是的


如果您希望您的进程写入速度更快,那么选择 tmpfs 是更好的选择,并且可以预防系统崩溃。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200