Linux RAMDisk文件系统在文件系统已满时阻塞写入

我需要设置一个Linux RAMDisk来实现一个队列

基本思想是将进程写入RAMDisk。 同时还有一些进程监视新文件,并在进入时读取和删除它们。

在写入速度快于读取速度并且RAMDisk填满的情况下,应该阻止写入,直到RAMDisk中有足够的空间来存储正在进入的新文件。

一种select是使用tmpfs,当分配给文件系统的ram被全部使用时,它会“溢出”到磁盘上,但是,由于缓慢的HDD IO,整个系统将会减速,在我的高性能系统那将是不可接受的。

我想理想的是一个文件系统,当RAMDisk已满时自动阻止写入,直到有足够的空间可用。

注意我没有对写入过程的控制权,所以他们没有能力查询空闲空间并等待 – 它们只是简单的写入所有的时间。

任何解决scheme

你的问题没有简单的解决办法。 一个完整的磁盘是一个错误,需要像这样发信号。 没有修改生产者的能力,你不能做你想做的事情。 有一种修改代码而不修改代码的方式,涉及到LD_PRELOAD ,但实际上这不是我想邀请任何人实现的解决scheme。 正确的答案是首先正确地devise你的系统,而不接受“不控制”作为糟糕devise的借口。

无论如何,考虑到你显然不担心可靠地处理所有的工作(否则你不会试图在一个虚拟磁盘上实现一个队列),为什么不让生产者在队列满时放弃这个工作呢?