Назад | Перейти на главную страницу

Файловая система RAMDisk Linux с блокировкой записи при заполнении файловой системы

Мне нужно настроить Linux RAMDisk для реализации очереди.

Основная идея состоит в том, что на RAMDisk будут записываться процессы. В то же время есть процессы, которые следят за новыми файлами, читают и удаляют их по мере их поступления.

В ситуации, когда запись выполняется быстрее, чем чтение, и RAMDisk заполняется, запись должна блокироваться до тех пор, пока на RAMDisk не появится достаточно места для хранения нового файла, который поступает.

Один из вариантов - использовать tmpfs, который `` переполняется '' на диск, когда используется оперативная память, назначенная файловой системе, - однако вся система будет замедляться из-за медленного ввода-вывода жесткого диска, задействованного в этом, - и в моей высокопроизводительной системе это было бы неприемлемо.

В идеале мне нужна файловая система, которая автоматически блокирует запись, когда RAMDisk заполнен, пока не станет доступно достаточно места.

Обратите внимание: у меня нет контроля над процессами записи, поэтому у них не будет возможности запрашивать свободное пространство и ждать - это просто тупые процессы, которые просто все время пишут.

Любое решение?

У вашей проблемы нет простого решения; полный диск - это ошибка, и о ней необходимо сигнализировать. Без возможности изменять производителей вы не можете делать то, что хотите. Там является способ изменить код, не внося его, так сказать, LD_PRELOAD, но, честно говоря, это не то решение, которое я когда-либо хотел бы приглашать для реализации. Правильный ответ - в первую очередь правильно спроектировать систему и не принимать отказ от контроля как оправдание плохой конструкции.

В любом случае, учитывая, что вы, очевидно, не беспокоитесь о надежной обработке всех заданий (иначе вы бы не пытались реализовать очередь на виртуальном диске), почему бы просто не попросить производителей сбросить задание, если очередь заполнена?