Lustre (сетевая файловая система)

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Lustre»)
Перейти к навигации Перейти к поиску
Lustre
Тип распределённая файловая система[d] и свободное и открытое программное обеспечение
Разработчики Intel и DataDirect Networks[d]
Написана на Си[1]
Операционная система ядро Linux
Первый выпуск 16 декабря 2003
Последняя версия
Репозиторий git.whamcloud.com/fs/lus…
Лицензия GNU GPL 2
Сайт lustre.org (англ.)

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

Файловые системы Lustre используются в компьютерных кластерах, начиная от небольших кластеров рабочих групп и заканчивая масштабными географически распредёленными кластерами. Пятнадцать суперкомпьютеров из мирового «Топ-30» используют файловые системы Lustre, в том числе самый быстрый в мире суперкомпьютер — K computer[4].

Файловые системы Lustre могут поддерживать десятки тысяч клиентских систем, десятки петабайт (PBs) памяти для хранения данных и пропускную способность ввода-вывода в сотни гигабайт в секунду (GB/s). Благодаря высокой масштабируемости Lustre, такие области бизнеса, как провайдеры Интернета, финансовые организации, индустрия нефти и газа устанавливают файловые системы Lustre в своих центрах обработки данных[5].

История[править | править код]

Архитектура файловой системы Lustre была разработана в рамках исследовательского проекта в 1999 Питером Браамом (Peter Braam), старшим научным сотрудником Университета Карнеги — Меллон. Браам покинул его, чтобы основать собственную компанию Cluster File Systems, реализовавшую Lustre 1.0 в 2003 году. В 2007 году Sun Microsystems поглотила Cluster File Systems[6][7] и включила Lustre в свой пакет программного обеспечения для высокопроизводительных систем, намереваясь использовать преимущества технологии Lustre в файловой системе Sun ZFS и операционной системе Solaris. В ноябре 2008 года Браам покинул Sun Microsystems для работы над другой файловой системой, оставив разработку архитектуры Lustre Эрику Бартону (Eric Barton) и Андреасу Дилджеру (Andreas Dilger).

В 2010 году Oracle поглотила Sun и к ней перешёл бизнес по поддержке и разработке Lustre. В апреле 2010 года Oracle объявила о намерении ограничить платную поддержку для новой Lustre 2.0, предоставляя её только на оборудовании Oracle или оборудовании, разработанном одобренными Oracle поставщиками. При этом Lustre осталась доступной всем пользователям под лицензией GPL и существующие заказчики Lustre 1.8 продолжили получать техподдержку от Oracle[8].

В декабре 2010 Oracle объявила о прекращении развития Lustre. Выпуск Lustre 1.8 переведен на обслуживание только для сопровождения[9], что создало неопределенность по поводу дальнейшего развития файловой системы. Согласно этому объявлению разработка и поддержка новых версий Lustre осуществляется сообществом разработчиков, включая Whamcloud[10], Xyratex[11], OpenSFS, European Open Filesystems (OFS) SCE и другими. В том же году Эрик Бартон и Андреас Дилджер покинули Oracle и основали стартап Whamcloud, сфокусированный на развитии Lustre[12].

В июле 2012 года Whamcloud была приобретена Intel[13][14]. Это произошло после того, как Whamcloud выиграла контракт для министерства энергетики США на расширение Lustre в рамках первой фазы проекта экзафлопных вычислений под названием FastForward на период до 2018 года[15]. После этого OpenSFS перевела все контракты по разработке Lustre в Intel.

История выпусков[править | править код]

Файловая система Lustre впервые была инсталлирована для использования в работе в марте 2003 на кластере MCR Linux Cluster в LLNL[16], одном из самых мощных суперкомпьютеров того времени[17].

Lustre 1.2.0, выпущенная в марте 2004, поддерживала ядро Linux 2.6, возможность «size glimpse» для исключения отзыва блокировки на файлы, подлежащие записи, а также учёт для кэша обратной записи данных со стороны клиента.

