FlexGroups
В конце июня стала доступна новая версия Data ONTAP. 9. Правда теперь Data ONTAP стала называться просто ONTAP. Есть три варианта ONTAP. ONTAP, ONTAP Cloud и ONTAP Select. Про первые два варианта все понятно, а ONTAP Select это продолжение идеи Data ONTAP Edge. Хорошая статья про Select есть на Хабре.
Про нововведения в основной версии ONTAP тоже написано уже немало. Статья на английском.
Про ONTAP 9 рассказывали 22 июня в Москве. На техническом семинаре по обновлениям продуктов — NetApp TechUpdate.
Но есть одна интересная функция в новой ONTAP, про которую почти никто не говорит :) Это — FlexGroups.
Далее перевод (с небольшими сокращениями) поста Justin Parisi, который является Technical Marketing Engineer по NAS протоколам и name services в NetApp.
…
Объемы данных растут
Времена, когда 100TB для файловой системы в одном томе это достаточно, прошли. Размеры файлов растут, объемы активно обрабатываемых данных растут. К примеру, представьте те объемы данных, которые приходится хранить сервисам по работе с медиа-данными. Или компаниями, которые работает с GPS данными. Или с аналитикой по разведке месторождений нефти и газа. Обычно таким компаниям приходится работать с огромными массивами данных и миллиардами файлов.
Для хранения таких данных лучше всего подходят горизонтально масштабируемые NAS хранилища, для которых важно иметь возможность легко и просто расширять имеющуюся конфигурацию.
Некоторое время системы хранения схожие с ONTAP использовали единственный контейнер для хранения файловых данных — Flexible Volume (FlexVol).
FlexVol прекрасны, но…
Для большинства случаев FlexVol идеальны. Они позволяют хранить достаточный объем данных (до 100TB) и большое количество файлов (до 2 миллиардов). В случае с файловым доступом вы можете решить почти все задачи, используя FlexVol. Но у вас могут начаться проблемы, если у вас будет расти количество операций с метаданными (прим. переводчика — часто для решения этих проблем мы используем кэширование метаданных на FlashCache или FlashPool). Операции с матаданными выполняются последовательно на уровне FlexVol и не могут использовать все доступные ядра и потоки CPU. К тому же FlexVol привязан к конкретному агрегату и контроллеру, соответственно и работа с файловой системой будет ограничена производительностью агрегата и контроллера. Если у вас кластер из 10 нод, каждая с несколькими агрегатами, то у вас скорее всего не выйдет получить максимально доступную по ресурсам производительность.
Вот здесь и пригодятся FlexGroups
FlexGroups разработаны для решения множества проблем масштабных файловых нагрузок:
- Объем хранимых данных — до 20PB
- Большое кол-во файлов — до 400 миллиардов файлов
- Производительность — распараллеливание файловых операций по CPU, нодам, агрегатам и FlexVol
- Автоматическая балансировка нагрузки — использование всех доступных ресурсов для набора данных
- Отказоустойчивость — исправление ошибок метаданных в реальном времени без остановки доступа
Теперь с FlexGroups файловые нагрузки могут утилизировать все доступные в кластере ресурсы. Даже если вы используете однонодовый кластер, FlexGroups могут балансировать нагрузку между несколькими FlexVol и агрегатами.
Как работают FlexGroups?
FlexGroups используют прекрасную концепцию FlexVol и улучшают её, соединяя множество FlexVol в единое пространство имен (namespace), которое для клиентов и администраторов выглядит как единый FlexVol.
Грубо FlexGroups можно изобразить вот так:

Как это будет выглядеть для NAS клиента:

