Lustre File System

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:00, 21 октября 2018.
Lustre
Другие
Операционная система Linux
Веб-сайт lustre.org

Lustre — распределённая файловая система массового параллелизма, используемая обычно для крупномасштабных кластерных вычислений. Название Lustre является контаминацией, образованной словами Linux и cluster. Реализованный под лицензией GNU GPL, проект предоставляет высокопроизводительную файловую систему для кластеров с десятками тысяч узлов сети и петабайтными хранилищами информации.

История

Истоки

Архитектура файловой системы Lustre начиналась как исследовательский проект в 1999 году Питер Дж. Браам, кто был сотрудником университета Карнеги-Меллона в то время. В 2001 году Браам основал собственную компанию Cluster File Systems,начиная с работы над InterMezzo file system в проекте Coda в CMU. Lustre был разработан в рамках проекта ускоренной стратегической вычислительной инициативы Path Forward, финансируемого Министерством энергетики Соединенных Штатов, который включал Hewlett-Packard и Intel Corporation. в сентябре 2007 года Sun Microsystems приобрела активы Cluster File Systems Inc. включая свою интеллектуальную собственность. Sun выходит на рынок благодаря высокой производительности вычислительной техники, предложений, с целью вывести технологии Lustre для файловой системы zfs от Sun и операционной системы Solaris. В ноябре 2008 года Браам покинул Sun Microsystems, а Эрик Бартон и Андреас Дилгер взяли проект под свой контроль. В 2010 году Корпорация Oracle, путем приобретения Sun, начала управлять и выпускать Lustre.

Реорганизация

В декабре 2010 года Oracle объявила, что прекратит выпуск Lustre 2.х развитие и разработка Lustre 1.8 создает неопределенность вокруг будущего развития файловой системы.После этого объявления несколько новых организаций внесло предложение о помощи, чтобы обеспечить поддержку и развитие открытой модели развития сообщества, в том числе Whamcloud, Open Scalable File Systems, Inc. (OpenSFS), EUROPEAN Open File Systems (EOFS) и другие. К концу 2010 года большинство разработчиков Lustre покинули Oracle. Браам и несколько их сообщников вступил в аппаратно-ориентированные Xyratex, когда она приобрела активы ClusterStor, в то время как Бартон, Дилджер, и другие образуют Whamcloud, где они продолжали работать на Lustre

В августе 2011 года, OpenSFS заключил контракт на разработку функций Lustre и развития Whamcloud. Этот контракт предполагал разазвитие функций, включая модернизацию Single Server Metadata Performance для увеличения производительности, что позволяет Lustre, чтобы лучше использовать преимущества многоядерных метаданных сервера; онлайн Lustre Lustre Distributed Filesystem Checking (LFSCK), что позволяет проверять состояние распределенной файловой системы между серверами данных и метаданных во время подключения и использования файловой системы и Distributed Namespace (DNE), ранее кClustered Metadata (CMD), что позволяет метаданным Lustre быть распределеным по нескольким серверам. Разработки продолжались также на основе ZFS хранилище внутренних объектов в ЛLawrence Livermore National Laboratory эти функции были в Lustre от 2.2 до 2.4 версии. В ноябре 2011 года Whamcloud был заключен отдельный контракт на поддержание Lustre 2.x , чтобы гарантировать, что код Lustre получит достаточное тестирование и исправление ошибок, пока разрабатываются новые функции.

Перепродажа

В июле 2012 Whamcloud был приобретен Intel, после того, как Whamcloud выиграл контракт FASTFORWARD DOE, чтобы продлить Блеск для вычислительных систем exascale в 2018 году. OpenSFS затем перешли на Intel контракты на разработку Lustre.

