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

Файлові системи Lustre використовуються в комп'ютерних кластерах, починаючи від невеликих кластерів робочих груп і закінчуючи масштабними географічно розподіленими кластерами. П'ятнадцять суперкомп'ютерів зі світового Топ 30 використовують файлові системи Lustre, в тому числі найшвидший у світі суперкомп'ютер з TOP500, K computer.

Файлові системи Lustre можуть підтримувати десятки тисяч клієнтських систем, десятки петабайт (PBs) пам'яті для зберігання даних і пропускну здатність вводу-виводу в сотні гігабайт на секунду (GB/s). Завдяки високій масштабованості Lustre, такі галузі бізнесу, як провайдери Інтернет, фінансові організації, індустрія нафти і газу встановлюють файлові системи Lustre у своїх центрах обробки даних.

Історія

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

У 2010 Oracle в процесі поглинання Sun в 2010, стала підтримувати і розробляти Lustre. Але вже у квітні 2010 Oracle оголосила про свій намір обмежити платну підтримку для нової Lustre 2.0 тільки на обладнанні Oracle, або обладнанні, розробленому схваленими Oracle постачальниками. Lustre залишилася доступною всім користувачам під ліцензією GPL, і існуючі споживачі Lustre 1.8 продовжують отримувати техпідтримку від Oracle. У грудні 2010 Oracle оголосила про припинення розвитку Lustre. Випуск Lustre 1.8 переведений на обслуговування тільки для супроводу, що створило невизначеність з приводу подальшого розвитку файлової системи. Згідно з цим оголошенням розробка та підтримка нових версій Lustre здійснюється співтовариством розробників, включаючи Whamcloud , Xyratex, OpenSFS , EUROPEAN Open Filesystems (OFS) SCE та іншими. У тому ж році, Ерік Бартон (Eric Barton) і Андреас Ділджер (Andreas Dilger) залишили Oracle для стартапу Whamcloud на базі Lustre, де вони продовжили роботу над Lustre.

Файлова система Lustre і асоційоване з нею програмне забезпечення з відкритим кодом були адаптовані багатьма організаціями. Наприклад, і Red Hat і SUSE (Novell) пропонували ядра Linux, що працюють на клієнтах без доповнень, що полегшує розгортання. Клієнт Lustre офіційно включений в ядро Linux починаючи з версії 3.11 у вересні 2013.

Історія випусків

Файлова система Lustre вперше була інстальована для використання в роботі в березні 2003 на кластері MCR Linux Cluster в LLNL , одному з найпотужніших суперкомп'ютерів того часу.

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

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

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

Lustre 1.8, випущена в травні 2009, надавала OSS Read Cache, покращувала відновлення у разі багаторазових відмов, додала базове управління гетерогенними сховищами через OST Pools, адаптивні мережеві таймаути, а також відновлення на основі версій. Вона також була перехідним випуском, забезпечуючи взаємодію як з Lustre 1.6, так і з Lustre 2.0.

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

Lustre 2.1, випущена у вересні 2011, став відповіддю спільноти розробників на пригальмування Oracle розвитку гілки Lustre 2.x. Він додав підтримку серверів Red Hat Linux 6, збільшив максимальний розмір OST на основі ext4 з 24 TB до 128 TB,, разом з численними покращеннями швидкодії та стабільності. Сервери Lustre 2.1 залишаються сумісними з випусками клієнтів 1.8.6 і пізнішими, і став новим випуском з тривалою підтримкою Lustre.

Lustre 2.2, випущений у березні 2012, сфокусувався на забезпеченні покращень продуктивності метаданих та на нових можливостях. It adds parallel directory operations allowing multiple clients to traverse and modify a single large directory concurrently, faster recovery from server failures, increased stripe counts for a single file (across up to 2000 OSTs), and improved single-client directory traversal (ls -l, find, du) performance.

Lustre 2.3, released in October 2012, continued to optimize the metadata server code to remove internal locking bottlenecks on nodes with many CPU cores (over 16). The object store added preliminary support for using ZFS as the backing filesystem. The MDS LFSCK feature can verify and repair the Object Index (OI) file while the filesystem is in use, after a file-level backup/restore or corruption. The server-side IO statistics were enhanced to allow integration with batch job schedulers such as SLURM to track per-job statistics. Client-side support was updated for up to Linux 3.0 kernels.

Lustre 2.4, released in May 2013, added a considerable number of major features. Distributed Namespace (DNE) allows horizontal metadata capacity and performance scaling for 2.4 clients, by allowing subdirectory trees of a single namespace to be located on separate MDTs. ZFS can now be used as the backing filesystem for both MDT and OST storage. The LFSCK feature allows scanning and verifying the internal consistency of the MDT FID and LinkEA attributes. The Network Request Scheduler (NRS) adds policies to optimize client request processing for disk ordering or fairness. Clients can optionally send up to bulk RPCs up to 4 MB in size. Client-side support was updated for up to Linux 3.6 kernels, and is still interoperable with 1.8 clients.

Архітектура

Файлова система 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, , а також пропрієтарні мережеві технології. 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. Цей підхід забезпечує масштабованість для великомасштабних кластерів і суперкомп'ютерів, а також покращує безпеку і надійність. На противагу цьому блокові колективні файлові системи, наприклад і OCFS повинні підтримувати прямий доступ до сховища для всіх клієнтів у файловій системі, збільшуючи ризик пошкодження файлової системи з боку неправильних клієнтів.

Реалізація

При звичайній установці Lustre на клієнті Linux модуль драйвера файлової системи Lustre завантажується в ядро і файлова система монтується як і будь-яка інша локальна або мережева файлова система. Застосунки клієнта бачать одну уніфіковану файлову систему, навіть якщо вона може бути складена з десятків тисяч індивідуальних серверів і файлових систем MDT/OST.

На деяких процесорах масового паралелізму (MPP) обчислювальні процесори можуть отримати доступ до файлової системи Lustre шляхом перенаправлення їхніх запитів вводу-виводу на виділений вузол вводу-виводу, сконфігурований як клієнт Lustre. Цей підхід використовується у Blue Gene , встановленому в Ліверморській національній лабораторії.