考虑将/tmp目录挂载到基于tmpfs内存的文件系统上的做法,就像使用:systemctl enable tmp.mount一样
并考虑以下几点:
一个理由是:对不同路径使用单独的文件系统可以保护系统不因文件系统变得完整或失败而发生故障。
-
另一个理由是:当使用内存而不是磁盘时,一些在/tmp目录中编写文件的应用程序可能会看到巨大的改进。
磁盘缓存始终有效吗?我的意思是,当你写到任何文件夹(不仅仅是/tmp)时,你可能一直在写内存,直到它被刷新到磁盘.内核在引擎盖下处理所有这些,我认为我不需要去干预,调整事情。那么,做systemctl enable tmp.mount有什么真正的价值呢?
此外,(在CentOS7.6中)我正在测试这一点,以尝试了解我正在经历的事情:
/dev/sda1为/boot/dev/sda2作为/boot/efi/dev/sda3为/systemctl enable tmp.mount,我就会得到tmpfs为/tmp这个tmpfs /tmp at 3.9GB比默认的方法好吗?默认方式是:(a)由于磁盘缓存,最初基于RAM的内存高达~8GB;(b)当基于8GB内存容量的磁盘缓存时,可用的磁盘容量超过400 8GB?
发布于 2019-04-12 17:19:04
这种配置是否“增加价值”完全取决于所讨论的用例。“好”、“坏”,这些都是没有上下文的不同配置选项的有效标签。
对于具有大量RAM和较高事务号的系统,tmpfs文件系统可能会提高性能(例如:类型-2管理程序)。这可能是“好”用例。
或者,拥有少量内存但存储量很大的系统(例如:现在生产的任何一种网络垃圾)可能在物理编写的/tmp存储设备上表现得更好,因为内存中的任何东西都可以在未充分利用的情况下进行交换(如果交换也被激活的话)。对于tmpfs /tmp来说,这是一个“坏”的情况。
发布于 2023-05-05 18:18:07
使用tmpfs挂载路径时,默认大小为物理内存的一半。只要您的系统不受内存压力,您放置的任何文件都将在内存中,并且不会触摸磁盘。
这与在实际持久存储(如旋转磁盘、ssd或nvme)上写入文件形成了对比。如果您有500 1GB的空闲内存,并且对旋转磁盘上的文件进行了1GB的打开写-关闭,内核将为您做一些事情:
tmpfs只在整个系统内存使用率足够高以至于应用程序(以及其他进程)使用足够的内存而需要切换到磁盘时才会接触磁盘。像任何其他应用程序的内存一样,tmpfs块被分页并写入交换。如果已禁用交换,那么内核将开始终止进程以释放内存。但否则,任何东西都不会触及磁盘。没有日志,没有创建/访问/修改时间戳,没有用户权限,什么都没有。当您使用tmpfs时,您说的是“将这些文件与其他所有内容一起保存在内存中,并将它们视为与主存一样的可遗忘的”。
tmpfs在发布时是绝对令人惊讶的,它几乎取代了Solaris/Linux中执行"ram disks“的所有其他方法(我不记得它是在哪里移植的)。
https://unix.stackexchange.com/questions/512134
复制相似问题