Как стать автором
Обновить

Комментарии 28

Активно пользуюсь Veeam, добавлю в закладки.
Всем пользователям Veeam плюсик автоматически =)

А про кластер минио будет?

Угу. Интересно было бы почитать, делал ли кто такое в реальности на террабайтах данных.

Насколько помню для erasure coding, есть важный момент — минимум 4 диска.
Даже хитрее: MinIO делит общее количество дисков на сеты от 4 до 16 штук. И каждый кусок данных будет записан только в пределах одного такого сета.
Спасибо что напомнили про этот нюанс, добавлю в статью.
я думал azure blob storage апи есть, а по факту только s3 :(
У minio есть существенный недостаток — он не годится для организации хранилища большого количества объектов. Если у вас, допустим, есть несколько сотен миллионов объектов, то при расположении данных minio на «обычной» ФС вы столкнётесь с существеннными проблемами (потому что внутри он создаёт минимум по 2 inode на объект).
вы столкнётесь с существеннными проблемами

Какими именно? Деградация производительности или что-то другое?

на «обычной» ФС

Что такое обычная ФС?
В лучшем случае деградация, в худшем — невозможность использования и/или потеря данных.

«Обычная» — любая ФС, которая не использует динамическое выделение inode и использует стандартную стратегию выделения. Если вы сделаете, допустим, раздел с ext4 на диске 4ТБ, то скорее всего вы не сможете разместить там 1млрд файлов, а так как minio хранит объекты как отдельные файлы (ещё и не по одному), то не сможете и 200млн.
Поэтому minio хорошо подходит как хранилище для каких-нибудь образов виртуалок и совершенно не подходит для работы в качестве «замены S3» общего назначения.
Обычно, объектные хранилища не используют примитивы файловой системы для хранения индивидуальных объектов. Amazon S3 использует подлежащую БД (Dynamo), Azure/GCP — собственные БД, и Яндекс.Облако использует YDB, ну и нельзя не вспомнить про MongoDB GridFS. Создатели minio решили на этом сэкономить, вполне понятное желание, но один из сценариев использования, который был например очень интересен нам, для minio совершенно недоступен.
Мне кажется это типичная архитектурная ошибка. Если есть задача хранить миллиарды файлов, то странно для этого использовать фс не предназначенную для этого. Minio даёт лишь метод хранения объектов поверх фс, а не серебрянную пулю, которая от и до за нас подумала обо всех аспектах. Так что я тут разработчиков понимаю. Они решают задачу сделать легковесный файловый сервер, а не пытаются изобрести очередную фс или решить за нас использовать нам, условно, xfs или ext.

Если хочется сразу из коробки получить правильный ответ, где за нас уже всё решили и подумали, а пользователю надо только нажать большую красную кнопку «Сделать всё по красоте», для этого уже давно придуманы целые платформы типа ECS, Unity и прочих StorageGrid.
Задачи хранить файлы не было, была задача хранить объекты. Это ключевой терминологический вопрос.
Minio себя с самого начала позиционировала как объектное хранилище, а не «метод хранения объектов поверх ФС» (вероятно вы имели в виду поддержку удалённого доступа поверх ФС, ну тут можно вспомнить про NFS). Если они не в состоянии дифференцировать термины «объектное хранилище» и «файловая система», то жаль что они вводят в заблуждение своих пользователей.

Зашёл к ним на страницу, и их самопозиционирование не только не стало скромнее, теперь там на главной написано что это «Kubernetes Native, High Performance Object Storage». Там ничего не сказано про то что это «сетевая ФС» или «распределённая ФС». Это «объектное хранилище с S3 интерфейсом».

Итого — minio это не объектное хранилище в современном понимании этого слова, это скорее аналог glusterfs, у которого лучше организована часть с erasure coding.
Ну или нужно к каждому слову писать слишком много звёздочек: Высокопроизводительное* распределённое** объектное хранилище***
* — пока ФС справляется с организацией древовидной структуры
** — пока система синхронной репликации не зависнет из-за проблем сети
*** — файловая система с удалённым доступом

Я уже сталкивался с некоторыми «системными интеграторами», которые нам продавали «S3-совместимое хранилище», которое через месяц эксплуатации безбожно тормозило, потому что они не предусмотрели сценарий, что для управления, допустим, временем жизни, в бакете где есть 700млн объектов, нужен подход отличный от «давайте положим всё файлами а потом будем запускать скрипт на Python».
Вот да. Взяли minio. Предполагалось хранить 10-50 тысяч объектов.
В итоге объектов стало 50+ млн и растет. На десяток бакетов.
И все и пипец, сколько там файлов — неизвестно. Листинг? я тя умоляю.
И вопросы в стиле: а что оно теперь в 10 раз медленнее работает, чем раньше?

То есть тот факт что под MySQL, PosgresSQL или не приведи хосподть Oracle надо тюрить ОС и по хорошему подбирать ФС — вас не смущает. А вот minio мы этого не простим, да

Я предполагаю, что даже если настроить ФС так, чтобы в неё влезло нужное количество файлов, то это будет работать чудовищно медленно. Экспериментов не проводил, но эксплуатирую хранилище с 1 млрд объектов и чуть больше 100ТБ полезных (в смысле без учёта репликации) данных.

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

Да не вопрос, у меня претензии, если вы заметили, в первую очередь к позиционированию, а не к функциональности. Я уже писал об этом здесь комментариях, почитайте. Они заявляют что они “Kubernetes Native, High Performance Object Storage”, а по факту это скорее glusterfs с другим API.
Я ничего не пытаюсь натянуть или забить, я в своё время протестировал minio и убедился что для решения моей задачи, для которой подходят другие объектные хранилища он не подходит, следовательно называть его объектным хранилищем можно лишь с некоторыми весьма важными утончениями, которые как минимум на момент проведения мною тестов в документации и аннотации отсутствовали.
Итого — люди сделали одно, а рекламируют как другое. Значит ли это что это плохой продукт? Не знаю, в моём случае значит, а в вашем вероятно нет.


Мне вообще непонятно почему то что я поделился своим отрицательным опытом вызовет такое негодование. Что, у любимого вами продукта не может быть недостатков? Или про то что такой недостаток есть может было узнать заранее из документации? Или если кто-то протестировал продукт и нашёл ограничения должен молчать что ли?
С моей точки зрения ответ на все три вопроса — «нет».


И да, про «один бинарь» — решение, которое сейчас используется у нас и не имеет таких ограничений (разумеется оно имеет другие ограничения) тоже представлено в виде одного статически слинкованного файла, так что аргументация такого рода мне кажется неуместной.

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

Л — логика
А если вы попытаетесь писать на php драйвера и не сможете — php не будет языком программирования?


Они заявляют что они “Kubernetes Native, High Performance Object Storage”

  • Minio разработан как cloud native application? Разработан
  • Работает быстро? Да, быстро
  • Оно работает с S3? Работает
  • Где-нибудь заявлено, что они могут переварить терабайты данных? Нет

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

php не будет языком программирования?

В случае minio я сказал что «он не годится для организации хранилища большого количества объектов», в случае с PHP скажу что он «не подходит для написания драйверов» — всё честно, не больше и не меньше. Думаю человек, плохо знакомый с PHP будет благодарен за совет не писать на нём драйверы, не считаете?

У меня складывается ощущение, что вам кажется, как будто я (несправедливо) поливаю minio фекалиями, потому что он меня где-то подвёл, потому что я был недостаточно сообразителен чтобы им воспользоваться без проверки. Ситуация полностью обратная — я рассматривал его как один из вариантов организации хранилища и убедился в процессе тестирования и аудита архитектуры что он нам не подходит, о чём и не преминул сообщить (выше даже был человек, который тоже столкнулся с такими проблемами).

Работает быстро?

В случае с средним объёмом файлов с одинаковым префиксом — нет (см. issues ниже).

Где-нибудь заявлено, что они могут переварить терабайты данных?

Да: docs.minio.io/docs/minio-server-limits-per-tenant.html
Maximum number of objects per bucket: no-limit

Только не надо съезжать на «вы не понимаете, это другое» =) Попросили указать на лимиты — получите, заявлено что их нет, при этом docs.minio.io не содержит никаких гайдлайнов по настройке ФС или описания этих лимитов.
Зато потом появляются вот такие вот issue: github.com/minio/minio/issues/10733, github.com/minio/minio/issues/10268 и т.д. (и автор не я, если что).

