Параллельная виртуальная файловая система - Parallel Virtual File System - Wikipedia
Оригинальный автор (ы) | Университет Клемсона, Аргоннская национальная лаборатория, Суперкомпьютерный центр Огайо |
---|---|
Разработчики) | Уолт Лигон, Роб Росс, Фил Карнс, Пит Вайкофф, Нил Миллер, Роб Лэтэм, Сэм Лэнг, Брэд Сеттлмайер |
изначальный выпуск | 2003 |
Стабильный выпуск | 2.8.2 / 1 января 2010 г. |
Написано в | C |
Операционная система | Ядро Linux |
Лицензия | LGPL |
Интернет сайт | сеть |
В Параллельная виртуальная файловая система (PVFS) является Открытый исходный код параллельная файловая система. Параллельная файловая система - это разновидность распределенная файловая система который распределяет данные файлов между несколькими серверами и обеспечивает одновременный доступ для нескольких задач параллельного приложения. PVFS был разработан для использования в больших масштабах кластерные вычисления. PVFS ориентирован на высокопроизводительный доступ к большим наборам данных. Он состоит из серверного процесса и клиентской библиотеки, которые полностью написаны на уровне кода пользователя. А Linux Модуль ядра и процесс pvfs-client позволяют монтировать файловую систему и использовать ее со стандартными утилитами. Клиентская библиотека обеспечивает высокопроизводительный доступ через интерфейс передачи сообщений (MPI). PVFS разрабатывается совместно Лабораторией исследований параллельной архитектуры в Университет Клемсона и Отделение математики и информатики в Аргоннская национальная лаборатория, а Суперкомпьютерный центр Огайо. Разработка PVFS финансировалась Центром космических полетов имени Годдарда НАСА, Программой перспективных научных исследований Министерства энергетики США, программами NSF PACI и HECURA, а также другими государственными и частными агентствами. PVFS теперь известен как OrangeFS в новейшей ветке разработки.
История
PVFS была впервые разработана в 1993 году Уолтом Лигоном и Эриком Блюмером как параллельная файловая система для Параллельная виртуальная машина (PVM) [1] в рамках гранта НАСА на изучение шаблонов ввода-вывода параллельных программ. PVFS версии 0 была основана на Vesta, параллельной файловой системе, разработанной в IBM. Исследовательский центр Т. Дж. Уотсона.[2] Начиная с 1994 года Роб Росс переписал PVFS для использования TCP / IP и отошли от многих оригинальных идей Vesta. PVFS версии 1 был нацелен на кластер DEC Рабочие станции Alpha объединены в сеть с помощью коммутируемых FDDI. Как и Vesta, PVFS распределяет данные по нескольким серверам и разрешает запросы ввода-вывода на основе представления файла, описывающего схему последовательного доступа. В отличие от Весты, чередование и просмотр не зависели от общего размера записи. Исследование Росс было сосредоточено на планировании дискового ввода-вывода, когда несколько клиентов обращались к одному и тому же файлу.[3] Предыдущие результаты показали, что предпочтительнее планирование в соответствии с наилучшей возможной схемой доступа к диску. Росс показал, что это зависит от ряда факторов, включая относительную скорость сети и детали просмотра файлов. В некоторых случаях планирование на основе сетевого трафика было предпочтительнее, поэтому динамически адаптируемое расписание обеспечивало наилучшую общую производительность.[4]
В конце 1994 года Лигон встретился с Томасом Стерлингом и Джоном Дорбандом в Центр космических полетов Годдарда (GSFC) и обсудили свои планы по созданию первого Беовульф компьютер.[5] Было согласовано, что PVFS будет перенесен на Linux и будет использоваться на новой машине. В течение следующих нескольких лет Лигон и Росс работали с группой GSFC, включая Дональда Беккера, Дэна Риджа и Эрика Хендрикса. В 1997 году на собрании кластера в Пасадене CA Sterling попросила выпустить PVFS как пакет с открытым исходным кодом.[6]
PVFS2
В 1999 году Ligon предложил разработать новую версию PVFS, первоначально получившую название PVFS2000, а затем PVFS2. Первоначально дизайн был разработан Лигоном, Россом и Филом Карнсом. Росс получил докторскую степень в 2000 году и переехал в Аргоннская национальная лаборатория а разработка и реализация были выполнены Лигоном, Карнсом, Дейлом Уитчерчем и Харишем Рамачандраном в Университет Клемсона, Росс, Нил Миллер и Роб Лэтэм в Аргоннская национальная лаборатория и Пит Вайкофф из суперкомпьютерного центра Огайо.[7] Новая файловая система была выпущена в 2003 году. В новом дизайне были предусмотрены серверы объектов, распределенные метаданные, представления, основанные на MPI, поддержка нескольких типов сетей и программная архитектура для упрощения экспериментов и расширения.
PVFS версии 1 была удалена в 2005 году. PVFS версии 2 все еще поддерживается Клемсоном и Аргонном. Карнс защитил докторскую диссертацию в 2006 году и присоединился к Axicom, Inc., где PVFS была развернута на нескольких тысячах узлов для интеллектуального анализа данных. В 2008 году Карнс переехал в Аргонн и продолжает работать над PVFS вместе с Россом, Лэтэмом и Сэмом Лэнгом. Брэд Сеттлмайер разработал в Клемсоне подсистему зеркалирования, а затем детальное моделирование PVFS, используемое для исследования новых разработок. Сеттлмайер сейчас на Национальная лаборатория Окриджа. в 2007 году Argonne начал переносить PVFS для использования на IBM Синий ген /П.[8] В 2008 году Клемсон начал разработку расширений для поддержки больших каталогов небольших файлов, улучшений безопасности и возможностей избыточности. Поскольку многие из этих целей противоречили разработке Blue Gene, была создана вторая ветвь дерева исходных текстов CVS, получившая название «Оранжевая», а исходная ветвь - «Синяя». PVFS и OrangeFS отслеживают друг друга очень внимательно, но представляют две разные группы требований пользователей. Большинство исправлений и обновлений применяются к обеим веткам. По состоянию на 2011 г. OrangeFS это основное направление развития.
Функции
В кластере, использующем PVFS, узлы обозначаются как один или несколько из следующих: клиент, сервер данных, сервер метаданных. Серверы данных хранят данные файлов, серверы метаданных содержат метаданные, включая статистическую информацию, атрибуты и дескрипторы файлов данных, а также записи каталога. Клиенты запускают приложения, которые используют файловую систему, отправляя запросы на серверы по сети.
Объектно-ориентированный дизайн
PVFS имеет объектно-ориентированный дизайн, то есть все запросы сервера PVFS включают объекты, называемые пространствами данных. Пространство данных может использоваться для хранения данных файла, метаданных файла, метаданных каталога, записей каталога или символических ссылок. Каждое пространство данных в файловой системе имеет уникальный дескриптор. Любой клиент или сервер может найти, какой сервер содержит пространство данных, на основе дескриптора. Пространство данных состоит из двух компонентов: потока байтов и набора пар ключ / значение. Поток байтов - это упорядоченная последовательность байтов, обычно используемая для хранения данных файла, а пары ключ / значение обычно используются для хранения метаданных. Объектно-ориентированный дизайн стал типичным для многих распределенных файловых систем, включая Блеск, Панасас, и pNFS.
Разделение данных и метаданных
PVFS разработан таким образом, что клиент может получить доступ к серверу для метаданных один раз, а затем может получить доступ к серверам данных без дальнейшего взаимодействия с серверами метаданных. Это устраняет критическое узкое место в системе и позволяет значительно повысить производительность.
Запросы на основе MPI
Когда клиентская программа запрашивает данные у PVFS, она может предоставить описание данных на основе MPI_Datatypes. Эта возможность позволяет напрямую реализовывать представления файлов MPI файловой системой. MPI_Datatypes может описывать сложные несмежные шаблоны данных. Сервер PVFS и коды данных реализуют потоки данных, которые эффективно передают данные между несколькими серверами и клиентами.
Поддержка нескольких сетей
PVFS использует сетевой уровень с именем BMI, который предоставляет неблокирующий интерфейс сообщений, разработанный специально для файловых систем. BMI имеет несколько модулей реализации для ряда различных сетей, используемых в высокопроизводительных вычислениях, включая TCP / IP, Myrinet, Infiniband, и Порталы.[9]
Серверы без сохранения состояния (без блокировки)
Серверы PVFS спроектированы так, что они не передают никакого состояния друг другу или клиентам. В случае сбоя одного сервера на его месте можно легко перезапустить другой. Обновления выполняются без использования блокировок.
Реализация на уровне пользователя
Клиенты и серверы PVFS работают на уровне пользователя. Модификации ядра не нужны. Существует дополнительный модуль ядра, который позволяет монтировать файловую систему PVFS, как любую другую файловую систему, или программы могут напрямую связываться с пользовательским интерфейсом, например MPI-IO или Posix -подобный интерфейс. Эта функция упрощает установку PVFS и снижает вероятность сбоев системы.
Интерфейс системного уровня
Интерфейс PVFS предназначен для интеграции на системном уровне. Он имеет сходство с Linux VFS, что упрощает реализацию в виде монтируемой файловой системы, но в равной степени адаптируется к интерфейсам пользовательского уровня, таким как MPI-IO или же Posix -подобные интерфейсы. Он предоставляет многие функции базовой файловой системы, так что интерфейсы могут использовать их при желании.[10][11]
Архитектура
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 и flow и сообщения об их завершении. Он также реализует планировщик запросов как неблокирующее задание, которое записывает, какие запросы выполняются для каких объектов, и предотвращает ошибки согласованности из-за одновременной работы с одними и теми же данными файла.
Trove
Trove управляет вводом-выводом для объектов, хранящихся на локальном сервере. Trove работает с коллекциями пространств данных. Коллекция имеет собственное независимое пространство дескрипторов и используется для реализации отдельных файловых систем PVFS. Пространство данных представляет собой объект PVFS и имеет свой собственный уникальный дескриптор (внутри коллекции) и хранится на одном сервере. Дескрипторы сопоставляются с серверами через таблицу в файле конфигурации. Пространство данных состоит из двух частей: потока байтов и набора пар ключ / значение. Поток байтов - это последовательность байтов неопределенной длины, которая используется для хранения данных файла, обычно в файле в локальной файловой системе. Пары ключ / значение используются для хранения метаданных, атрибутов и записей каталога. Trove имеет четко определенный интерфейс и может быть реализован различными способами. На сегодняшний день единственной реализацией была реализация Trove-dbfs, которая хранит байтовые потоки в файлах и пары ключ / значение в Berkeley DB база данных.[12] Операции Trove являются неблокирующими, API предоставляет функции публикации для чтения или записи различных компонентов и функций для проверки или ожидания завершения.
ИМТ
Потоки
pvfslib
PVFS-клиентское ядро
Модуль ядра PVFS
Смотрите также
Рекомендации
- ^ А. Блумер и В. Б. Лигон, "Параллельная виртуальная файловая система", 1994 г. Встреча группы пользователей PVM, 1994 г.
- ^ Питер Ф. Корбетт, Дрор Г. Фейтельсон, Параллельная файловая система Vesta, Транзакции ACM в компьютерных системах (TOCS), т. 14, № 3, стр. 225-264, август 1996 г.
- ^ В. Б. Лигон, III, и Р. Б. Росс, "Реализация и производительность параллельной файловой системы для высокопроизводительных распределенных приложений", 5-й симпозиум IEEE по высокопроизводительным распределенным вычислениям, август 1996 г.
- ^ В. Б. Лигон, III, и Р. Б. Росс, «Планирование на стороне сервера в кластерных системах параллельного ввода-вывода», Параллельный ввод-вывод для кластерных вычислений, редакторы Кристофа Серена и Хай Цзинь, страницы 157–177, Kogan Page Science, сентябрь 2003 г. .
- ^ В. Б. Лигон III, Р. Б. Росс, Д. Беккер, П. Мерки, «Беовульф: недорогие суперкомпьютеры с использованием Linux», специальный выпуск журнала IEEE Software по Linux, том 16, номер 1, стр. 79, январь 1999 г.
- ^ Уолт Лигон и Роб Росс, "Параллельный ввод-вывод и параллельная виртуальная файловая система", Кластерные вычисления Беовульфа с Linux, 2-е издание, Уильям Гропп, Юинг Ласк и Томас Стерлинг, редакторы, страницы 489-530, MIT Press, ноябрь, 2003 г.
- ^ П. Х. Карнс, В. Б. Лигон III, Р. Б. Росс и Р. Такур, "PVFS: параллельная файловая система для кластеров Linux", Семинар по Extreme Linux, Атланта, октябрь 2000 г. Лучший доклад конференции.
- ^ Сэмюэл Лэнг, Филип Карнс, Роберт Лэтэм, Роберт Росс, Кевин Хармс, Уильям Олкок, «Проблемы производительности ввода-вывода на уровне лидерства», Proceedings of Supercomputing, 2009 г.
- ^ Филип Х. Карнс, Уолтер Б. III, Роберт Росс, Пит Вайкофф, «BMI: уровень сетевой абстракции для параллельного ввода-вывода», Протоколы IPDPS '05, 2005
- ^ М. Вилаяннур, С. Ланг, Р. Росс, Р. Клундт, Л. Уорд, «Расширение интерфейса ввода-вывода POSIX: перспектива параллельной файловой системы», Технический меморандум ANL / MCS-TM-302, 2008 г.
- ^ Свапнил А. Патил, Гарт А. Гибсон, Грегори Р. Гангер, Хулио Лопес, Майло Полте, Виттават Тантисиродж, Лин Сяо, «В поисках API для масштабируемых файловых систем: под таблицей или над ней?», USENIX HotCloud Workshop 2009 г.
- ^ RCE 35: Параллельная виртуальная файловая система PVFS
внешняя ссылка
- Официальный веб-сайт
- Файловая система Orange - Ветвь параллельной виртуальной файловой системы
- Архитектура параллельной файловой системы нового поколения
- Видео архив