Файлы пишутся в конкретные FlexVol, составляющие FlexGroup. Файлы не разбиваются на части. Степень параллелизации, которую можно получить с FlexGroup, зависит от количества FlexVol из которых она будет состоять. В данный момент максимальное количество FlexVol для FlexGroup — 200. Максимальный размер тома 100TB и максимальное количество файлов 2 миллиарда. Так мы и получаем наши “20PB, 400 миллиардов файлов”. Имейте в виду, что это протестированные на данный момент лимиты. Теоретически эти значения могут сильно вырасти.
Когда клиент создает файл в FlexGroup, ONTAP решает, какой из томов лучше всего подходит для записи файла. Решение основывается на нескольких критериях, например, свободное место, throughput, загруженность ноды, к какому тому обращались последний раз и т. д. Все происходит без вмешательства клиента. Идея в том, чтобы члены FlexGroup были максимально сбалансированы и этом все не вредило предсказуемости производительности.
Запрос на создание файла может прийти на любую ноду кластера. Если ONTAP решает сохранить файл на другой ноде, создается жёсткая ссылка и запрос передаётся соответствующему тому на другой ноде. Операции чтения и записи для уже созданного файла происходят также как и в обычном FlexVol; система сообщит клиенту расположение файла и укажет на соответсвующий FlexVol.
Чем это лучше?
Когда файловые операции могут быть раскиданы между множеством FlexVol мы не сталкиваемся с проблемой последовательных операций с метаданными в системе. Вместо этого мы распределяем нагрузку по множеству файловых систем (FlexVols) соединенных вместе (FlexGroups). И в отличии от Infinite Volumes здесь нет единого тома для хранения метаданных. Каждый том в FlexGroup может принимать участие в работе с метаданными.
Таким образом, клиент может иметь доступ через постоянную точку монтирования к огромному пространству для хранения данных, без необходимости перепрыгивать с одной файловой системы в другую.
То, что для параллелизации операций в большой инфраструктуре лучше всего создавать несколько FlexVol, давно перестало быть секретом. Но всё еще существовало ограничение в 100ТБ на том и трудности с управлением точками монтирования при переносе томов и т. д. Планирование оптимального расположения томов для получения максимальной производительности — отдельная головная боль для администраторов.
Теперь, с появлением FlexGroups, все эти проблемы будут решены за вас. И вам не надо заниматься планированием оптимального размещения данных.
Каков потенциальный прирост производительности?
По предварительным тестам FlexGroup против одного FlexVol мы увидели прирост производительности в 6 раз. И это с обычными SAS HDD. Конфигурация была следующей:
- Одна нода FAS8080
- SAS HDD
- 16 FlexVol членов FlexGroups
- 2 агрегата
- 8 томов на агрегат
В качестве тестовый нагрузки была работа с исходными кодом в Git. По графикам ниже можно заметить, что самый большой прирост получился на операциях checkout и clone.

Если увеличить количество нод, агрегатов и томов в FlexGroup, то результаты будут еще лучше. А если подумать о добавлении AFF (All-flash FAS), то время выполнения теста сократится еще больше.
Snapshots
В первом релизе FlexGroup у нас реализована функциональность снэпшотов. Они работают как обычные снэпшоты в ONTAP — на уровне FlexVol.
Но так как FlexGroups это коллекция нескольких FlexVol, то мы хотим быть уверенными, что все снэпшоты создаются в одно и то же время и сохраняется консистентность файловой системы. Поэтому создание снэпшотов FlexGroup координируется ONTAP. Если не получается создать снэпшотов какого-то из томов, то весь снэпшот FlexGroup отменяется и ONTAP подчищает снэпшоты созданные в других томах.
Автоматическая инкрементальная отказоустойчивость
В FlexGroup включен новый механизм по исправлению ошибок в метаданных. Этот механизм сканирует метаданные и в случае нахождения неконсистентности при обращении клиента, исправляет ошибку, в реальном времени. Без остановки доступа к данным. Вся FlexGroup остаётся доступной и клиенты даже не замечают, что происходит исправление метаданных. Никто бы и не знал об этом, если бы не надоедливые сообщения в EMS-логе для администраторов. Мне кажется, что это немного недооценённая возможность FlexGroups.
Как начать пользоваться FlexGroups?
Сейчас FlexGroups доступны в ONTAP 9.0RC1 (и RC2 — примечание переводчика)
Первый релиз поддерживает следующие функции:
- только NFSv3 (позже будет NFSv4 и CIFS — примечание переводчика)
- непродуктивные нагрузки (подразумевается, что техподдержка не будет решать вопросы с FlexGroups — примечание переводчика)
- снэпшоты
- перемещение томов-членов FlexGroup (VolMove)
- 20PB, 400 миллиардов файлов
Для получения лицензии на FlexGroups или дополнительной информации можно писать на [email protected]