В Феврале 2013 года, Xyratex Ltd, объявила, что приобрела оригинальную торговую марку Lustre, логотип, веб-сайт и связанную интеллектуальную собственность от Oracle. В июне 2013 года компания Intel приступила к расширению использования Lustre, помимо традиционных высокопроизводительных вычислений, таких как в среде hadoop. За 2013 год в целом, OpenSFS объявила о запросе предложений, охватывающих разработку функций Lustre, инструменты параллельной файловой системы, решение технического долга Lustre и инкубаторы параллельной файловой системы. OpenSFS также создал портал Lustre Community, технический сайт, который обеспечивает сбор информации и документации в одной области для справки и руководства для поддержки Lustre Open Source сообщества. 8 апреля 2014 года Кен Клэффи объявил, что xyratex / Seagate жертвует lustre.org домен возвращается в сообщество пользователей и был завершен в марте 2015 года.[Источник 1]

Архитектура

Файловая система Lustre содержит три основных функциональных модуля:

  • Один сервер метаданных (metadata server — MDS) соединенный с одной целью метаданных (metadata target — MDT) в файловой системе Lustre, который хранит метаданные о пространстве имен, например имена файлов, каталогов, права доступа, а также карту размещения файлов. Данные MDT хранятся в единой локальной дисковой файловой системе.
  • Один или несколько серверов хранения объектов (object storage server — OSS), хранящих данные файлов из одного или нескольких целей хранения объектов (object storage targets — OST). В зависимости от оборудования сервера OSS обычно обслуживает от двух до восьми OSs, а каждая OST управляет одной локальной дисковой файловой системой. Ёмкость файловой системы Lustre определяется суммой ёмкостей, предоставляемых OST.
  • Клиент(ы), обращающиеся и использующие данные. Lustre предоставляет всем клиентам унифицированное пространство имен для всех файлов и данных в файловой системе, используя стандартную семантику POSIX, а также обеспечивает параллельный когерентный доступ по записи и чтению к файлам в файловой системе.

Компоненты MDT, OST, а также клиенты могут находиться на одном и том же узле, но при инсталляции их обычно помещают на отдельные узлы, взаимодействующие по сети. Уровень сети Lustre (Lustre Network — LNET) поддерживает несколько коммуникационных платформ, включая Infiniband, TCP/IP через Ethernet и другие сети, Myrinet, Quadrics, а также проприетарные сетевые технологии. Lustre также использует преимущества удаленного прямого доступа к памяти, если это возможно, для увеличения пропускной способности и снижения доли использования ЦП.

Хранилище

Хранилище, используемое для дублирующих файловых систем MDT и OST, делится на части и может быть организовано через управление логическими томами и/или RAID, как правило, форматированными в файловой системе ext4. Сервера Lustre OSS и MDS считывают, записывают и изменяют данные в формате, введённым этими файловыми системами.

OST является выделенной файловой системой, экспортирующей интерфейс в байтовые регионы объектов для операций чтения/записи. MDT является выделенной файловой системой для контроля доступа к файлам и сообщений киентам о том, какие объект(ы) входят в структуру файла. В настоящее время MDT и OST используют для хранения данных улучшенную версию ext4, называемую ldiskfs. В 2008 Sun начала проект портирования Lustre в Sun ZFS/DMU для хранения внутренних данных, продолжающийся как проект с открытым кодом.

При доступе клиента к файлу поиск имени файла выполняется в MDS. В результате файл либо создается от имени клиента, либо клиенту возвращается местоположение существующего файла. При операциях чтения или записи клиент интерпретирует местоположение на уровне логического тома объекта, отображающего смещение и размер в один или несколько объектов, каждый из которых расположен на отдельной OST. Затем клиент блокирует диапазон файлов для работы и исполняет одну или несколько операций параллельного чтения или записи непосредственно в OST. При таком подходе устраняются узкие места взаимодействия клиента с OST, так что общая пропускная способность, доступная клиенту для чтения и записи, масштабируется почти линейно с ростом количества OST в файловой системе.

