Эфемерная файловая система

Эфемерная файловая система

У меня есть сервер сборки Jenkins (Linux) и агент (Windows), которые создают большие временные рабочие пространства, которые можно эффективно обрабатывать как кэши:

  • было бы неплохо, если бы их сохранили
  • их можно восстановить в случае утери
  • в случае потери данные должны быть утеряны, а не повреждены

Существует ли файловая система, которая позволяет мне пожертвовать сохранением данных ради скорости, при этом сохраняя данные после перезагрузок, но удаляя данные, потенциально затронутые некорректными завершениями работы, в идеале с гранулярностью «каталог верхнего уровня»?

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

решение1

Не думайте, что вы найдете то, что вам нужно, в файловой системе.

Что вы могли бы сделать, так это в качестве последнего шага задания (в момент, когда вы захотите сохранить кэш) заставить его создать файл с постоянным именем - /storage/jobID/job_completeили что-то в этом роде. При запуске, если этот файл не существует в каталоге задания, rm -r каталог задания. Это решает вашу проблему "полузавершенного задания".

Далее, вам нужна скорость. Пришло время рассмотреть новое оборудование, например SSD, или рассмотреть возможность внедрения RAID 0. Хотя 0 указывает на то, сколько данных вы сможете восстановить, если один диск выйдет из строя, вы можете получить значительное увеличение скорости как записи, так и чтения. (Медиацентр, который я поддерживал в местном колледже, использует RAID-1 для захвата видео в реальном времени перед перемещением полученных файлов в хранилище SAN).

Связанный контент