我的服务器有大量内存。但是IO量(每次都很小)非常高。
有没有办法用部分内存制作虚拟驱动器?
我意识到我也可以使用 SSD,但它们很贵。
我需要速度和规模。所以光靠记忆是不行的。不经常访问的数据应该放在hdisk中。
答案1
使用tmpfs
。它通常安装在/dev/shm
默认大小为总 RAM 的 1/2 处。优点是,内存可供系统一般使用,直到您在那里放置一些东西(它是动态保留的)。你可能想稍微调整一下默认设置 - 我个人在 /etc/fstab 中有如下内容:
tmpfs /dev/shm tmpfs defaults,size=16m 0 0
tmpfs /free tmpfs defaults,size=66% 0 0
这有两件事:
/dev/shm/
为可能想要使用它的应用程序安装相当小的(16MB)tmpfs 。大小受到限制,以防止由于错误而意外浪费内存。在 处挂载 tmpfs,其大小为可用 RAM 的 2/3
/free
。
请注意,文件系统块大小等于内存页面大小 - 如果您使用内存页面大小较大的体系结构(例如 PowerPC 或 Itanium),即使是空文件也会占用整个页面。通过创建一个大文件,使用具有较小块的“常规”文件系统(例如,XFS 可以使用小至 512B 的块)对其进行格式化,然后循环挂载它,可以合理地减少此开销。
至于 SSD——它们比 RAM 慢几个数量级,无论如何都会被缓存,并且擦除周期数量有限,所以问题是当你有足够的 RAM 时是否要使用它们。顺便说一句,甚至还有硬件 RAM 驱动器。
答案2
是的。这称为磁盘缓存。它会自动发生。
如果您看到太多的 I/O,那么要么是您的程序失控,要么是您对某些内容进行了错误的调整,要么是您的系统没有足够的资源。
您可以将文件放入 RAM 驱动器中,但这几乎总是比让内核管理最近使用的数据的缓存更糟糕。分配给 RAM 驱动器的每个字节对于应用程序和磁盘缓存来说要少得多。
答案3
看看RapidCache!
它是RapidDisk 的一部分。它对块与文件进行 IO 缓存(如 Linux 缓存所做的那样),使其成为虚拟机的理想选择!