Клиенты не модифицируют объекты файловой системы OST напрямую, делегируя эту задачу OSS. Этот подход обеспечивает масштабируемость для крупномасштабных кластеров и суперкомпьютеров, а также улучшает безопасность и надежность. В противоположность этому блочные разделяемые файловые системы, например Global File System и OCFS должны поддерживать прямой доступ к хранилищу для всех клиентов в файловой системе, увеличивая риск повреждения файловой системы со стороны неправильных клиентов.[Источник 2]

Особенности

Объекты данных и разделение данных

В традиционных дисковых файловых системах UNIX, структура данных inode содержит базовую информацию о каждом файле, например о том, где хранятся данные, содержащиеся в файле. Файловая система Lustre также использует inode, но inode на MDT указывает на один или несколько объектов OST, ассоциированных с файлом, а не на блоки данных. Эти объекты реализуются как файлы OST. При открытии файла клиентом операция открытия передает множество указателей объекта и их расположение из MDS клиенту, после чего клиент может непосредственно взаимодействовать с узлом OSS, хранящим объект, что позволяет клиенту выполнять ввод-вывод в файл без последующего взаимодействия с MDS.

Если с MDT inode ассоциирован только один объект OST, этот объект содержит все данные файла Lustre. Если с файлом ассоциировано более одного объекта, данные файла «разделены» среди объектов подобно RAID 0. Разделение файла между несколькими объектами дает существенные преимущества в производительности. При использовании разделения, максимальный размер файла не ограничен размерами одной цели. Ёмкость и совокупная пропускная способность ввода-вывода масштабируется с ростом числа OST, по которым разделен файл. Кроме того, поскольку блокировка каждого объекта для каждой OST управляется независимо, добавление частей (OST) масштабирует возможности блокировки ввода-вывода в файл пропорционально. Каждый файл в файловой системе может иметь различное размещение при разделении, так что ёмкость и производительность можно оптимально настроить для каждого файла.

Блокировки