Lustre 1.4.0, выпущенная в ноябре 2004, обеспечивала совместимость протоколов между версиями, поддержку сети InfiniBand, а также поддержку экстентов и mballoc в дисковой файловой системе ldiskfs.

Lustre 1.6.0, выпущенная в апреле 2007, поддерживала конфигурацию монтирования («mountconf»), позволяя серверам быть сконфигурированными с помощью «mkfs» и «mount», поддерживала динамическое добавление целей хранилищ объектов (object storage target — OST), включала масштабируемый менеджер распредёленной блокировки Lustre (Lustre distributed lock manager — LDLM) для симметричных мультипроцессоров (SMP), а также поддерживала управление свободным пространством при распределении объектов.

Lustre 1.8.0, выпущенная в мае 2009, предоставляла OSS Read Cache, улучшала восстановление в случае многократных отказов, добавила базовое управление гетерогенными хранилищами через OST Pools, адаптивные сетевые таймауты, а также восстановление на основе версий. Она также являлась переходным выпуском, обеспечивая взаимодесвие как с Lustre 1.6, так и с Lustre 2.0[18].

Lustre 2.0.0, выпущенная в августе 2010, содержала переписанный стек сервера метаданных, организующий основу кластеризованных метаданных (Clustered Metadata — CMD), что позволило распределить метаданные Lustre по нескольким серверам метаданных, новый клиентский стек ввода-вывода (Client IO stack — CLIO) для переносимости с другими клиентскими операционными системами, например Mac OS, Microsoft Windows, Solaris, а также абстрактное устройство хранения объектов (Object Storage Device — OSD) для обеспечения переносимости с другими файловыми системами, например ZFS.

Файловая система Lustre и ассоциированное с ней программное обеспечение с открытым кодом были адаптированы многими организациями. Например, и Red Hat и SUSE (Novell) предлагают ядра Linux, работающие на клиентах без дополнений, что облегчает развертывание.

Архитектура[править | править код]

Файловая система 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 для хранения внутренних данных[19], продолжающийся как проект с открытым кодом[20].

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

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

Реализация[править | править код]

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

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

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

Объекты данных и разделение данных[править | править код]

В традиционных дисковых файловых системах 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[22], пропускную способность до 3 GB/s через каналы InfiniBand QDR, пропускную способность свыше 1 GB/s через интерфейсы 10GigE.

Высокая доступность[править | править код]

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

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

Инсталляции[править | править код]

Lustre используется во многих суперкомпьютерах и крупных кластерах из TOP500. Пятнадцать из 30 мощнейших суперкомпьютеров мира используют файловую систему Lustre, включая самый быстрый суперкомпьютер мира K computer в RIKEN[4], и второй по производительности (мощнейший с ноября 2010 по июнь 2011), Тяньхэ-1 в Национальном суперкомпьютерном центре в городе Тяньцзинь (Китайская Народная Республика). Другие суперкомпьютеры, использующие файловую систему Lustre — это третий по мощности Jaguar в Oak Ridge National Laboratory (ORNL) и системы National Energy Research Scientific Computing Center, расположенные в Lawrence Berkeley National Laboratory (LBNL), Lawrence Livermore National Laboratory (LLNL), Pacific Northwest National Laboratory, Texas Advanced Computing Center и NASA[23] в Северной Америке, Tokyo Institute of Technology[24] в Азии, и одна из самых больших систем в Европе — CEA[25].

Коммерческая поддержка[править | править код]

Коммерческая поддержка Lustre обеспечивается большим числом поставщиков. В большинстве случаев поддержка предоставляется для вычислительной системы или оборудования хранения данных, продаваемого производителем. Неполный список поставщиков, продающих вычислительные системы и хранилища с Lustre, включает Cray, Dell, Hewlett-Packard, BULL, SGI и другие. Sun Microsystems больше не поставляет систем, содержащих Lustre. Основные поставщики, продающие оборудование хранения данных с поддержкой Lustre — Data Direct Networks (DDN), Dell, Terascala, Xyratex и другие.

