Linux 中的 TMPFS 虚拟内存文件系统Linux 中的 TMPFS 虚拟内存文件系统Linux 中的 TMPFS 虚拟内存文件系统Linux 中的 TMPFS 虚拟内存文件系统
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Linux 中的 TMPFS 虚拟内存文件系统

tmpfs,以前称为shmfs,是一种临时文件系统,指位于内存和/或交换分区中的文件系统。 Tmpfs 不会将文件数据存储在普通的非易失性存储上。相反,UNIX 内核管理虚拟内存,即 Tmpfs 文件所在的位置。创建 Tmpfs 的主要原因是通过允许在不使用磁盘或网络 I/O 的情况下写入和读取临时文件来提高性能。

我们会谈论什么?

在本文中,我们将概述 Linux 中的 Tmpfs 文件系统。

使用Tmpfs系统的优点

Linux 中以前的随机存取存储器文件系统 (ramfs) 已被新的临时文件系统 (Tmpfs) 取代。这是因为旧的 RAMFS 没有正确处理系统 RAM 不足时的情况。

将目录挂载为 Tmpfs 有几个好处,例如:

1.加速对其中文件的访问。

2. 确保每次系统重新启动时,该目录下的内容都会被自动删除。

3. Tmpfs 提高了文件操作率,同时保留了 UNIX 文件的语义。

4. tmpfs不需要固定或专用的文件磁盘空间,不会对性能产生不利影响。

Tmpfs 没有像“RAM 磁盘”那样利用专用物理内存,而是将文件数据存储在操作系统的页缓存中。它使读写文件变得更加容易,让文件系统在不使用任何磁盘空间的情况下动态增长和收缩,并且不会损害系统的整体性能。

安装 Tmpfs

使用mount命令并选择“tmp”作为文件系统类型,创建Tmpfs类型的文件系统。由于 Tmpfs 始终使用内存作为文件系统资源,因此会忽略要挂载的资源参数(例如原始设备)。由于Tmpfs始终使用内存作为文件系统资源,因此不考虑挂载时的资源参数(例如原始设备)。

目前,Tmpfs 没有挂载选项。许多常规挂载选项与 Tmpfs 的上下文无关。例如,将 Tmpfs 挂载设置为“只读”没有任何意义,因为它们在首次挂载时不保存任何数据。 Tmpfs 支持所有类型的文件,其中还包括符号链接、块和字符特殊设备文件 - UNIX 文件语义。尽管一个系统上可以安装许多基于 Tmpfs 的文件系统,但所有这些文件系统都必须共享同一资源池。

由于基于内存的文件系统的内容在系统重新启动或卸载操作后会被擦除,并且这些文件的生命周期非常短,因此/tmp是最适合它们的位置(因此称为临时文件系统)。这表明 /usr/tmp 不是挂载 Tmpfs 文件系统的合适位置,因为它的内容在重新引导之间会保留。

Tmpfs 的大小

Tmpfs 可以使用的可用空间量与未使用的交换空间量成正比。 Tmpfs 文件系统的大小会扩展以适应添加到其中的文件,但经常使用 Tmpfs 的用户必须意识到这种增长会带来一些固有的成本。 Tmpfs 与正在执行的程序的数据和堆栈段共享其资源。

如果 Tmpfs 文件系统接近其最大允许容量,则非常大的程序的执行可能会受到影响。 Tmpfs 可以分配系统的所有交换空间(4 MB 除外)。这足以确保大多数程序可以执行。尽管如此,如果 Tmpfs 文件系统接近满容量,某些程序可能无法执行。计划运行大型程序并广泛使用 Tmpfs 的用户应该寻找增加系统中可用交换空间的方法。

Tmpfs 的用途

Tmpfs 的用途包括:

1.内核中总有一个看不见的内部挂载。 SYSV 共享内存和共享匿名映射都使用 Tmpfs。 Tmpfs 挂载独立于 CONFIG_TMPFS。如果未设置 CONFIG_TMPFS,则不会创建 Tmpfs 的用户可见部分。然而,内部机制始终存在。

2. 对于 glibc 2.2 及以上版本,POSIX 共享内存(shm_open、shm_unlink)要求将 tmpfs 安装在 /dev/shm 处。可以通过在 /etc/fstab 文件中包含以下行来解决此问题:

tmpfs /dev/shm tmpfs defaults 0 0

如果需要,请创建要挂载 Tmpfs 的目录。

SYSV 使用的共享内存不需要 Tmpfs 挂载。这是通过内部安装完成的。要在 2.3 内核版本中使用 SYSV 共享内存,必须安装 shm fs(Tmpfs 的前身)。

3. 对于某些用户来说,将其安装在 /tmp 和 /var/tmp 等位置并拥有足够大的交换磁盘确实很有用。此外,Tmpfs 文件的循环挂载现在可以使用。因此,大多数发行版的 mkinitrd 应该使用 Tmpfs 运行。

4. 数量太多,无法一一列举。

Tmpfs 的挂载选项

让我们探讨一下 Tmpfs 的一些挂载选项:

size:这指定了 Tmpfs 实例可使用的最大字节数。默认情况下,如果没有交换空间,则只能使用一半的物理 RAM。

如果 Tmpfs 实例大于其需要的大小,机器就会陷入死锁,因为 OOM 处理程序将无法释放该内存。

nr 块:与 size 选项相同。然而,它是以 PAGE_CACHE_SIZE 为单位的。

nr inodes:此实例的 inode 上限。默认值是物理 RAM 页数或 lowmem RAM 页数(在具有 highmem 的系统上)的一半,以较小者为准。

结论

通常,Tmpfs 文件会在系统重新启动后被删除。但如果你想保留它们,你可以使用 systemd-tmpfiles。如果您想了解有关 Tmpfs 的更多信息,我们建议您阅读手册页。

©2015-2025 艾丽卡 support@alaica.com