我曾经见过一个有点过时的教程,建议使用 ramdisk 提供 html 文件,如下所示:
mkfs -q /dev/ram1 102400
我还发现另一个来源使用了类似的东西:
mount -t tmpfs -o size=1024 none /mnt/rds
这两种方法同样有效吗?我使用的是带有 nginx 的 Centos 6.3。因此实际上我想/usr/share/nginx/html
从 RAM 中提供文件。
如果我安装了磁盘,那么当原始文件夹发生真正的变化时,我是否必须再次安装?
答案1
从你的问题(最后一段)来看,我假设你认为 ramdrive 将具有与下面的原始文件系统相同的内容。事实并非如此。你将有一个空目录,需要先填充它。我不认为这是你想要的。
Linux 有一个非常好的缓存系统。每个未用于应用程序内存的内存页都将用作缓存。这意味着:即使没有 tmpfs(我推荐的方法),您的文件也会留在内存中,直到真正需要从那里刷新它为止。
假设这确实发生了并且你的内存已满:
- 如果您使用 tmpfs,您的 tmpfs 内容将移动到您的交换内存,这意味着,它也保存在磁盘上,并且速度并不比使用真实文件系统更快。
- 如果您不使用 tmpfs,您的缓存版本将从内存中刷新,这几乎不消耗时间。下次访问时,它将从磁盘读取并返回到缓存中。
因此,只要您不在很短的时间间隔内动态生成这些文件,我认为使用 tmpfs 没有任何优势。如果让 Linux 决定内存使用和交换,它通常会更高效。
答案2
为什么要费心呢?Linux 无论如何都会在第一次从磁盘读取时将它们缓存在 RAM 中。如果读取频率足够高它们将始终被缓存。
答案3
tmpfs 方法的开销较少。在 /dev/ram1 示例中,您有一个完整的文件系统,其中的 inode、目录等都存储在块设备中。使用 tmpfs 时,它本质上只是磁盘缓存。
是的,如果您创建了一个 ramdisk 并将文件复制到其中,则每当有更改时,您都需要再次复制这些文件。
答案4
不用说,使用 RAM 磁盘是一个好主意:我记得曾经阅读过一篇文章(不幸的是手头没有 URL)关于对两种 RAM 磁盘进行基准测试,结果令人惊讶地显示出相关差异(我已经忘记哪种更好)。