Платформа Amazon Web Services предлагает Amazon FSx for Lustre, полностью управляемый сервис для обработки Amazon S3 и собственных (локальных) данных.

Примечания[править | править код]

  1. The lustre Open Source Project on Open Hub: Languages Page — 2006.
  2. https://git.whamcloud.com/?p=fs/lustre-release.git;a=commit;h=cac870cf4d2bd9905b1b2bbe563defe6d748ac94
  3. Lustre Home. Архивировано из оригинала 23 августа 2000 года.
  4. 1 2 An Overview of Fujitsu's Lustre Based File System. Fujitsu Limited. Дата обращения: 24 июня 2011. Архивировано из оригинала 3 марта 2012 года.
  5. Lustre File System presentation. Google Video. Дата обращения: 28 января 2008. Архивировано из оригинала 3 марта 2012 года.
  6. Sun Assimilates Lustre Filesystem. Linux Magazine (13 сентября 2007). Архивировано из оригинала 3 марта 2012 года.
  7. Sun Welcomes Cluster File Systems Customers and Partners. Sun Microsystems, Inc. (2 октября 2007). Архивировано из оригинала 3 марта 2012 года.
  8. Lustre 2.0 support limited to Oracle hardware customers. Infostor (28 апреля 2010). Архивировано из оригинала 3 марта 2012 года.
  9. Oracle has Kicked Lustre to the Curb. Inside HPC (10 января 2011). Архивировано из оригинала 3 марта 2012 года.
  10. Whamcloud aims to make sure Lustre has a future in HPC. Inside HPC (20 августа 2010). Архивировано из оригинала 3 марта 2012 года.
  11. Xyratex Acquires ClusterStor, Lustre File System Expertise/. HPCwire (9 ноября 2010). Архивировано из оригинала 3 марта 2012 года.
  12. Whamcloud Staffs up for Brighter Lustre. InsideHPC. Архивировано из оригинала 3 марта 2012 года.
  13. Joab Jackson. Intel Purchases Lustre Purveyor Whamcloud. PC World (16 июля 2012). Дата обращения: 7 января 2015. Архивировано 6 мая 2017 года.
  14. Timothy Prickett Morgan. Intel gobbles Lustre file system expert Whamcloud. The Register (16 июля 2012). Дата обращения: 29 сентября 2017. Архивировано 8 июля 2017 года.
  15. Timothy Prickett Morgan. DOE doles out cash to AMD, Whamcloud for exascale research. The Register (11 июля 2012). Дата обращения: 29 сентября 2017. Архивировано 19 августа 2016 года.
  16. Lustre Helps Power Third Fastest Supercomputer. DSStar. Архивировано 3 февраля 2013 года.
  17. MCR Linux Cluster Xeon 2.4 GHz - Quadrics. Top500.Org. Архивировано из оригинала 3 марта 2012 года.
  18. Lustre Roadmap and Future Plans. Sun Microsystems. Дата обращения: 21 августа 2008. Архивировано 18 мая 2011 года.
  19. Lustre to run on ZFS. Government Computer News (26 октября 2008). Архивировано из оригинала 3 марта 2012 года.
  20. ZFS on Lustre (10 мая 2011). Архивировано из оригинала 12 марта 2016 года.
  21. DataDirect Selected As Storage Tech Powering BlueGene/L. HPC Wire, October 15, 2004: Vol. 13, No. 41.. Архивировано 3 декабря 2007 года.
  22. Lafoucrière, Jacques-Charles. Lustre Experience at CEA/DIF. HEPiX Forum, April 2007. Архивировано из оригинала 3 марта 2012 года.
  23. Pleiades Supercomputer. www.nas.nasa.gov (18 августа 2008). Архивировано из оригинала 3 марта 2012 года.
  24. TOP500 List - November 2006. TOP500.Org. Архивировано из оригинала 3 марта 2012 года.
  25. TOP500 List - June 2006. TOP500.Org. Архивировано из оригинала 3 марта 2012 года.

Ссылки[править | править код]