Как мы создали файловое облако на 100 ТБ

Зачем нам понадобилось своё облако

У нас возникла потребность в создании облачного хранилища файлов и документов. Необходимый объём — примерно 5 ТБ с возможностью масштабирования. Мы исследовали несколько систем: Nextcloud, ownCloud, MinIO и Seafile. После детального сравнения выбрали Seafile — open-source платформу для корпоративного хранения файлов.

Почему Seafile?

  1. Хранит версии файлов — можно откатиться к любой предыдущей версии документа, как машина времени для ваших файлов.
  2. Удобный веб-интерфейс — работать с файлами можно прямо из браузера, без установки дополнительных программ.
  3. Десктопные приложения — есть программы для Windows, macOS и Linux, которые синхронизируют файлы автоматически.
  4. Подключение как сетевой диск — облако можно подключить как обычный диск в проводнике, работать с файлами как с локальными.

Как это устроено

Мы подключили Seafile к объектному хранилищу S3 через промежуточную файловую систему JuiceFS. Это позволяет хранить практически неограниченный объём данных, при этом сервер Seafile может быть совсем небольшим — ему не нужны терабайты локального диска.

Рис. 1. Путь файла: от пользователя через Seafile и JuiceFS до облачного хранилища S3

Простыми словами: когда вы загружаете файл через браузер или приложение, он проходит через веб-сервер Seafile, разбивается на блоки, сжимается и отправляется в облачное хранилище S3. При скачивании происходит обратный процесс. Всё это невидимо для пользователя — он просто работает с папками и файлами как обычно.

Стресс-тест: 100 ТБ данных

Для тестирования мы решили проверить, как система справится с объёмом, в 20 раз превышающим наши реальные потребности. Мы ограничили объём хранилища в 100 ТБ и начали заполнять его тестовыми данными.

Основная сложность тестирования — заполнить хранилище тестовыми данными. На загрузку всех данных у нас ушло около двух недель. За это время мы провели более 120 тестов на целостность данных и 6 полных циклов замеров производительности.

Скорость загрузки

Мы измерили скорость загрузки файлов разного размера — от 1 МБ (небольшой документ) до 500 МБ (видеофайл). Средняя скорость через интерфейс Seafile составила 6,5–12 МБ/с, а напрямую в S3 — до 37 МБ/с.

Рис. 2. Скорость загрузки файлов: через Seafile (синий) и напрямую в S3 (зелёный)

Скорость скачивания

Скачивание оказалось значительно быстрее загрузки. На средних файлах (50 МБ) скорость достигала 57 МБ/с — это быстрее, чем скачивание напрямую из S3, благодаря умному кэшированию JuiceFS.

Рис. 3. Скорость скачивания файлов

Параллельная загрузка

Когда несколько пользователей загружают файлы одновременно, общая пропускная способность растёт. Оптимальный результат — при 3 одновременных загрузках: скорость увеличивается в 2,5 раза.

Рис. 4. Влияние количества одновременных загрузок на общую скорость

Надёжность хранения

Самый важный вопрос: не потеряются ли и не повредятся ли данные? Мы загрузили 120 файлов разного размера, затем скачали их обратно и сравнили контрольные суммы (цифровые отпечатки файлов). Результат —100% совпадение. Ни один файл не был повреждён.

Сколько времени нужно на заполнение

Рис. 5. Оценка времени загрузки 5 ТБ разными способами

Итоговые показатели

Показатель

Результат

Загрузка (средняя)

6,5 – 12 МБ/с

Скачивание (средняя)

19 – 57 МБ/с

Латентность (TTFB)

2 мс (после прогрева)

Целостность данных

120/120 = 100%

Параллельный оптимум

3 потока (×2,5 ускорение)

Максимальная ёмкость

100 ТБ (тестировано)

Время загрузки 5 ТБ

3,5 дня (3 потока)

Выводы

Мы успешно развернули корпоративное облачное хранилище на базе Seafile, способное работать с объёмами до 100 ТБ. Система показала стабильную производительность, абсолютную целостность данных и удобство использования.

Для типичных задач — хранение документов, совместная работа с файлами, резервное копирование — скорость загрузки 6–17 МБ/с и скачивания до 57 МБ/с более чем достаточна. Это позволяет загрузить, например, гигабайтный архив за 1–2 минуты, а скачать — за 20 секунд.

Если вам нужно создать облачное хранилище большого объёма с нестандартными требованиями — обращайтесь к нам. Мы поможем подобрать оптимальное решение, развернуть и протестировать его.