ничего, кстати, так и не поменялось. залили туда 1 Тб файлов веб-сайта, оно даже обьём бакета корректно показать не способно.

А «целые платформы» — вы хотите прибегнуть к аргументу «раз недорого то можно закрыть глаза на все проблемы, а если хотите чтобы проблем не было раскошеливайтесь»? Я предпочту всё-таки недорого и хорошо, а не покупать чудовищные по своей неподдерживаемости «чёрные ящики» от Dell/HP/NetApp, забитые избыточной функциональностью =) Не уверен что эти «целые платформы» в своей конфигурации по умолчанию реально реализуют тот же S3 полностью с нормальной поддержкой lifecycle policy (это вот у всех больное место, начиная от самоделок и заканчивая хвалёным Cloudian HyperStore).

ну вот как раз с lifecycle policy у NetApp StorageGRID очень хорошо. Очень гибко настраиваются политки.

Насколько я знаю, ни один из облачных провайдеров «первого эшелона» не использует NetApp для того чтобы делать своё объектное хранилище.
Я имел в виду object lifecycle management, например PutBucketLifecycleConfiguration.
Не вижу ничего такого в документации на StorageGRID, ни в Operations on buckets, ни в Custom operations on buckets.

Так в итоге какое объектное хранилище вы выбрали? Ванильный hdfs?

MongoDB GridFS

Если не секрет какой кластер и какой объем файлов храните? Какая fs?

Объём не очень большой, "чистый" около 150ТБ, чуть больше миллиарда объектов. Работает поверх XFS.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий