Развертывание параллельной файловой системы Lustre на GCP

1. Обзор

Добро пожаловать в Google Codelab для запуска кластера файловой системы Lustre Parallel на Google Cloud Platform!

d51beef5f729cbe9.png

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

Центры высокопроизводительных вычислений уже давно удовлетворяют эту потребность локально, используя такие технологии, как параллельная файловая система Lustre. Lustre сегодня является одним из самых популярных высокопроизводительных решений для хранения данных с открытым исходным кодом, и с июня 2005 года его постоянно используют как минимум половина из первой десятки и более 60 из 100 самых быстрых суперкомпьютеров в мире. Lustre имеет возможность масштабировать емкость до сотен ПБ и обеспечивать максимально возможную производительность для задач HPC, при этом системы обеспечивают пропускную способность в ТБ/с в одном пространстве имен.

Чтобы удовлетворить спрос на хранилище, Google Cloud применил два подхода. Во-первых, GCP заключила партнерское соглашение с DDN, чтобы представить поддерживаемое программное обеспечение DDN EXAScaler Lustre корпоративного класса на GCP Marketplace . Во-вторых, наши инженеры из Google Cloud разработали и опубликовали в открытом доступе набор скриптов, позволяющих легко настроить и развернуть кластер хранения данных Lustre в Google Compute Engine с помощью Google Cloud Deployment Manager.

Lustre на Google Cloud Platform в равной степени способен обеспечить максимальную производительность инфраструктуры, на которой он работает. Его производительность на GCP настолько хороша, что в 2019 году в тесте системы хранения IO-500 она заняла 8-е место вместе с нашим партнером DDN, представляя собой облачную файловую систему с самым высоким рейтингом на IO-500. Сегодня мы познакомим вас с развертыванием сценариев Open Source Deployment Manager для Lustre. Если вы заинтересованы в корпоративном, усиленном опыте Lustre с экспертной поддержкой Lustre для вашего кластера Lustre, а также с такими функциями, как графический интерфейс управления и мониторинга или настройки Lustre, мы рекомендуем изучить предложение DDN EXAScaler Marketplace .

Что вы узнаете

  • Как использовать службу диспетчера развертывания GCP
  • Как настроить и развернуть файловую систему Lustre на GCP.
  • Как настроить чередование и протестировать простой ввод-вывод в файловую систему Lustre.

Предварительные условия

  • Аккаунт Google Cloud Platform и проект с выставлением счетов
  • Базовый опыт работы с Linux

2. Настройка

Самостоятельная настройка среды

Создать проект

Если у вас еще нет учетной записи Google (Gmail или G Suite), вам необходимо ее создать . Войдите в консоль Google Cloud Platform ( console.cloud.google.com ) и откройте страницу «Управление ресурсами» :

359c06e07e6d699f.png

Нажмите Создать проект.

25c23d651abb837b.png

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

Далее вам необходимо включить выставление счетов в консоли разработчика, чтобы использовать ресурсы Google Cloud.

Работа с этой кодовой лабораторией не должна стоить вам больше нескольких долларов, но она может стоить больше, если вы решите использовать больше ресурсов или оставите их включенными (см. раздел «Заключение» в конце этого документа). Калькулятор цен Google Cloud Platform доступен здесь .

Новые пользователи Google Cloud Platform имеют право на бесплатную пробную версию стоимостью 300 долларов США .

Google Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории мы будем использовать Google Cloud Shell , среду командной строки, работающую в облаке.

Запустите Google Cloud Shell

В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:

dbad104cef962719.png

Затем нажмите «Запустить Cloud Shell» :

4e50db320508ac88.png

Подготовка среды и подключение к ней займет всего несколько минут:

20b0aa80492144d.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и упрощает аутентификацию. Большую часть, если не всю, работу в этой лаборатории можно выполнить с помощью простого веб-браузера или Google Chromebook.

После подключения к облачной оболочке вы должны увидеть, что вы уже прошли аутентификацию и что для проекта уже установлен ваш PROJECT_ID :

$ gcloud auth list

Вывод команды:

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
$ gcloud config list project

Вывод команды:

[core]
project = <PROJECT_ID>

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

$ gcloud config set project <PROJECT_ID>

Вывод команды:

Updated property [core/project].

3. Подготовьте и проверьте конфигурацию развертывания Lustre.

Загрузите сценарии диспетчера развертывания Lustre

В сеансе Cloud Shell выполните следующую команду, чтобы клонировать (загрузить) репозиторий Git , содержащий файлы менеджера развертывания Lustre for Google Cloud Platform:

