В текущих реалиях со сложностями в покупке новых массивов мне вспомнилась одна история, которая произошла пять лет назад. Она почти забылась, но теперь кажется вполне себе актуальной. Как-то раз к нам в компанию пришел один заказчик, который хотел СХД.  Готовую СХД, попадающую в его бюджет, приобрести было нереально, а надо было не просто дешево и сердито, а дешево и нормально. Поэтому решили действовать креативно. Благо, у заказчика была некая поэтапность в развитии, и мы располагали достаточным количеством времени, чтобы постепенно наращивать объем хранилища.

Первый этап

Начальный объем удалось реализовать тогда на «старых и добрых» массивах вендора N. Важно, что заказчику требовалось место под хранение множества папок, внутри которых лежали бы файлы в видеоформате (компания работает в медиа сфере). Таким образом, нужно было построить «холодное» хранилище, не требующее особой производительности. 

Далее мы спроектировали решение, базирующееся на Open Source софте GlusterFS версии 3.8, а также определились с оборудованием, в которое мы «засунули» много дисков, доступных по цене. Решение можно было горизонтально масштабировать, а также использовать еще под чьи-нибудь нужды.

Мы благополучно реализовали этот вариант и были уверены, что решение будет работать нормально. Однако, когда мы с заказчиком его протестировали, выяснилось, что открытие каждой папки занимает не менее 20 сек. А если два пользователя одновременно открывают одну и ту же папку, это время удваивается. 

Медленно и печально

Мы долго не могли понять, с чем была связана такая низкая скорость. Ведь на предварительных тестах всё было в порядке! Когда начали копать глубже, поняли, что проблема не была связана с работой кластера. И проявлялась даже локально — на одной ноде.    

При этом с дисками всё было ОК — они были загружены не полностью, и мы никак не могли упереться в их предельную производительность. Засада ожидала нас там, где мы могли ожидать ее меньше всего — сама файловая система XFS очень плохо работает с большим числом файлов.

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

Тут мы уткнулись в другое ограничение — Gluster тогда не позволял использовать никакую другую файловую систему, кроме XFS. А у нас уже готовый проект на руках. Всё пропало!

Вторая попытка

Пришлось начинать всё сначала, а также привлекать экспертов из соседнего подразделения. Для x86 сервера выбор файловых систем невелик: Linux и решения на его базе. Неужели, кроме нас, никто на рынке не сталкивался с подобной задачей?

Нашли одно недорогое коммерческое решение и стали искать более подробную информацию о нем на различных форумах и в ИТ-сообществах. Речь шла о файловой системе ZFS, созданной для ОС Solaris. 

Сроки проекта уже конкретно поджимали, и времени на тесты практически не было. Выяснили, что ZFS уже портировали в Linux, и решили параллельно проверить этот вариант и какой-нибудь из форков Solaris. 

На Линуксе ничего хорошего не вышло — ровно то же самое, что и было. На форке «Солярки» с драйверами под виртуализацию oVirt после нескольких попыток система заработала. Провели серию повторных испытаний на наших синтетических тестах — нормально работает, нет никаких нареканий. Файлы открываются мгновенно.

Общая архитектура решения SDS на основе ZFS
Общая архитектура решения SDS на основе ZFS

Проект, конечно, пришлось переписывать. Бэкэнд стал блочным на iSCSI, резервирование на уровне серверов удалось сохранить. Основная задача тем самым была решена — получили нужный объем для системы хранения требуемой производительности, используя при этом вычислительные ресурсы серверов для виртуализации. 

На систему разработана подробная эксплуатационная документация, которой пользуется служба эксплуатации для выполнения регламентных процедур и для восстановления после типовых отказов.

Заказчик оказался доволен ☺ Созданное нами хранилище работает уже много лет, и работает корректно, без потери доступности и просадок производительности. При этом, емкость системы была увеличена в полтора раза. Если посчитать экономию — то по сравнению с СХД на одном известном производителе, мы выиграли 40 %. 

История хоть и древняя, но не теряющая своей актуальности, особенно в новых условиях, когда перед компаниями стоит задача не столько в оптимизации бюджета на ИТ, а в поиске хоть какого-нибудь доступного и рабочего решения. Таким образом, применяя ИТ-смекалку, можно выйти практически из любой, даже, казалось бы, безвыходной ситуации. Делали ли вы что-то подобное? Расскажите в комментариях. 

Комментарии (11)


  1. Speccyfan
    22.07.2022 11:00

    RAID6 на серверах аппаратный? И сколько дисков в таком рейд?


    1. select26
      22.07.2022 12:23

      ZFS же. Ему рэйд не нужен, и даже противопоказан.


      1. Speccyfan
        22.07.2022 12:36

        Меня с толку сбила картинка, где сервер, в нем два массива RAID6, думал собираются сначала тут, а потом призентуются по iSCSI и уже с этих блочных устройств собирается ZFS.


    1. JetHabr Автор
      22.07.2022 17:39

      Да, на каждом сервере по 2 RG (10+2).


  1. amarao
    22.07.2022 11:42

    А почему в списке вариантов нет cephfs? Из которобки отличная fault tolerance и наработанные практики, плюс мощное кеширование метаданных, плюс точно хорошо работающее масштабирование? Я понимаю, что сам cephfs сильно свежее, чем ceph, но даже не рассматривать его в списке вариантов - странно.


    1. AlexGluck
      22.07.2022 12:59
      +1

      Там про 2015 год говорят, 7 лет как никак прошло.


    1. JetHabr Автор
      22.07.2022 17:39

      Решение на ceph коллеги-проектировщики на тот момент забраковали по причине сильной деградации производительности при выходе из строя одного узла.


  1. select26
    22.07.2022 12:26

    Сейчас ZFS хорошо работает и по Linux. Портированы много новых фич.

    Хотя у меня есть похожий проект, в котором в 2011 году сделали "временное" решение на FreeBSD+ZFS. Объёмы вырос уже вдвое, но все ещё работает. На том же само оборудовании. ????

    Прелесть "промышленных" OSS решений.


    1. Naves
      22.07.2022 16:12

      Как сделана репликация между серверами?


  1. oller
    22.07.2022 22:02
    +1

    Очень бы хотелось подробности реализации второй схемы с ZFS ( хотябы общую схему детально)

    GLUSTER не дружит с vmware даже в новых версиях, нет заявленной поддержки, как я понял, более того нет ответа в тредах с проблемами с Vmware


  1. MaxLK
    25.07.2022 08:56

    Но это же про холодный бэкап, а не про продуктив с которым почему то сравнивают цену. Каково время ребилда при замене диска? Деградация производительности при ребилде? А если несколько дисков на одном и/или разных холстах? Возможность и время замены всех дисков на новые большего объема? Ведь найти семилетний давности становится сложнее. Что с предсказанием поломки дисков? Руками на каждом хосте?

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