Lustre

Зачастую, краеугольным камнем производительности работы сервера является скорость работы файловой системы. Её можно увеличить с помощью создания дисковых массивов RAID0 — запись/чтение побитово производится на оба диска, однако рано или поздно слоты под диски заканчиваются, надёжность RAID0 оставляет желать лучшего — при выходе одного из дисков, рушится вся система. RAID10 опять же упираемся в количество дисков. Как альтернатива, использование сетевых фс. Наибольшее распространение получила NFS, но для боевых задач с её скоростью и неочевидностью настройки прав доступа практически непригодна. В ТОП-300 суперкомпьютеров Мира половина из первых 50 используют LustreFS, которая очень проста в первоначальной настройке.

«Сравнивать GPFS и LustreFS — это как сравнивать IBM и SUN.»
Анонимус из интернетов.
Lustre Logo

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

Помимо этого поддерживаются все возможности, который должна иметь любая уважающая себя кластерная файловая система:

  • поддержка широкого ассортимента типов высокоскоростных сетевых соединений;
  • надежная система «замков» для обеспечения параллельного доступа к файлам;
  • возможность автоматического самовосстановления в случае падения любого из узлов;
  • распределенное управление файловыми объектами для предоставления масштабируемого доступа к файлам.

Изначально архитектура этой файловой системы была разработана просто в рамках исследовательского проекта Петера Браама в 1999, но он решил не останавливаться на достигнутом и основал Cluster File Systems, Inc., в которой уже и велась основная разработка самой файловой системы. Первый релиз Lustre 1.0 был выпущен в 2003 году. Спустя четыре года компания была приобретена Sun Microsystems в октябре 2007 года, но это лишь способствовало дальнейшему развитию проекта. Программное обеспечение, входящее в состав проекта, выпускается под лицензией GPL, что также сыграло немаловажную роль в его жизни.

Архитектура

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

  • MDS<. Сервер метаданных предназначен для хранения всей служебной информации о системе: названия файлов, директорий, прав доступа и так далее. Достаточно наличие одного такого сервера в системе, но для обеспечения надежности на случай каких-либо сбоев, обычно его дублируют. Возможно использование внешнего хранилища данных (MDT<), которое может быть общим для двух дублирующих друг друга MDS<.
  • OSS<. Компьютеры для хранения самих данных. Каждый из них работает с 2-8 OST<, в их роли могут выступать практически любые средства хранения данных, начиная от просто жестких дисков или RAID массивов внутри OSS, заканчивая внешними системами хранения данных enterprise-класса. Сумма дискового пространства всех OST и является размером доступного дискового пространства всей файловой системы Lustre.
  • Клиент. Компьютеры, непосредственно использующие файловую систему. Им предоставляется полный параллельный доступ, полностью соответствующий стандарту POSIX.

Один и тот же компьютер теоретически может совмещать в себе несколько функций, но в большинстве случаев это нецелесообразно (за исключением совмещения клиентов с OST и, возможно, случаев, когда количество узлов кластера очень мало).

Возможно более наглядно вышенаписанное сможет представить схема архитектуры системы (позаимствована< с официального сайта и переведена):

Схема архитектуры файловой системы  Lustre<

 

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

Функционирование

Основным толчком для выполнения каких-либо действий в рамках всей файловой системы обычно является запрос с одного из клиентов. Программное обеспечение для клиентов представляет по сути интерфейс между виртуальной файловой системой Linux< и серверами Lustre. Каждому типу серверов соответствует своя часть клиентского ПО: MDC<, OSC<, MGT<. В отличии от Hadoop< и GFS< файловая система Lustre должна быть примонтирована к локальной системе клиентов для полноценного их функционирования.

Для осуществления коммуникации между клиентами и серверами используется собственный API, известный как LNET<. Он поддерживает множество сетевых протоколов с помощью NAL<.

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

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

Настройка

Простое решение — правильное решение. Настройка производилась на трёх идентичных серверах s1 s2 s3, операционная система — CentOS 5.4.

Структура такова, что таблица фс хранится в MGS/MDT разделе, он же пофайлово отвечает за балансировку. Структура чем-то напоминает RAID0, при выходе из строя одного(не MGS/MDT) из устройств система продолжает функционировать и возвращается в полностью рабочее состояние при возвращении потерявшегося бойца.
Разделы объединяются в ноды, в качестве узлов можно использовать серверы, файловые хранилища,….

Освободите на s1 два раздела: sda4 ~50MB под структуру и sda3 оставшееся место. На остальных серверах достаточно только sda3.

int main()

1. Создаем репозиторий.

bash# cd /etc/yum.repos.d/
bash# cat lustre
[lustre]
name=RHEL/CentOS-$releasever _cke_saved_name=RHEL/CentOS-$releasever _cke_saved_name=RHEL/CentOS-$releasever lustre
baseurl=http://quattorsrv.lal.in2p3.fr/packages/lustre/
gpgcheck=0
enabled=1<

2. Устанавливаем ядро и пакеты

bash# yum install kernel-lustre.x86_64 lustre.x86_64<

3. Перегружаемся в новое ядро

bash# reboot<

4. Ставим lustre-modules и lustre-ldiskfs

bash# yum install lustre-modules.x86_64 lustre-ldiskfs.x86_64<

5. Утилиты для работы с фс нужно выкачать по ссылке www.sun.com/software/products/lustre/get.jsp<, стандартные у меня так и не заработали. Нам нужен всего один файл

bash# rpm -Uhv e2fsprogs-1.41.6.sun1-0redhat.rhel5.x86_64.rpm<

6. Делаем MGS и MDT диск (под структуру), монтируем и записываем в fstab

[email protected]# mkfs.lustre --fsname=spfs --reformat --mdt --mgs /dev/sda4;
[email protected]# mdkir /mgs-mds; mount -t lustre /dev/sda4 /mgs-mds;
[email protected]# echo "/dev/sda4 /mgs-mds lustre defaults,_netdev 0 0" >> /etc/fstab;<

7. Создаем OST раздел с данными, монтируем, пишем в /etc/fstab

[email protected]# mkfs.lustre --fsname=spfs --reformat --ost [email protected] /dev/sda3
[email protected]# mkdir /ost; mount -t lustre /dev/sda3/ost
[email protected]# echo "/dev/sda3 /ost lustre defaults,_netdev 0 0" >> /etc/fstab<

8. Логинимся на s2 и повторяем пункты 1-5

9. Создаем OST раздел с данными, монтируем, пишем в /etc/fstab

[email protected]# mkfs.lustre --fsname=spfs --reformat --ost [email protected] /dev/sda3
[email protected]# mkdir -p /ost; mount -t lustre /dev/sda3 /ost
[email protected]# echo "/dev/sda3 /ost lustre defaults,_netdev 0 0" >> /etc/fstab<

10. Пункты 8-9 повторяем для s3,s4,… sn

11. Монтируем рабочую систему

[email protected]# mkdir -p /work
[email protected]# echo "[email protected]:/spfs /work lustre defaults 0 0" >> /etc/fstab
[email protected]# mount /work<

return 0

Заключение

Эта файловая система нашла свое применение во множестве крупнейших кластеров и суперкомпьютеров по всему миру, но это не мешает ей с тем же успехом демонстрировать и на кластерах существенно меньшего масштаба. Около половины из самых производительных суперкомпьютеров во всем мире используют Lustre в качестве файловой системы. Помимо этого многие компании предоставляют ее в качестве основы для Linux кластеров (например HP StorageWorks SFS, Cray XT3, Cray XD1). Чем не показатель ее конкурентоспособности?