Предоставление файловой системы в качестве сервиса, совместимого с Amazon S3.

Вопрос или проблема

Я ищу программное обеспечение с открытым исходным кодом, которое можно использовать для представления дерева файловой системы как услуги с совместимым API S3 (подмножество).

Мне нужно что-то, что позволит программам (например, GenomeSpace, который имеет возможность работы с клиентом S3) удаленно читать и записывать файлы из файловой системы моего сервера как будто мой сервер был полноценным сервером S3.

Избыточность и т. д. не являются обязательными. Это не полнофункциональное объектное хранилище: это просто делает файлы и директории выглядящими как объектное хранилище для клиента S3, работающего на другой машине (вероятно, в том же дата-центре).

Следовало упомянуть, что мой сервер будет работать под управлением какой-либо версии Linux.

Если вы хотите создать личный сервис, подобный S3, на основе ваших данных / файловой системы, вам потребуется программное обеспечение, такое как Eucalyptus, которое реализует набор сервисов, подобных AWS, на вашей частной инфраструктуре.

Конкретный компонент Eucalyptus, который вам понадобится, называется “Walrus”.

(это старая тема, но на случай, если кто-то найдет это полезным)

вы можете представить вашу локальную файловую систему через API S3 с помощью этой программы

https://shvechkov.github.io/gos3rve/

Кратко:

git clone [email protected]:shvechkov/gos3rve.git && cd gos3rve && go build 

./gos3rve  -p 8080 -user_id [email protected] -key_id s3KeyID -key_val s3SecretKey

Вы можете попробовать s3fs для Linux, или возможно wins3fs для Windows (хотя его последнее обновление было очень давно).

Существуют также коммерческие альтернативы, такие как ExpanDrive, но они не соответствуют вашим критериям “открытый исходный код”.

Я бы предостерег вам тщательно протестировать выбранное вами решение. Я использовал как открытые, так и проприетарные подходы к “S3 как файловая система” и никогда не был удовлетворен их надежностью. Попытка соединить то, что по сути является удаленным, высокозатратным ресурсом, с системой программного обеспечения (файловая система), которая ожидает очень локального, низкозатратного ресурса — ну, два этих подхода часто не очень хорошо сочетаются. Я обнаружил, что могу прекрасно копировать файлы в и из S3… а затем через несколько минут, когда я пытаюсь скопировать еще файлы, соединение как-то разрывается. Это происходит в среде с сетью на 50 Мбит/с, где программы, такие как ssh и scp, не имеют никаких проблем. На мой взгляд, попытка рассматривать S3 как файловую систему казалась самым простым и надежным способом… но на практике это часто не срабатывало стабильно, и я тратил больше времени на перезапуск моего соединения с файловой системой S3, чем это было того стоило. Я с тех пор переключился на инструменты командной строки, такие как s3cmd, которые не страдают теми же сбоями подключения. Ваш опыт может отличаться.

Ответ или решение

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

Основные решения

  1. gos3rve
    gos3rve — это инструмент, который позволяет экспонировать вашу локальную файловую систему через API, совместимое с S3. Удобство этой утилиты заключается в ее простоте использования и возможности быстрой интеграции. Для установки необходимо:

    git clone [email protected]:shvechkov/gos3rve.git && cd gos3rve && go build
    
    ./gos3rve -p 8080 -user_id [email protected] -key_id s3KeyID -key_val s3SecretKey
  2. Walrus из Eucalyptus
    Для полноценной имитации сервиса S3 можно использовать систему Eucalyptus и ее компонент Walrus. Эта система предлагает более обширный спектр возможностей, но может быть избыточной для простого проекта, где требуется лишь базовая функциональность S3 API.

  3. s3fs-fuse
    s3fs-fuse позволяет монтировать Amazon S3 в локальную файловую систему через FUSE, что делает его полезным инструментом для интеграции S3 API и локальной файловой системы. Этот подход может быть пригодным, если вам нужно обеспечить надежный доступ к объектному хранилищу через файловую систему.

Немного о качестве и проблемах

Стоит отдельно отметить, что не все решения демонстрируют стабильную производительность в долгосрочной перспективе. Как показывает практика, программы, которые позволяют работать с S3 как с файловой системой, могут сталкиваться с проблемами надежности, особенно если используется сеть с высокой задержкой. Инструменты, которые кажутся простыми и надежными, могут иногда неожиданно разрывать соединение. Для решения таких проблем рекомендую проводить тщательное тестирование до внедрения в рабочую среду. Хорошей альтернативой может быть использование командной строки с инструментами вроде s3cmd, которые более устойчивы к разрывам соединения.

Рекомендации

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

Заключение

Решения, представленные выше, позволяют обеспечить доступ к вашей файловой системе через интерфейс, совместимый с S3 API, с разной степенью сложности и возможностей. Подходите к выбору осознанно, с учетом специфики вашего проекта, особенно если надежность и стабильность являются критически важными факторами.

Оцените материал
Добавить комментарий

Капча загружается...