RAMFS是什么

小白 QA 2020-09-23 01:42:03 阅读(...)

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

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

RAMFS是什么

由于 ramfs 的实现就相当于把 RAM 作为最后一层的存储,所以在 ramfs 中不会使用 swap。你什么时候听过会把 HDD 上的文件 swap 到哪里去吗?平常说的 swap 都是针对内存来说的,而 ramfs 底层的存储是 RAM,虽然不是 HDD,但是在 Linux 看来它就跟 HDD 一样。但是 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

tmpfs 也是 Linux 下的一个文件系统,它将所有的文件都保存在虚拟内存中,umount tmpfs 后所有的数据也会丢失,tmpfs 就是 ramfs 的衍生品。tmpfs 使用了虚拟内存的机制,它会进行 swap,但是它有一个相比 ramfs 的好处:mount 时指定的 size 参数是起作用的,这样就能保证系统的安全,而不是像 ramfs 那样,一不留心因为写入数据太大吃光系统所有内存导致系统被 hang 住。在我文章最开始的那个例子中就是 mount 了一个 10M 大小的 tmpfs,然后执行 sql 命令(它需要创建的临时表大于 10M),因为 tmpfs 限制了大小,因此也就报错。那么 tmpfs 适用的场景有哪些呢?在官方文档上主要有如下几点:

kernel 内部需要用到它,而我们是无法看到的

glibc 2.2 以上的版本,必须有一个 tmpfs 被 mount 在/dev/shm 用做 POSIX shared memory

还有很多包括现在还不知道的用途

包括我现在的公司就有一个需求,某些数据如果放在磁盘上访问压力根本扛不住,因此临时做了一个 tmpfs 做缓存来减缓压力,当然这不是最终的解决之道。所以总结来说 ramfs 与 tmpfs 有如下几点异同:

ramfs 会因为数据的写入自动增长空间,所以可能导致最后系统所有的内存耗完

tmpfs 可以再 mount 时限定大小,不会自动增长

ramfs 不会用 swap

tmpfs 会使用 swap

RAMFS 是一个非常巧妙的,利用 VFS 自身结构而形成的内存文件系统。

RAMFS 没有自已的文件存储结构,它的文件存储于 page cache 中,目录结构由 dentry 链表本身描述,文件则由 VFS 的 inode 结构本身描述。

收藏 0个人收藏
走进科技生活方式

相关推荐

  • 伺服电机是什么

    伺服电机是什么

    伺服电机(servo motor )是指在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。
  • 嵌入式文件系统是什么

    嵌入式文件系统是什么

    嵌入式文件系统是指嵌入式系统中实现文件存取、管理等功能的模块,提供一系列文件输入输出等文件管理功能,为嵌入式系统和设备提供文件系统支持。
  • ramdisk是什么

    ramdisk是什么

    ramdisk一般指虚拟内存盘。虚拟内存盘是通过软件将一部分内存模拟为硬盘来使用的一种技术。相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度。但是RAM的易失性也意味着当关闭电源后这部分数据将会丢失。
  • uclinux

    uCLinux是什么

    uclinux即“微控制器领域中的Linux系统”,主要是针对目标处理器没有存储管理单元MMU的嵌入式系统而设计的。已经被成功地移植到了很多平台上。
  • 嵌入式系统 Embedded system

    嵌入式系统是什么

    嵌入式系统由硬件和软件组成.是能够独立进行运作的器件。其软件内容只包括软件运行环境及其操作系统。硬件内容包括信号处理器、存储器、通信模块等在内的多方面的内容,相比于一般的计算机处理系统而言。
  • 延伸文件系统 Extended file system

    延伸文件系统是什么

    延伸文件系统(扩展文件系统)是为linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。它是在linux上,第一个利用虚拟文件系统实现出的文件系统,最大可支持2GB的文件系统。