Lustre

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

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

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

Історія[ред. | ред. код]

Архітектура файлової системи Lustre була розроблена в рамках дослідницького проекту в 1999 Пітером Браамом (Peter Braam), старшим науковим співробітником Університету Карнегі—Меллон. Браам покинув його, щоб заснувати власну компанію Cluster File Systems, котра і реалізувала Lustre 1.0 в 2003. У 2007 Sun Microsystems поглинула Cluster File Systems Inc.[4][5] 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.[6] У грудні 2010 Oracle оголосила про припинення розвитку Lustre. Випуск Lustre 1.8 переведений на обслуговування тільки для супроводу[7], що створило невизначеність з приводу подальшого розвитку файлової системи. Згідно з цим оголошенням розробка та підтримка нових версій Lustre здійснюється співтовариством розробників, включаючи Whamcloud [Архівовано 22 липня 2013 у Wayback Machine.],[8] Xyratex,[9] OpenSFS [Архівовано 23 травня 2013 у Wayback Machine.], EUROPEAN Open Filesystems (OFS) SCE та іншими. У тому ж році, Ерік Бартон (Eric Barton) і Андреас Ділджер (Andreas Dilger) залишили Oracle для стартапу Whamcloud на базі Lustre[10], де вони продовжили роботу над Lustre.

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

Історія випусків[ред. | ред. код]

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

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.[13]

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.[14] Він додав підтримку серверів Red Hat Linux 6, збільшив максимальний розмір OST на основі ext4 з 24 TB до 128 TB,[15], разом з численними покращеннями швидкодії та стабільності. Сервери Lustre 2.1 залишаються сумісними з випусками клієнтів 1.8.6 і пізнішими, і став новим випуском з тривалою підтримкою Lustre.

Lustre 2.2, випущений у березні 2012, сфокусувався на забезпеченні покращень продуктивності метаданих та на нових можливостях.[16] 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, Quadrics[ru], а також пропрієтарні мережеві технології. Lustre також використовує переваги віддаленого прямого доступу до пам'яті, якщо це можливо, для збільшення пропускної спроможності та зниження частки використання ЦП.

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

OST є виділеною файловою системою, що експортує інтерфейс в байтові регіони об'єктів для операцій читання / запису. MDT є виділеною файловою системою для контролю доступу до файлів і повідомлень клієнтам про те, які об'єкт(и) входять в структуру файлу. В даний час MDT і OST використовують для зберігання даних поліпшену версію ext4, звану ldiskfs. У 2008 Sun почала проект портування Lustre в Sun ZFS/DMU для зберігання внутрішніх даних[17], що триває як проект з відкритим кодом[18].

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

Клієнти не модифікують об'єкти файлової системи OST безпосередньо, делегуючи це завдання OSS. Цей підхід забезпечує масштабованість для великомасштабних кластерів і суперкомп'ютерів, а також покращує безпеку і надійність. На противагу цьому блокові колективні файлові системи, наприклад Global file system[en] і OCFS повинні підтримувати прямий доступ до сховища для всіх клієнтів у файловій системі, збільшуючи ризик пошкодження файлової системи з боку неправильних клієнтів.

Реалізація[ред. | ред. код]

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

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

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

Висока доступність[ред. | ред. код]

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

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

Інсталяції[ред. | ред. код]

Lustre використовується в багатьох суперкомп'ютерах і великих кластерах з TOP500. П'ятнадцять із 30 найпотужніших суперкомп'ютерів світу використовують файлову систему Lustre, включаючи найшвидший суперкомп'ютер світу K computer в RIKEN Advanced Institute for Computational Science[2], і другий за продуктивністю (найпотужніший з листопада 2010 по червень 2011), Тяньхе-1 у Національному суперкомпьютерному центрі в місті Тяньцзінь (Китайська Народна Республіка). Інші суперкомп'ютери, що використовують файлову систему Lustre - це третій за потужністю Jaguar в Національній лабораторії Оук-Ридж (ORNL) та системи National Energy Research Scientific Computing Center, розташовані в Національній лабораторії ім. Лоуренса в Берклі (LBNL), Ліверморській національній лабораторії (LLNL), Pacific Northwest National Laboratory[en], Texas Advanced Computing Center[en] і NASA[21] у Північній Америці, в Азії в Токійський технічний університет[22], та одна з найбільших систем в Європі CEA[23].

