如何暂时将文件写入文件系统,但实际上将其保存在RAM上?

问题描述:

我有一个服务器接收HTTP请求中的文件,我想让该文件可用于另一个进程,但我不希望将该文件写入磁盘的I/O开销。如何暂时将文件写入文件系统,但实际上将其保存在RAM上?

在Linux中是否有任何实际映射到RAM的目录,所以我启动的过程可以像正常文件一样访问路径?

我知道如果我在普通文件中这样做,那么很有可能文件不会因为缓存而被刷新到磁盘,但那不是我要找的。

+0

另外还有像缓存Redis的库,通常用于这类问题 – dan08

+0

IPC。例如:共享内存,套接字。 –

+0

@KarolyHorvath我无法控制其他程序,只有一个接收文件路径作为参数的命令行API。 –

RAM没有保证的位置,但it's not particularly hard to convert /tmp to be backed by RAM如果你有足够的RAM备用。鉴于/tmp is cleaned out on boot anyway,它是RAM磁盘的理想选择,因为功率损失造成的数据丢失并不重要;无论如何,数据将在启动时被清除。

+0

*鉴于'/ tmp'在启动时被清除* [不一定](http://serverfault.com/questions/377348/when-does- TMP-GET-清除)。虽然我同意,但没有人应该依赖'/ tmp'中的内容来保存任何*。 –

如果您想确保特定文件在RAM中,您可以使用vmtouch(https://hoytech.com/vmtouch/)。但是,该文件将被写入磁盘。

您可以使用以下方法来创建RAM磁盘(如每these instructions):

mkdir /mnt/ramdisk 
mount -t ramfs -o size=512m ramfs /mnt/ramdisk