В текущих реалиях со сложностями в покупке новых массивов мне вспомнилась одна история, которая произошла пять лет назад. Она почти забылась, но теперь кажется вполне себе актуальной. Как-то раз к нам в компанию пришел один заказчик, который хотел СХД. Готовую СХД, попадающую в его бюджет, приобрести было нереально, а надо было не просто дешево и сердито, а дешево и нормально. Поэтому решили действовать креативно. Благо, у заказчика была некая поэтапность в развитии, и мы располагали достаточным количеством времени, чтобы постепенно наращивать объем хранилища.
Первый этап
Начальный объем удалось реализовать тогда на «старых и добрых» массивах вендора N. Важно, что заказчику требовалось место под хранение множества папок, внутри которых лежали бы файлы в видеоформате (компания работает в медиа сфере). Таким образом, нужно было построить «холодное» хранилище, не требующее особой производительности.
Далее мы спроектировали решение, базирующееся на Open Source софте GlusterFS версии 3.8, а также определились с оборудованием, в которое мы «засунули» много дисков, доступных по цене. Решение можно было горизонтально масштабировать, а также использовать еще под чьи-нибудь нужды.
Мы благополучно реализовали этот вариант и были уверены, что решение будет работать нормально. Однако, когда мы с заказчиком его протестировали, выяснилось, что открытие каждой папки занимает не менее 20 сек. А если два пользователя одновременно открывают одну и ту же папку, это время удваивается.
Медленно и печально
Мы долго не могли понять, с чем была связана такая низкая скорость. Ведь на предварительных тестах всё было в порядке! Когда начали копать глубже, поняли, что проблема не была связана с работой кластера. И проявлялась даже локально — на одной ноде.
При этом с дисками всё было ОК — они были загружены не полностью, и мы никак не могли упереться в их предельную производительность. Засада ожидала нас там, где мы могли ожидать ее меньше всего — сама файловая система XFS очень плохо работает с большим числом файлов.
Провели синтетический тест: создали скриптом папку, в которой хранилось 10 тыс. папок, и в каждой из этих папок — по миллиону небольших файлов. Всё — система сразу же легла, даже просмотр списка 10 тыс. папок был ну неприлично медленным.
Тут мы уткнулись в другое ограничение — Gluster тогда не позволял использовать никакую другую файловую систему, кроме XFS. А у нас уже готовый проект на руках. Всё пропало!
Вторая попытка
Пришлось начинать всё сначала, а также привлекать экспертов из соседнего подразделения. Для x86 сервера выбор файловых систем невелик: Linux и решения на его базе. Неужели, кроме нас, никто на рынке не сталкивался с подобной задачей?
Нашли одно недорогое коммерческое решение и стали искать более подробную информацию о нем на различных форумах и в ИТ-сообществах. Речь шла о файловой системе ZFS, созданной для ОС Solaris.
Сроки проекта уже конкретно поджимали, и времени на тесты практически не было. Выяснили, что ZFS уже портировали в Linux, и решили параллельно проверить этот вариант и какой-нибудь из форков Solaris.
На Линуксе ничего хорошего не вышло — ровно то же самое, что и было. На форке «Солярки» с драйверами под виртуализацию oVirt после нескольких попыток система заработала. Провели серию повторных испытаний на наших синтетических тестах — нормально работает, нет никаких нареканий. Файлы открываются мгновенно.
Проект, конечно, пришлось переписывать. Бэкэнд стал блочным на iSCSI, резервирование на уровне серверов удалось сохранить. Основная задача тем самым была решена — получили нужный объем для системы хранения требуемой производительности, используя при этом вычислительные ресурсы серверов для виртуализации.
На систему разработана подробная эксплуатационная документация, которой пользуется служба эксплуатации для выполнения регламентных процедур и для восстановления после типовых отказов.
Заказчик оказался доволен ☺ Созданное нами хранилище работает уже много лет, и работает корректно, без потери доступности и просадок производительности. При этом, емкость системы была увеличена в полтора раза. Если посчитать экономию — то по сравнению с СХД на одном известном производителе, мы выиграли 40 %.
История хоть и древняя, но не теряющая своей актуальности, особенно в новых условиях, когда перед компаниями стоит задача не столько в оптимизации бюджета на ИТ, а в поиске хоть какого-нибудь доступного и рабочего решения. Таким образом, применяя ИТ-смекалку, можно выйти практически из любой, даже, казалось бы, безвыходной ситуации. Делали ли вы что-то подобное? Расскажите в комментариях.
Комментарии (11)
amarao
22.07.2022 11:42А почему в списке вариантов нет cephfs? Из которобки отличная fault tolerance и наработанные практики, плюс мощное кеширование метаданных, плюс точно хорошо работающее масштабирование? Я понимаю, что сам cephfs сильно свежее, чем ceph, но даже не рассматривать его в списке вариантов - странно.
JetHabr Автор
22.07.2022 17:39Решение на ceph коллеги-проектировщики на тот момент забраковали по причине сильной деградации производительности при выходе из строя одного узла.
select26
22.07.2022 12:26Сейчас ZFS хорошо работает и по Linux. Портированы много новых фич.
Хотя у меня есть похожий проект, в котором в 2011 году сделали "временное" решение на FreeBSD+ZFS. Объёмы вырос уже вдвое, но все ещё работает. На том же само оборудовании. ????
Прелесть "промышленных" OSS решений.
oller
22.07.2022 22:02+1Очень бы хотелось подробности реализации второй схемы с ZFS ( хотябы общую схему детально)
GLUSTER не дружит с vmware даже в новых версиях, нет заявленной поддержки, как я понял, более того нет ответа в тредах с проблемами с Vmware
MaxLK
25.07.2022 08:56Но это же про холодный бэкап, а не про продуктив с которым почему то сравнивают цену. Каково время ребилда при замене диска? Деградация производительности при ребилде? А если несколько дисков на одном и/или разных холстах? Возможность и время замены всех дисков на новые большего объема? Ведь найти семилетний давности становится сложнее. Что с предсказанием поломки дисков? Руками на каждом хосте?
Вообще сделать и продать самопал - всегда история успеха с громадной экономией. Тот кто так сделал и исчез в тумане - успешный рыцарь на белом коне. Намного интереснее услышать эту историю от людей которые это обслуживают и живут с этим. Но они почему-то не пишут как им хорошо от того что кто-то отчитался об экономии на закупке...
Speccyfan
RAID6 на серверах аппаратный? И сколько дисков в таком рейд?
select26
ZFS же. Ему рэйд не нужен, и даже противопоказан.
Speccyfan
Меня с толку сбила картинка, где сервер, в нем два массива RAID6, думал собираются сначала тут, а потом призентуются по iSCSI и уже с этих блочных устройств собирается ZFS.
JetHabr Автор
Да, на каждом сервере по 2 RG (10+2).