Комерційна підтримка[ред. | ред. код]

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

Виноски[ред. | ред. код]

  1. Lustre Home. Архів оригіналу за 23 серпня 2000. Процитовано 15 липня 2013.
  2. а б An Overview of Fujitsu's Lustre Based File System (PDF). Fujitsu Limited. Архів оригіналу (PDF) за 03-03-2012. Процитовано 24 червня 2011.
  3. Lustre File System presentation. Google Video. Архів оригіналу за 3 березня 2012. Процитовано 28 січня 2008.
  4. Sun Assimilates Lustre Filesystem. Linux Magazine. 13 вересня 2007. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  5. Sun Welcomes Cluster File Systems Customers and Partners. Sun Microsystems, Inc. 2 жовтня 2007. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  6. Lustre 2.0 support limited to Oracle hardware customers. Infostor. 28 квітня 2010. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  7. Oracle has Kicked Lustre to the Curb. Inside HPC. 10 січня 2011. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  8. Whamcloud aims to make sure Lustre has a future in HPC. Inside HPC. 20 серпня 2010. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  9. Xyratex Acquires ClusterStor, Lustre File System Expertise/. HPCwire. 9 листопада 2010. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  10. Whamcloud Staffs up for Brighter Lustre. InsideHPC. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  11. Lustre Helps Power Third Fastest Supercomputer. DSStar. Архів оригіналу за 3 лютого 2013. Процитовано 20 липня 2013.
  12. MCR Linux Cluster Xeon 2.4 GHz - Quadrics. Top500.Org. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  13. Lustre Roadmap and Future Plans (PDF). Sun Microsystems. Архів оригіналу (PDF) за 18 травня 2011. Процитовано 21 серпня 2008. {{cite web}}: Вказано більш, ніж один |deadlink= та |deadurl= (довідка)
  14. OpenSFS Announces Collaborative Effort to Support Lustre 2.1 Community Distribution. Open Scalable File Systems. Архів Whamcloud оригіналу за 23 травня 2011. Процитовано 2 лютого 2012.
  15. Lustre 2.1 Released. Процитовано 2 лютого 2012.
  16. Lustre 2.2 Released. Yahoo! Finance. Архів оригіналу за 2 вересня 2012. Процитовано 8 травня 2012.
  17. Lustre to run on ZFS. Government Computer News. 26 жовтня 2008. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  18. ZFS on Lustre. 10 травня 2011. Архів оригіналу за 12 березня 2016. Процитовано 20 липня 2013. {{cite web}}: Вказано більш, ніж один |deadlink= та |deadurl= (довідка)
  19. DataDirect Selected As Storage Tech Powering BlueGene/L. HPC Wire, October 15, 2004: Vol. 13, No. 41. Архів оригіналу за 3 грудня 2007. Процитовано 20 липня 2013. {{cite web}}: Вказано більш, ніж один |deadlink= та |deadurl= (довідка)
  20. Lafoucrière, Jacques-Charles. Lustre Experience at CEA/DIF (PDF). HEPiX Forum, April 2007. Архів оригіналу (PDF) за 3 березня 2012. Процитовано 20 липня 2013.
  21. Pleiades Supercomputer. www.nas.nasa.gov. 18 серпня 2008. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  22. TOP500 List - November 2006. TOP500.Org. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.
  23. TOP500 List - June 2006. TOP500.Org. Архів оригіналу за 3 березня 2012. Процитовано 20 липня 2013.

Посилання[ред. | ред. код]

Див. також[ред. | ред. код]