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

BestReplicated File System - Маленькие статические файлы

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

Самым простым решением, вероятно, является NAS с rsync + cron, но это кажется неудобным. Существует ли другая распределенная / реплицированная файловая система, которая поддерживает вышеуказанные требования? Мы смотрели на Amazon S3 + s3fs, но это было мучительно медленно.

Во многих отношениях это похоже на традиционное зеркалирование из авторитетного источника в сценарии веб-сервера, например www1, www2 и т. д.

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

думаю AFS (или OpenAFS) может быть для вас хорошим решением. Он был реализован в ядре Linux с версии 2.6.10 и использует Kerberos для аутентификации.

Если вам нужна только односторонняя репликация, вам действительно не нужна распределенная файловая система. Это вводит много сложности без выгоды. Я бы выбрал подход rsync. Последним шагом в сценарии сборки должно быть выталкивание артефактов, если сборка прошла успешно. Если вы не хотите, чтобы это было частью ваших сценариев сборки, вы можете использовать cron, чтобы делать это через определенные промежутки времени или lsyncd делать это при создании или изменении файлов.