git clone https://github.com/GoogleCloudPlatform/deploymentmanager-samples.git

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

cd deploymentmanager-samples/community/lustre/

Настройка YAML развертывания Lustre

Менеджер развертывания использует файл YAML для предоставления конфигурации развертывания. В этом файле YAML подробно описана конфигурация развертывания, например версия Lustre для развертывания и типы экземпляров компьютеров для развертывания. По умолчанию файл настроен для развертывания в новом проекте без увеличения квоты, однако вы можете изменить тип компьютера или мощность по желанию для этой лаборатории кода. Эта кодовая лаборатория написана с использованием этих значений по умолчанию, поэтому, если вы вносите какие-либо изменения, вы должны перенести эти изменения во всю кодовую лабораторию, чтобы избежать ошибок. В рабочей среде мы рекомендуем использовать экземпляр как минимум с 32 виртуальными ЦП для узла MDS и как минимум с 8 или 16 виртуальными ЦП для узлов OSS, в зависимости от емкости и типа хранилища.

Чтобы просмотреть или изменить файл YAML в сеансе Cloud Shell, откройте YAML-файл конфигурации развертывания Lustre-cluster.yaml . Вы можете использовать предпочитаемый вами редактор командной строки (vi, nano, emacs и т. д.) или использовать редактор кода Cloud Console для просмотра содержимого файла:

11efd5af658f1842.png

Содержимое файла будет выглядеть следующим образом:

# [START cluster_yaml]
imports:
- path: lustre.jinja

resources:
- name: lustre
  type: lustre.jinja
  properties:
    ## Cluster Configuration
    cluster_name            : lustre
    zone                    : us-central1-f
    cidr                    : 10.20.0.0/16
    external_ips            : True
    ### Use these fields to deploy Lustre in an existing VPC, Subnet, and/or Shared VPC
    #vpc_net                 : < VPC Network Name >
    #vpc_subnet              : < VPC Subnet Name >
    #shared_vpc_host_proj    : < Shared VPC Host Project name >

    ## Filesystem Configuration
    fs_name                 : lustre
    ### Review https://downloads.whamcloud.com/public/ to determine version naming
    lustre_version          : latest-release
    e2fs_version            : latest

    ## Lustre MDS/MGS Node Configuration
    #mds_node_count          : 1
    mds_ip_address          : 10.20.0.2
    mds_machine_type        : n1-standard-8
    ### MDS/MGS Boot disk
    mds_boot_disk_type      : pd-standard
    mds_boot_disk_size_gb   : 10
    ### Lustre MetaData Target disk
    mdt_disk_type           : pd-ssd
    mdt_disk_size_gb        : 1000

    ## Lustre OSS Configuration
    oss_node_count          : 4
    oss_ip_range_start      : 10.20.0.5
    oss_machine_type        : n1-standard-4
    ### OSS Boot disk
    oss_boot_disk_type      : pd-standard
    oss_boot_disk_size_gb   : 10
    ### Lustre Object Storage Target disk
    ost_disk_type           : pd-standard
    ost_disk_size_gb        : 5000
#  [END cluster_yaml]

В этом файле YAML есть несколько полей. Поля ниже, отмеченные звездочкой (*), обязательны для заполнения. Эти поля включают в себя:

Конфигурация кластера

  • имя_кластера* — имя кластера Lustre, добавляет все развернутые ресурсы в начало.
  • зона* — зона для развертывания кластера.
  • cidr* - диапазон IP в формате CIDR
  • external_ips* — True/False, узлы Lustre имеют внешние IP-адреса. Если false, то Cloud NAT настроен как шлюз NAT.
  • vpc_net — определите это поле и поле vpc_subnet, чтобы развернуть кластер Lustre в существующем VPC.
  • vpc_subnet — существующая подсеть VPC для развертывания кластера Lustre.
  • shared_vpc_host_proj — определите это поле, а также поля vpc_net и vpc_subnet, чтобы развернуть кластер в общем VPC.

Конфигурация файловой системы

  • fs_name — имя файловой системы Lustre.
  • lustre_version — версия Lustre для развертывания, используйте «latest-release» для развертывания последней ветки с https://downloads.whamcloud.com/public/lustre/ или lustre-XXX для развертывания любых других версий.
  • e2fs_version — версия E2fsprogs для развертывания, используйте «последнюю» для развертывания последней ветки с https://downloads.whamcloud.com/public/e2fsprogs/ или X.XX.X.wcX для развертывания любых других версий.

Конфигурация MDS/MGS

  • mds_ip_address — внутренний IP-адрес, указываемый для узла MDS/MGS.
  • mds_machine_type — тип машины, используемый для узла MDS/MGS (см. https://cloud.google.com/compute/docs/machine-types ).
  • mds_boot_disk_type — тип диска, который будет использоваться в качестве загрузочного диска MDS/MGS (pd-standard, pd-ssd).
  • mds_boot_disk_size_gb — Размер загрузочного диска MDS в ГБ.
  • mdt_disk_type* — тип диска, используемый для диска цели метаданных (MDT) (pd-standard, pd-ssd, local-ssd)
  • mdt_disk_size_gb* — Размер MDT-диска в ГБ.

Конфигурация OSS

  • oss_node_count* — количество создаваемых узлов сервера хранения объектов (OSS).
  • oss_ip_range_start — начало диапазона IP-адресов узла(ов) OSS. Если не указано, используйте автоматическое назначение IP.
  • oss_machine_type — тип машины, используемый для узлов OSS.
  • oss_boot_disk_type — тип диска, который будет использоваться в качестве загрузочного диска OSS (pd-standard, pd-ssd)
  • oss_boot_disk_size_gb — Размер загрузочного диска MDS в ГБ
  • ost_disk_type* — тип диска, используемый для диска объекта хранения объектов (OST) (pd-standard, pd-ssd, local-ssd)
  • ost_disk_size_gb* - Размер OST-диска в ГБ

4. Развертывание и проверка конфигурации.

Развертывание конфигурации

В сеансе Cloud Shell выполните следующую команду из папки Lustre-gcp :

gcloud deployment-manager deployments create lustre --config lustre.yaml

Эта команда создает развертывание с именем Lustre . Операция может занять до 10-20 минут, поэтому наберитесь терпения .

После завершения развертывания вы увидите вывод, похожий на:

Create operation operation-1572410719018-5961966591cad-e25384f6-d4c905f8 completed successfully.
NAME                                TYPE                   STATE      ERRORS  INTENT
lustre-all-internal-firewall-rule  compute.v1.firewall    COMPLETED  []
lustre-lustre-network              compute.v1.network     COMPLETED  []
lustre-lustre-subnet               compute.v1.subnetwork  COMPLETED  []
lustre-mds1                        compute.v1.instance    COMPLETED  []
lustre-oss1                        compute.v1.instance    COMPLETED  []
lustre-oss2                        compute.v1.instance    COMPLETED  []
lustre-oss3                        compute.v1.instance    COMPLETED  []
lustre-oss4                        compute.v1.instance    COMPLETED  []
lustre-ssh-firewall-rule           compute.v1.firewall    COMPLETED  []

Проверка развертывания

5f2a0557d3f2476f.png

Выполните следующие действия, чтобы просмотреть развертывание в консоли Google Cloud Platform:

  • В консоли Cloud Platform откройте меню «Продукты и услуги» в верхнем левом углу консоли (три горизонтальные линии).
  • Щелкните Диспетчер развертывания .
  • Нажмите «Блеск» , чтобы просмотреть подробности развертывания.
  • Нажмите Обзор — Блеск . На панели свойств развертывания отображается общая конфигурация развертывания.
  • Нажмите « Просмотр » в свойстве Config . На панели «Конфигурация» отображается содержимое YAML-файла конфигурации развертывания, измененного ранее. Прежде чем продолжить, проверьте правильность содержимого. Если вам нужно изменить конфигурацию развертывания, просто удалите развертывание в соответствии с шагами, описанными в разделе «Очистка развертывания», и перезапустите развертывание в соответствии с шагами, описанными в разделе «Настройка YAML-файла развертывания Lustre».
  • (Необязательно) В разделе Lustre-cluster щелкните каждый из ресурсов, созданных шаблоном Lustre.jinja, и просмотрите детали.

После проверки конфигурации развертывания давайте подтвердим, что экземпляры кластера запущены. В консоли Cloud Platform в меню «Продукты и услуги» выберите Compute Engine > Экземпляры виртуальных машин.

aec8498e04a3c334.png

На странице «Экземпляры виртуальных машин» просмотрите пять экземпляров виртуальных машин, созданных менеджером развертывания. Сюда входят lustre-mds1 , lustre-oss1 , lustre-oss2, lustre-oss3 и lustre-oss4 .

5. Доступ к кластеру блеска

Мониторинг установки

На странице «Экземпляры виртуальных машин» нажмите lustre-mds1, чтобы открыть страницу сведений об экземпляре.

ba0bea7acdbb9527.png

Нажмите «Последовательный порт 1 (консоль) , чтобы открыть страницу вывода последовательной консоли. Мы будем использовать этот последовательный вывод для мониторинга процесса установки экземпляра MDS и дождаться завершения сценария запуска. Нажмите кнопку «Обновить» в верхней части страницы, чтобы обновить последовательный вывод. Узел перезагрузится один раз для загрузки ядра Lustre и отобразит сообщения, аналогичные приведенным ниже:

Startup finished in 838ms (kernel) + 6.964s (initrd) + 49.302s (userspace) = 57.105s.
Lustre: lustre-MDT0000: Connection restored to 374e2d80-0b31-0cd7-b2bf-de35b8119534 (at 0@lo)

Это означает, что Lustre установлен в кластере Lustre, и файловая система готова к использованию!

Доступ к кластеру блеска

В сеансе Cloud Shell нажмите кнопку SSH рядом с экземпляром lustre-mds1 в Google Cloud Console. Альтернативно выполните следующую команду в Cloud Shell, заменив <ZONE> на зону узла lustre-mds1:

gcloud compute ssh lustre-mds1 --zone=<ZONE>

Эта команда входит в виртуальную машину lustre-mds1. Это экземпляр сервера метаданных Lustre (MDS), который также действует как экземпляр сервера управления Lustre (MGS). Этот экземпляр обрабатывает все запросы аутентификации и метаданных для файловой системы.

Давайте смонтируем файловую систему на нашем экземпляре lustre-mds1, чтобы иметь возможность протестировать ее позже. Выполните следующие команды:

sudo mkdir /mnt/lustre
sudo mount -t lustre lustre-mds1:/lustre /mnt/lustre
cd /mnt/lustre

Эти три команды делают три вещи. Первая команда создает локальный каталог, который мы будем использовать в качестве точки монтирования в «/mnt/lustre». Вторая команда запускает команду «mount» для монтирования файловой системы типа «lustre», которая находится на сервере lustre-mds1 и где имя файловой системы — «lustre» и отображается как «/lustre». Команда mount монтирует файловую систему Lustre в локальный каталог «/mnt/lustre». Наконец, третья команда меняет каталог на каталог /mnt/lustre, куда смонтирован Lustre.

Теперь вы смонтировали файловую систему Lustre в /mnt/lustre. Давайте посмотрим, что мы можем сделать с этой файловой системой.

6. Обзор инструментов Lustre CLI

Если вы не знакомы с Lustre и его инструментами, мы рассмотрим здесь несколько важных команд.

Инструмент низкоуровневого управления кластерами Lustre — «lctl». Мы можем использовать lctl для настройки и управления кластером Lustre, а также для просмотра служб кластера Lustre. Чтобы просмотреть сервисы и экземпляры в нашем новом кластере Lustre, выполните:

sudo lctl dl

Вы увидите вывод, аналогичный показанному ниже, в зависимости от того, какие изменения вы внесли в файл конфигурации Lustre YAML:

  0 UP osd-ldiskfs lustre-MDT0000-osd lustre-MDT0000-osd_UUID 11
  1 UP mgs MGS MGS 12
  2 UP mgc MGC10.128.15.2@tcp 374e2d80-0b31-0cd7-b2bf-de35b8119534 4
  3 UP mds MDS MDS_uuid 2
  4 UP lod lustre-MDT0000-mdtlov lustre-MDT0000-mdtlov_UUID 3
  5 UP mdt lustre-MDT0000 lustre-MDT0000_UUID 12
  6 UP mdd lustre-MDD0000 lustre-MDD0000_UUID 3
  7 UP qmt lustre-QMT0000 lustre-QMT0000_UUID 3
  8 UP lwp lustre-MDT0000-lwp-MDT0000 lustre-MDT0000-lwp-MDT0000_UUID 4
  9 UP osp lustre-OST0000-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
 10 UP osp lustre-OST0002-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
 11 UP osp lustre-OST0001-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
 12 UP osp lustre-OST0003-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4

Мы видим наш сервер управления Lustre (MGS) как элемент 1, наш сервер метаданных Lustre (MDS) как элемент 3, нашу цель метаданных Lustre (MDT) как элемент 5 и наши четыре сервера хранения объектов Lustre (OSS) как элементы с 8 по 12. Чтобы понять, что представляют собой другие услуги, ознакомьтесь с Руководством по Lustre .

Инструмент настройки файловой системы Lustre — «lfs». Мы можем использовать lfs для управления чередованием файлов на наших серверах хранения объектов Lustre (OSS) и соответствующих им целевых объектах хранения объектов (OST), а также для выполнения общих операций файловой системы, таких как поиск, df и управление квотами.

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

Чтобы проверить это, давайте создадим два каталога: один со счетчиком полос в один OSS, а другой со счетчиком полос «-1», что указывает на то, что файлы, записанные в этом каталоге, должны быть распределены по как можно большему количеству OSS. Каталоги могут содержать конфигурации чередования, которые наследуются файлами, созданными в них, но при желании подкаталоги и отдельные файлы в этом каталоге можно настроить на различное чередование. Чтобы создать эти два каталога, выполните следующие команды, находясь в каталоге «/mnt/lustre»:

sudo mkdir stripe_one
sudo mkdir stripe_all
sudo lfs setstripe -c 1 stripe_one/
sudo lfs setstripe -c -1 stripe_all/

Вы можете просмотреть настройки полосы файла или каталога, используя lfs getstripe:

sudo lfs getstripe stripe_all/

Вы увидите вывод, показывающий, что количество полос установлено как -1:

stripe_all/
stripe_count:  -1 stripe_size:   1048576 pattern:    raid0 stripe_offset: -1

Теперь мы готовы протестировать повышение производительности, которого можно достичь, написав большой файл, распределенный по нескольким OSS.

7. Тестирование ввода-вывода Luster

Мы проведем два простых теста Lustre IO, чтобы продемонстрировать возможные преимущества в производительности и возможности масштабирования файловой системы Lustre. Сначала мы проведем простой тест с помощью утилиты «dd», чтобы записать файл размером 5 ГБ в наш каталог «stripe_one». Выполните следующую команду:

sudo dd if=/dev/zero of=stripe_one/test bs=1M count=5000

Процесс записи 5 ГБ данных в файловую систему занимает в среднем около 27 секунд при записи на один постоянный диск (PD) на одном сервере объектного хранения (OSS).

Чтобы протестировать чередование между несколькими OSS и, следовательно, несколькими PD, нам просто нужно изменить выходной каталог, в который мы записываем. Выполните следующую команду:

sudo dd if=/dev/zero of=stripe_all/test bs=1M count=5000

Обратите внимание, что мы изменили «of=stripe_one/test» на «of=stripe_all/test». Это позволит нашему единому потоку записи распределять записи по всем нашим серверам объектного хранилища и выполнять запись в среднем за 5,5 секунды, что примерно в 4 раза быстрее при использовании четырех OSS.

Эта производительность продолжает расти по мере добавления серверов объектного хранения, и вы можете добавлять OSS с файловой системой в режиме онлайн и начинать чередование данных на них для увеличения емкости и производительности в режиме онлайн. Возможности использования Lustre на Google Cloud Platform безграничны, и мы рады видеть, что вы можете создать и какие проблемы вы можете решить.

8. Заключение

Поздравляем, вы создали кластер Lustre на Google Cloud Platform! Вы можете использовать эти сценарии в качестве отправной точки для создания собственного кластера Lustre и для его интеграции с кластером облачных вычислений.

Очистка развертывания

Выход из узла Lustre:

exit

Вы можете легко очистить развертывание после того, как мы закончим, выполнив следующую команду из Google Cloud Shell после выхода из кластера Lustre:

gcloud deployment-manager deployments delete lustre

При появлении запроса введите Y , чтобы продолжить. Эта операция может занять некоторое время, наберитесь терпения.

Удалить проект

Для очистки мы просто удаляем наш проект.

  • В меню навигации выберите IAM & Admin.
  • Затем нажмите на настройки в подменю.
  • Нажмите на значок корзины с текстом «Удалить проект».
  • Следуйте инструкциям подсказок

Что мы рассмотрели

  • Как использовать службу диспетчера развертывания GCP.
  • Как настроить и развернуть файловую систему Lustre на GCP.
  • Как настроить чередование и протестировать простой ввод-вывод в файловую систему Lustre.

Найти поддержку

Вы создаете что-то классное, используя сценарии менеджера развертывания Lustre? Есть вопросы? Пообщайтесь с нами в дискуссионной группе Google Cloud Lustre . Чтобы запросить функции, оставить отзыв или сообщить об ошибках, воспользуйтесь этой формой или внесите изменения в код и отправьте запрос на включение! Хотите поговорить с экспертом по Google Cloud? Свяжитесь с командой Google Cloud сегодня через веб-сайт высокопроизводительных вычислений Google Cloud .

Узнать больше

Обратная связь

Пожалуйста, отправьте отзыв об этой кодовой лаборатории , используя эту ссылку . Оформление обратной связи занимает менее 5 минут. Спасибо!