-1

У меня есть программа, которая записывает файл на диск, а затем обрабатывает другой. Обычно это происходит в течение секунды или около того, поэтому файл является почти временным. Чтобы избежать дискового ввода-вывода, я пишу в /dev /shm. Однако, если второй процесс перестает работать или отстает, я не хочу потерять все данные в случае сбоя / перезагрузки системы.

Мне нужна установка, которая будет копировать файлы старше X секунд на жесткий диск (не SSD).

Сейчас я видел EPRD, но он работает на уровне блоков. Так что у меня не будет семантики или безопасности файла, которую я желаю. То же самое для bcache, насколько я могу судить. (Плюс bcache нацелен на производительность типа SSD, поэтому, вероятно, не лучше использовать его с жесткими дисками.)

Я хочу, чтобы в нормальном состоянии был нулевой дисковый ввод-вывод, а затем просто копирование файлов после определенного возраста. Могу ли я использовать стандартную файловую систему, настроить кэширование с обратной записью и получить эту функциональность? Или это что-то для cronjob и rsync?

1 ответ1

0

Если вы не настаиваете на файлах в памяти, но можете жить с данными в памяти и не боитесь немного развить свои текущие коды, вы можете использовать redis. http://redis.io/

Это очень очень очень простой менеджер баз данных значения ключа в памяти, который сохраняет данные на диске через заданные промежутки времени и имеет привязку ко всем разумным языкам в дополнение к удобному инструменту cli.

Что вам нужно сделать, это:

  • установите для интервала хранения redis значение, которое вы считаете достаточно безопасным, чтобы хранить то, что ожидает слишком долго, но достаточно долго, чтобы не хранить данные, которые появляются и исчезают во времени,
  • записать данные в redis в процессе A вместо записи в файл,
  • читать данные из redis в процессе A,
  • удалить данные

В случае сбоя redis или ОС, при следующем запуске redis сохраненные данные будут автоматически считаны в ожидании обработки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .