Параллельная виртуальная файловая система - Parallel Virtual File System

Параллельная виртуальная файловая система
Оригинальный автор (ы) Университет Клемсона , Аргоннская национальная лаборатория , Суперкомпьютерный центр Огайо
Разработчики) Уолт Лигон, Роб Росс, Фил Карнс, Пит Вайкофф, Нил Миллер, Роб Лэтэм, Сэм Лэнг, Брэд Сеттлмайер
изначальный выпуск 2003 г.
Стабильный выпуск
2.8.2 / 1 января 2010 г . ; 11 лет назад  ( 01.01.2010 )
Написано в C
Операционная система Ядро Linux
Лицензия LGPL
Интернет сайт web .archive .org / web / 20160701052501 / http: // www .pvfs .org /

Parallel Virtual File System ( PVFS ) является открытым исходным кодом , параллельной файловой системы . Параллельная файловая система - это тип распределенной файловой системы, которая распределяет данные файлов между несколькими серверами и обеспечивает одновременный доступ для нескольких задач параллельного приложения. PVFS был разработан для использования в крупномасштабных кластерных вычислениях . PVFS ориентирован на высокопроизводительный доступ к большим наборам данных. Он состоит из серверного процесса и клиентской библиотеки, которые полностью написаны на уровне кода пользователя. Модуль ядра Linux и процесс pvfs-client позволяют монтировать файловую систему и использовать ее со стандартными утилитами. Клиентская библиотека обеспечивает высокопроизводительный доступ через интерфейс передачи сообщений (MPI). PVFS разрабатывается совместно Лабораторией исследований параллельной архитектуры в Университете Клемсона, отделом математики и информатики Аргоннской национальной лаборатории и Суперкомпьютерным центром Огайо . Разработка PVFS финансировалась Центром космических полетов имени Годдарда НАСА , Программой перспективных научных исследований Министерства энергетики США, программами NSF PACI и HECURA, а также другими государственными и частными агентствами. PVFS теперь известен как OrangeFS в своей новейшей ветке разработки.

История

PVFS была впервые разработана в 1993 году Уолтом Лигоном и Эриком Блюмером как параллельная файловая система для параллельной виртуальной машины (PVM) в рамках гранта НАСА для изучения шаблонов ввода-вывода параллельных программ. PVFS версии 0 была основана на Vesta, параллельной файловой системе, разработанной в исследовательском центре IBM TJ Watson Research Center . Начиная с 1994 года Роб Росс переписал PVFS, чтобы использовать TCP / IP, и отошел от многих оригинальных идей Vesta. PVFS версии 1 был нацелен на кластер рабочих станций DEC Alpha, объединенных в сеть с использованием коммутируемого FDDI . Как и Vesta, PVFS распределяет данные по нескольким серверам и разрешает запросы ввода-вывода на основе представления файла, описывающего схему последовательного доступа. В отличие от Весты, чередование и просмотр не зависели от общего размера записи. Исследование Росс было сосредоточено на планировании дискового ввода-вывода, когда несколько клиентов обращались к одному и тому же файлу. Предыдущие результаты показали, что предпочтительнее планирование в соответствии с наилучшей возможной схемой доступа к диску. Росс показал, что это зависит от ряда факторов, включая относительную скорость сети и детали просмотра файлов. В некоторых случаях предпочтительнее было планирование на основе сетевого трафика, поэтому динамически адаптируемое расписание обеспечивало наилучшую общую производительность.

В конце 1994 года Лигон встретился с Томасом Стерлингом и Джоном Дорбандом в Центре космических полетов Годдарда (GSFC) и обсудил их планы по созданию первого компьютера Беовульф . Было согласовано, что PVFS будет перенесен на Linux и будет использоваться на новой машине. В течение следующих нескольких лет Лигон и Росс работали с группой GSFC, включая Дональда Беккера, Дэна Риджа и Эрика Хендрикса. В 1997 году на собрании кластера в Пасадене CA Sterling попросила выпустить PVFS как пакет с открытым исходным кодом.

PVFS2

В 1999 году Ligon предложил разработать новую версию PVFS, первоначально получившую название PVFS2000, а затем PVFS2. Первоначально дизайн был разработан Лигоном, Россом и Филом Карнсом. Росс защитил докторскую диссертацию в 2000 году и перешел в Аргоннскую национальную лабораторию, а разработка и внедрение были выполнены Лигоном, Карнсом, Дейлом Уитчерчем и Харишем Рамачандраном в Университете Клемсона , Россом, Нилом Миллером и Робом Лэтэмом в Аргоннской национальной лаборатории и Питом. Вайкофф в суперкомпьютерном центре Огайо. Новая файловая система была выпущена в 2003 году. В новом дизайне были предусмотрены серверы объектов, распределенные метаданные, представления на основе MPI, поддержка нескольких типов сетей и программная архитектура для упрощения экспериментов и расширяемости.

PVFS версии 1 был отменен в 2005 году. PVFS версии 2 все еще поддерживается Клемсоном и Аргонном. Карнс защитил докторскую диссертацию в 2006 году и присоединился к Axicom, Inc., где PVFS была развернута на нескольких тысячах узлов для интеллектуального анализа данных. В 2008 году Карнс переехал в Аргонн и продолжает работать над PVFS вместе с Россом, Лэтэмом и Сэмом Лэнгом. Брэд Сеттлмайер разработал в Клемсоне подсистему зеркалирования, а затем детальное моделирование PVFS, используемое для исследования новых разработок. Сеттлмайер сейчас находится в Национальной лаборатории Ок-Ридж . в 2007 году Argonne начал перенос PVFS для использования на IBM Blue Gene / P. В 2008 году Клемсон начал разработку расширений для поддержки больших каталогов небольших файлов, улучшений безопасности и возможностей резервирования. Поскольку многие из этих целей противоречили разработке Blue Gene, была создана вторая ветвь дерева исходных текстов CVS, получившая название «Orange», а исходная ветвь - «Blue». PVFS и OrangeFS очень близко отслеживают друг друга, но представляют две разные группы требований пользователей. Большинство исправлений и обновлений применяются к обеим веткам. По состоянию на 2011 год основным направлением разработки является OrangeFS .

Функции

В кластере, использующем PVFS, узлы обозначаются как один или несколько из следующих: клиент, сервер данных, сервер метаданных. Серверы данных хранят данные файлов. Серверы метаданных содержат метаданные, включая статистическую информацию, атрибуты и дескрипторы файлов данных, а также записи каталога. Клиенты запускают приложения, которые используют файловую систему, отправляя запросы на серверы по сети.

Объектно-ориентированный дизайн

PVFS имеет объектно-ориентированный дизайн, то есть все запросы сервера PVFS включают объекты, называемые пространствами данных. Пространство данных может использоваться для хранения данных файла, метаданных файла, метаданных каталога, записей каталога или символических ссылок. Каждое пространство данных в файловой системе имеет уникальный дескриптор. Любой клиент или сервер может найти, какой сервер содержит пространство данных, на основе дескриптора. Пространство данных состоит из двух компонентов: потока байтов и набора пар ключ / значение. Поток байтов - это упорядоченная последовательность байтов, обычно используемая для хранения данных файла, а пары ключ / значение обычно используются для хранения метаданных. Объектно -ориентированный дизайн стал типичным для многих распределенных файловых систем, включая Lustre , Panasas и pNFS .

Разделение данных и метаданных

PVFS разработан так, что клиент может получить доступ к серверу для метаданных один раз, а затем может получить доступ к серверам данных без дальнейшего взаимодействия с серверами метаданных. Это устраняет критическое узкое место в системе и позволяет значительно повысить производительность.

Запросы на основе MPI

Когда клиентская программа запрашивает данные у PVFS, она может предоставить описание данных, основанное на типах MPI_Datatypes. Эта возможность позволяет напрямую реализовывать представления файлов MPI файловой системой. MPI_Datatypes может описывать сложные несмежные шаблоны данных. Сервер PVFS и коды данных реализуют потоки данных, которые эффективно передают данные между несколькими серверами и клиентами.

Поддержка нескольких сетей

PVFS использует сетевой уровень BMI, который обеспечивает неблокирующий интерфейс сообщений, разработанный специально для файловых систем. BMI имеет несколько модулей реализации для ряда различных сетей, используемых в высокопроизводительных вычислениях, включая TCP / IP, Myrinet , Infiniband и порталы .

Серверы без сохранения состояния (без блокировки)

Серверы PVFS спроектированы таким образом, что они не передают никакого состояния друг другу или клиентам. Если один сервер выходит из строя, вместо него можно легко перезапустить другой. Обновления выполняются без использования блокировок.

Реализация на уровне пользователя

Клиенты и серверы PVFS работают на уровне пользователя. Модификации ядра не нужны. Существует дополнительный модуль ядра, который позволяет монтировать файловую систему PVFS, как любую другую файловую систему, или программы могут напрямую связываться с пользовательским интерфейсом, таким как MPI-IO или Posix- подобный интерфейс. Эта функция упрощает установку PVFS и снижает вероятность сбоев системы.

Интерфейс системного уровня

Интерфейс PVFS предназначен для интеграции на системном уровне. Он имеет сходство с Linux VFS , что упрощает реализацию в качестве монтируемой файловой системы, но в равной степени адаптируется к интерфейсам пользовательского уровня, таким как интерфейсы, подобные MPI-IO или Posix . Он предоставляет многие функции базовой файловой системы, так что интерфейсы могут использовать их при желании.

Архитектура

PVFS состоит из 4 основных компонентов и ряда служебных программ. Компонентами являются PVFS2-сервер, pvfslib, PVFS-client-core и модуль ядра PVFS. Утилиты включают инструмент управления кармой, утилиты (например, pvfs-ping, pvfs-ls, pvfs-cp и т. Д.), Которые работают непосредственно с файловой системой без использования модуля ядра (в основном для обслуживания и тестирования). Другой ключевой момент проектирования - протокол PVFS, который описывает сообщения, передаваемые между клиентом и сервером, хотя это не строго компонент.

PVFS2-сервер

Сервер PVFS работает как процесс на узле, обозначенном как узел ввода-вывода. Узлы ввода-вывода часто являются выделенными узлами, но могут быть и обычными узлами, которые также выполняют задачи приложений. Сервер PVFS обычно запускается от имени пользователя root, но при желании может быть запущен и от имени пользователя. Каждый сервер может управлять несколькими отдельными файловыми системами и предназначен для работы как сервер метаданных, сервер данных или и то, и другое. Вся конфигурация управляется файлом конфигурации, указанным в командной строке, и все серверы, управляющие данной файловой системой, используют один и тот же файл конфигурации. Сервер получает запросы по сети, выполняет запрос, который может включать дисковый ввод-вывод, и отвечает исходной запросившей стороне. Запросы обычно поступают от клиентских узлов, на которых выполняются задачи приложения, но могут поступать и с других серверов. Сервер состоит из обработчика запросов, уровня заданий, Trove, BMI и потоковых слоев.

Обработчик запросов

Обработчик запросов состоит из основного цикла серверного процесса и ряда конечных автоматов. Конечные автоматы основаны на простом языке, разработанном для PVFS, который управляет параллелизмом на сервере и на клиенте. Конечный автомат состоит из ряда состояний, каждое из которых либо запускает функцию действия состояния C, либо вызывает вложенный (подпрограммный) конечный автомат. В любом случае коды возврата выбирают, в какое состояние перейти дальше. Функции действия состояния обычно отправляют задание через уровень заданий, который выполняет какой-либо ввод-вывод через Trove или BMI. Задания не являются блокирующими, так что после выдачи задания выполнение конечного автомата откладывается, чтобы другой конечный автомат мог запустить обслуживание другого запроса. Когда задания завершены, основной цикл перезапускает связанный конечный автомат. Процессор запросов имеет конечные автоматы для каждого из различных типов запросов, определенных в протоколе запросов PVFS, а также ряд вложенных конечных автоматов, используемых внутри. Архитектура конечного автомата позволяет относительно легко добавлять новые запросы к серверу для добавления функций или оптимизации для конкретных ситуаций.

Слой работы

Уровень заданий предоставляет общий интерфейс для отправки заданий Trove, BMI и потока и сообщения об их завершении. Он также реализует планировщик запросов как неблокирующее задание, которое записывает, какие запросы выполняются для каких объектов, и предотвращает ошибки согласованности из-за одновременной работы с одними и теми же данными файла.

Trove

Trove управляет вводом-выводом для объектов, хранящихся на локальном сервере. Trove работает с коллекциями пространств данных. Коллекция имеет собственное независимое пространство дескрипторов и используется для реализации отдельных файловых систем PVFS. Пространство данных представляет собой объект PVFS и имеет свой собственный уникальный дескриптор (внутри коллекции) и хранится на одном сервере. Дескрипторы отображаются на серверы через таблицу в файле конфигурации. Пространство данных состоит из двух частей: потока байтов и набора пар ключ / значение. Поток байтов - это последовательность байтов неопределенной длины, которая используется для хранения данных файла, обычно в файле в локальной файловой системе. Пары ключ / значение используются для хранения метаданных, атрибутов и записей каталога. Trove имеет четко определенный интерфейс и может быть реализован различными способами. На сегодняшний день единственной реализацией была реализация Trove-dbfs, которая хранит байтовые потоки в файлах и пары ключ / значение в базе данных Berkeley DB . Операции Trove являются неблокирующими, API предоставляет функции публикации для чтения или записи различных компонентов и функций для проверки или ожидания завершения.

ИМТ

Потоки

pvfslib

PVFS-клиентское ядро

Модуль ядра PVFS

Смотрите также

Рекомендации

внешняя ссылка