Lustre использует менеджера распределённой блокировки в стиле VMS для защиты целостности данных и метаданных каждого файла. Доступ и модификация файла Lustre полностью когерентна для всех клиентов. Блокировки метаданных управляются MDT, хранящим inode файла с использованием 128-битного идентификатора Lustre File Identifier (FID, состоящего из номера последовательности и идентификатора объекта), используемого как имя ресурса. Блокировки метаданных делятся на несколько частей, защищающих процесс обнаружения файла (владелец и группа файла, разрешения и режим, а также ACL, состояние inode (размер каталога, содержимое каталога, количество ссылок, временные метки), а также размещение (разделение файла). Клиент может получить несколько частей блокировки метаданных для одного inode одним запросом RPC, но в настоящее время предоставляются только блокировки для чтения inode. MDS управляет всеми модификациями inode, чтобы избежать конкуренции за ресурс и сейчас возможен только один узел, получающий блокировки на запись inode.

Блокировки данных файла управляются OST, по которым разделен каждый объект файла, с использованием байтовых блокировок экстентов. Клиенты могут получить перекрывающиеся блокировки чтения экстента для части или всего файла, что позволяет существовать нескольким параллельным читателям для одного файла, а также неперекрывающиеся блокировки записи экстента для областей файла. Это позволяет многим клиентам Lustre получить параллельный доступ к файлу для чтения и записи, избегая проблем при вводе-выводе файла. На практике клиенты Linux управляют своим кэшем данных в единицах страниц, поэтому они будут запрашивать блокировки, всегда являющиеся целым, кратным размеру страницы (4096 байт в большинстве клиентов). При запросе клиентом блокировки экстента OST может предоставить блокировку на больший экстент, чтобы сократить количество запросов блокировки, выполняемых клиентом. Реальный размер предоставленной блокировки зависит от нескольких факторов, включая количество уже выполненных блокировок, наличие конфликтующих блокировок на запись, и числа запросов на блокировку. Установленная блокировка никогда не будет меньше требуемого экстента. Блокировки экстента OST используют Lustre FID в качестве имени ресурса для блокировки. Поскольку число серверов блокировки экстента растет с увеличением числа OST в файловой системе, это также увеличивает совокупную производительность блокировки файловой системы и одного файла, если он разделен по нескольким OST.

Сетевые возможности

В кластере с файловой системой Lustre, системная сеть, соединяющая серверы и клиентов, реализуется посредством Lustre Networking (LNET), предоставляющей коммуникационную инфраструктуру, требуемую файловой системе Lustre. Дисковое хранилище соединяется с MDS и OSS традиционными технологиями сетей хранения данных.

LNET поддерживает много общеизвестных типов сетей, например InfiniBand и IP, позволяя осуществить одновременный доступ для сетей разных типов с маршрутизацией между ними. Удаленный прямой доступ к памяти разрешен при поддержке его нижележащей сетью, такой как Quadrics Elan, Myrinet и InfiniBand. Возможности высокой доступности и восстановления позволяют прозрачное восстановление при использовании отказоустойчивых серверов.

LNET предоставляет пропускную способность через сети Ethernet (GigE) свыше 100 MB/s, пропускную способность до 3 GB/s через каналы InfiniBand QDR, пропускную способность свыше 1 GB/s через интерфейсы 10GigE.

Высокая доступность

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

Lustre MDS конфигурируются как активная/пассивная пара, а OSS обычно развертываются в конфигурации активный/активный, обеспечивающей надежность без существенной перегрузки. Часто резервный MDS является активным MDS для другой файловой системы Lustre, поэтому в кластере нет простаивающих узлов.

Модуль HSM (иерархического управления хранением данных)

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

HSM включает в себя некоторые дополнительные компоненты Lustre:

  • Координатор: получает архивные запросы и отправляет их агентам.
  • Агент: запускает инструмент копирования для копирования данных из первичного в архив и наоборот.
  • Инструмент копирования: обрабатывает движения данных и обновления метаданных.[Источник 3]

Установка

При обычной установке Lustre на клиенте Linux модуль драйвера файловой системы Lustre загружается в ядро и файловая система монтируется как и любая другая локальная или сетевая файловая система. Приложения клиента видят одну унифицированную файловую систему, даже если она может быть составлена из дестяков тысяч индивидуальных серверов и файловых систем MDT/OST.

На некоторых процессорах массового параллелизма (MPP) вычислительные процессоры могут получить доступ к файловой системе Lustre путём перенаправления их запросов ввода-вывода на выделенный узел ввода-вывода, сконфигурированный как клиент Lustre. Этот подход используется в Blue Gene, установленном в Ливерморской национальной лаборатории.

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

Библиотека liblustre позволяет непосредственно перемещать данные между пространством приложения и Lustre OSS без необходимости промежуточного копирования данных через ядро, обеспечивая вычислительным процессорам доступ к файловой системе Lustre с низкой задержкой и высокой пропускной способностью. В выпуске Lustre 2.10 добавлена возможность задавать составные макеты, чтобы файлы имели разные параметры макета для разных областей файла. Функция компоновки прогрессивных файлов (PFL) использует составные компоновки для повышения производительности ввода-вывода файлов в более широком диапазоне рабочих нагрузок, а также для упрощения использования и администрирования.

Например, небольшой файл PFL может иметь одну полосу для низкой нагрузки доступа, в то время как большие файлы могут иметь много полос для высокой совокупной пропускной способности и лучшей балансировки нагрузки OST. Составные макеты дополнительно улучшены в выпуске 2.11 с функцией резервирования уровня файла (FLR), которая позволяет файлу иметь несколько перекрывающихся макетов для файла, обеспечивая избыточность RAID 0+1 для этих файлов, а также улучшенную производительность чтения.

Пример

Сначала нужно получить по адресу http://www.sun.com/software/products/lustre/get.jsp следующие компоненты:

  • ядро Linux с специальными патчами для Lustre;
  • сами исходники Lustre.

Настройка и установка ядра Linux

Здесь процедура настройки, компиляции и установки ядра не отличается от типичных, за исключением следующих параметров настроек ядра:

  • должна быть включена поддержка Quote, ext3;
  • должна быть выключена поддержка preemt;
  • также обязательна поддержка модулей.

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

Как вариант компания Sun Microsystems предоставляет предкомпилированные компоненты в формате .rpm и .deb.

Настройка и установка программы Lustre

Процесс установки программных компонентов Lustre тоже не отличается особой оригинальностью и выполняется следующими шагами:

tar -xzvf lustre-1.6.5.tar.gz
cd lustre-1.6.5
./configure
make
make install

Настройка и запуск системы

Первым шагом необходимо подготовить сервер MDS, который будет хранить метаданные. Для этого следует выделить отдельный раздел для этих данных и отформатировать:

mkfs.lustre --mdt --mgs --fsname=webstorage /dev/sdb
mount -t lustre /dev/sdb /mnt/mdt

где:

  • параметр webstorage – имя файловой системы, используемое для идентификации хранилища внутри кластера;
  • устройство /dev/sdb – раздел для хранения метаданных.

Примечание. Lustre FS поддерживает хранение и в файле, но с небольшой потерей производительности и надежности из-за дополнительного слоя (файловой системы, где хранится файл данных).

Следующий наш шаг – форматирование и подключение серверов OSS, где будут храниться данные.

На OSS1 выполняем следующие шаги:

mkfs.lustre --ost --fsname=webstorage —mgsnode=mds.domain.com@tcp0 /dev/sdb
mount -t lustre /dev/sdb /mnt/ost1

где:

  • параметр webstorage – имя файловой системы;
  • параметр mds.domain.com – адрес сервера MDS (обязательно, чтобы все серверы кластера могли получить IP по этому имени через DNS или путем прописывания записей в /etc/hosts) или можно использовать IP-адрес сервера MDS;
  • устройство /dev/sdb – место для хранения самих данных.

Аналогично выполняем эти же шаги на серверах oss2.domain и oss3.domain.com, причем разделы для хранения данных могут быть отличными от разделов, используемых на других OSS. И теперь самое главное – подключение клиентов к нашей кластерной файловой системе:

mount -t lustre mds.domain.com:/webstorage /mnt/lustre

где:

  • mds.domain.com – адрес нашего MDS (mds.domain.com);
  • webstorage – имя файловой системы;
  • /mnt/lustre – точка монтирования, где клиенты могут записывать и читать файлы.

Конечно, процесс запуска MDS, OSS и клиентов нужно прописать в файле /etc/fstab, чтобы при загрузке серверов активировались соответствующие сервисы (MDS и OSS) и подключались клиенты к файловой системе.

Строка для сервера MDS для файла /etc/fstab:

/dev/sdb /mnt/mdt lustre defaults 0 0

Строка для серверов OSS для файла /etc/fstab:

/dev/sdb /mnt/ost lustre defaults 0 0

Строка для клиентов для файла /etc/fstab:

mds.domain.com:/webstorage /mnt/lustre lustre defaults 0 0

Источники

  1. Lustre// WikiVisually. [2017—2017]. Дата обновления: 02.06.2017. URL: https://wikivisually.com/wiki/Lustre_(file_system) (дата обращения: 31.10.2017).
  2. Lustre(File system)// thefullwiki. [2017—2017]. Дата обновления: 02.06.2017. URL: http://www.thefullwiki.org/Lustre_%28file_system%29 (дата обращения: 31.10.2017).
  3. Lustre(File system)//Wikiplanet. [2017—2017]. Дата обновления: 02.06.2017. URL: https://www.wikiplanet.click/enciclopedia/en/Lustre_%28file_system%29 (дата обращения: 31.10.2017).