Введение
Тип распределенной файловой системы Параллельная виртуальная файловая система (PVFS) - это параллельная файловая система с открытым исходным кодом. Параллельная файловая система - это тип распределенной файловой системы, которая распределяет файловые данные на нескольких серверах и обеспечивает одновременный доступ нескольких задач параллельного приложения. PVFS был разработан для использования в крупномасштабных кластерных вычислениях. PVFS фокусируется на высокопроизводительном доступе к большим наборам данных. Он состоит из серверного процесса и клиентской библиотеки, оба из которых написаны полностью на уровне пользователя. Модуль ядра Linux и клиентский процесс pvfs позволяют монтировать файловую систему и использовать ее со стандартными утилитами. Клиентская библиотека обеспечивает высокопроизводительный доступ через интерфейс передачи сообщений (MPI). PVFS разрабатывается совместно между Исследовательской лабораторией параллельной архитектуры в Университете Клемсона и Отделом математики и компьютерных наук в Национальной лаборатории Аргонн и Центром суперкомпьютеров Огайо. Разработка PVFS финансировалась NASA Goddard Space Flight Center, Офисом DOE по науке программы Advanced Scientific Computing Research, NSF PACI и HECURA, а также другими правительственными и частными агентствами. PVFS теперь известна как OrangeFS в своей новейшей отрасли развития.
The Parallel Virtual File System (PVFS) is an open source parallel file system. A parallel file system is a type of distributed file system that distributes file data across multiple servers and provides for concurrent access by multiple tasks of a parallel application. PVFS was designed for use in large scale cluster computing. PVFS focuses on high performance access to large data sets. It consists of a server process and a client library, both of which are written entirely of user level code. A Linux kernel module and pvfs client process allow the file system to be mounted and used with standard utilities. The client library provides for high performance access via the message passing interface (MPI). PVFS is being jointly developed between The Parallel Architecture Research Laboratory at Clemson University and the Mathematics and Computer Science Division at Argonne National Laboratory, and the Ohio Supercomputer Center. PVFS development has been funded by NASA Goddard Space Flight Center, The DOE Office of Science Advanced Scientific Computing Research program, NSF PACI and HECURA programs, and other government and private agencies. PVFS is now known as OrangeFS in its newest development branch.
История
PVFS был впервые разработан в 1993 году Уолтом Лигоном и Эриком Блюмером как параллельная файловая система для параллельной виртуальной машины (PVM) в рамках гранта НАСА для изучения шаблонов ввода-вывода параллельных программ. PVFS версия 0 была основана на Vesta, параллельной файловой системе, разработанной в IBM T. J. Watson Research Center. Начиная с 1994 года Роб Росс переписал PVFS для использования TCP/IP и отошёл от многих из первоначальных конструктивных моментов Vesta. PVFS версии 1 была нацелена на кластер рабочих станций DEC Alpha, связанных в сеть с использованием коммутируемой FDDI. Как и Vesta, PVFS распределял данные по нескольким серверам и разрешал вводы и выводы запросов на основе файлового вида, который описывал параллельный доступ. В отличие от Vesta, полоса и вид не зависели от общего размера записи. Исследования Росса были сосредоточены на планировании ввода/вывода диска, когда несколько клиентов получали доступ к одному и тому же файлу. Предыдущие результаты показали, что планирование в соответствии с наилучшей возможной моделью доступа к диску предпочтительнее. Росс показал, что это зависит от ряда факторов, включая относительную скорость сети и детали просмотра файлов. В некоторых случаях предпочтительнее было использовать расписание, основанное на сетевом трафике, поэтому динамически адаптируемый график обеспечивал наилучшую общую производительность. В конце 1994 года Лигон встретился с Томасом Стерлингом и Джоном Дорбандом в Центре космических полетов Годдарда (GSFC) и обсудил их планы по созданию первого компьютера Beowulf. Было согласовано, что PVFS будет портироваться на Linux и будет представлен на новой машине. В течение следующих нескольких лет Лигон и Росс работали с группой GSFC, включая Дональда Беккера, Дэна Риджа и Эрика Хендрикса. В 1997 году на собрании кластера в Пасадене CA Sterling попросил, чтобы PVFS был выпущен в качестве пакета с открытым исходным кодом.
PVFS2
В 1999 году Ligon предложил разработать новую версию PVFS, первоначально названную PVFS2000, а позже PVFS2. Дизайн был первоначально разработан Лигоном, Россом и Филом Карнсом. Росс закончил докторскую степень в 2000 году и переехал в Национальную лабораторию Аргонн, а проектирование и реализация были выполнены Лигоном, Карнсом, Дейлом Витчерчем и Харишем Рамачандраном в Университете Клемсона, Россом, Нилом Миллером и Робом Латемом в Национальной лаборатории Аргонн и Питом Уайкоффом в Центре суперкомпьютеров Огайо. Новая файловая система была выпущена в 2003 году. Новый дизайн включал объектные серверы, распределенные метаданные, представления на основе MPI, поддержку нескольких типов сетей и архитектуру программного обеспечения для легкого экспериментирования и расширяемости. PVFS версии 1 была выведена из эксплуатации в 2005 году. PVFS версия 2 по-прежнему поддерживается Clemson и Argonne. Карнс закончил докторскую степень в 2006 году и присоединился к Axicom, Inc., где PVFS был развернут на нескольких тысячах узлов для добычи данных. В 2008 году Карнс переехал в Аргонн и продолжает работать над PVFS вместе с Россом, Лэтом и Сэмом Лэнгом. Брэд Сеттлмайер разработал зеркальную подсистему в Клемсоне, а позже детальную симуляцию PVFS, используемую для исследования новых разработок. Сеттлмайер сейчас в Национальной лаборатории Оук Ридж. В 2007 году Argonne начал портировать PVFS для использования на IBM Blue Gene/P. В 2008 году Clemson начал разрабатывать расширения для поддержки больших каталогов небольших файлов, улучшения безопасности и возможности избыточности. Поскольку многие из этих целей противоречили разработке Blue Gene, была создана вторая ветвь источника CVS и получила название "Оранжевый", а первоначальная ветвь получила название "Голубой". PVFS и OrangeFS очень близки друг к другу, но представляют собой две разные группы пользовательских требований. Большинство патчей и обновлений применяются к обеим ветвям. С 2011 года OrangeFS является основной линией разработки.
Особенности
В кластере, использующем PVFS, узлы обозначаются как один или несколько из следующих: клиент, сервер данных, сервер метаданных. Серверы данных хранят файловые данные. Серверы метаданных содержат метаданные, включая статистическую информацию, атрибуты и рукоятки файлов данных, а также записи каталогов. Клиенты запускают приложения, которые используют файловую систему, отправляя запросы на серверы через сеть.
Объектно-ориентированный дизайн
PVFS имеет объектную конструкцию, то есть все запросы сервера PVFS включают объекты, называемые пространствами данных. Пространство данных может использоваться для хранения файловых данных, метаданных файлов, метаданных каталогов, записей каталогов или символических ссылок. Каждое пространство данных в файловой системе имеет уникальную ручку. Любой клиент или сервер может посмотреть, какой сервер держит пространство данных на основе ручки. Пространство данных имеет два компонента: байт-поток тестирования и набор пар ключей/значений. Байт-поток - это упорядоченная последовательность байтов, обычно используемая для хранения файловых данных, а пары ключей/значений обычно используются для хранения метаданных. Объектный дизайн стал типичным для многих распределенных файловых систем, включая Lustre, Panasas и pNFS.
Разделение данных и метаданных
PVFS разработана таким образом, чтобы клиент мог получить доступ к серверу для метаданных один раз, а затем мог получить доступ к серверам данных без дальнейшего взаимодействия с серверами метаданных. Это устраняет критическое узкое место в системе и позволяет намного больше производительности.
Запросы на основе МПИ
Когда клиентская программа запрашивает данные из PVFS, она может предоставить описание данных, основанное на типах данных MPI. Эта функция позволяет MPI файловые представления непосредственно реализованы файловой системой. MPI Datatypes могут описывать сложные неконтигентные паттерны данных. Сервер PVFS и коды данных реализуют потоки данных, которые эффективно передают данные между несколькими серверами и клиентами.
Поддержка нескольких сетей
PVFS использует сетевой уровень под названием BMI, который обеспечивает не блокирующий интерфейс сообщений, разработанный специально для файловых систем. BMI имеет несколько модулей реализации для ряда различных сетей, используемых в высокопроизводительных вычислениях, включая TCP / IP, Myrinet, Infiniband и Portals.
Серверы без государства (без блокировки)
Серверы PVFS разработаны таким образом, чтобы они не делились никаким состоянием друг с другом или с клиентами. Если один сервер выходит из строя, другой может быть легко перезапущен на его месте. Обновления выполняются без использования замков.
Реализация на уровне пользователя
Клиенты и серверы PVFS работают на уровне пользователя. Модификации ядра не нужны. Существует дополнительный модуль ядра, который позволяет монтировать файловую систему PVFS, как и любую другую файловую систему, или программы могут напрямую связываться с пользовательским интерфейсом, таким как MPI IO или Posix, как интерфейс. Благодаря этим особенностям PVFS легко устанавливается и менее подвержен возникновению сбоев системы.
Интерфейс на уровне системы
Интерфейс PVFS предназначен для интеграции на системном уровне. Он имеет сходство с Linux VFS, что позволяет легко реализовать его как монтируемую файловую систему, но в равной степени адаптируется к пользовательским интерфейсам, таким как MPI IO или Posix. Он раскрывает многие функции базовой файловой системы, чтобы интерфейсы могли воспользоваться ими, если это необходимо.
Архитектура
PVFS состоит из 4 основных компонентов и ряда полезных программ. Компонентами являются сервер PVFS2, pvfslib, ядро клиента PVFS и модуль ядра PVFS. Утилиты включают в себя инструмент управления кармой, утилиты (например, pvfs ping, pvfs ls, pvfs cp и т. Д.) что все они работают непосредственно в файловой системе без использования модуля ядра (в основном для технического обслуживания и тестирования). Еще одним ключевым моментом проектирования является протокол PVFS, который описывает сообщения, передаваемые между клиентом и сервером, хотя это не является строго компонентом.
Сервер PVFS2
Сервер PVFS работает как процесс на узле, обозначенном как узл ввода-вывода. Вводно-выводное узлы часто являются выделенными узлами, но могут быть и обычными узлами, которые выполняют задачи приложения. PVFS-сервер обычно работает как root, но может быть запущен как пользователь, если это предпочтительнее. Каждый сервер может управлять несколькими различными файловыми системами и предназначен для работы как сервер метаданных, сервер данных или оба. Вся конфигурация управляется конфигурационным файлом, указанным в командной строке, и все серверы, управляющие данной файловой системой, используют один и тот же конфигурационный файл. Сервер принимает запросы через сеть, выполняет запрос, который может включать в себя ввод/вывод диска, и отвечает на исходный запрос. Запросы обычно поступают от клиентских узлов, выполняющих задачи приложения, но могут поступать и от других серверов. Сервер состоит из процессора запросов, уровня задач, слоя Trove, BMI и потока.
Обработчик запросов
Процессор запросов состоит из основной петли серверного процесса и ряда станковых машин. Машины состояния основаны на простом языке, разработанном для PVFS, который управляет параллельностью внутри сервера и клиента. Машины состояния состоят из ряда состояний, каждое из которых либо выполняет функцию действия состояния C, либо вызывает вложенную (подпрограмму) машину состояния. В обоих случаях коды возвращения выбирают, в какое состояние перейти дальше. Функции действия государства обычно подают задачу через уровень задачи, который выполняет какой-то вид ввода/вывода через Trove или BMI. Работы не блокируют, так что, как только работа выдается, выполнение станционной машины откладывается, чтобы другая станционная машина могла запустить обслуживание другого запроса. Когда Jobs завершены, главная петля перезапускает связанную с ней станковую машину. Процессор запросов имеет машины состояния для каждого из различных типов запросов, определенных в протоколе запросов PVFS, а также ряд вложенных машин состояния, используемых внутри. Архитектура состояния машины позволяет относительно легко добавлять новые запросы на сервер для добавления функций или оптимизации для конкретных ситуаций.
Рабочий слой
Слой "Job" обеспечивает общий интерфейс для отправки задач Trove, BMI и потоков и отчетов об их завершении. Он также реализует планировщик запросов как неблокирующую работу, которая записывает, какие запросы в процессе, на какие объекты и предотвращает ошибки согласованности из-за одновременной работы с одними и теми же файловыми данными.
Находка
Trove управляет I/O для объектов, хранящихся на локальном сервере. Trove работает на коллекциях пространств данных. Коллекция имеет собственное независимое пространство управления и используется для реализации различных файловых систем PVFS. Ручки отображаются на серверах через таблицу в файле конфигурации. Пространство данных состоит из двух частей: байт-потока теста и набора пар ключей/значений. Байт-поток - это последовательность байтов неопределенной длины, используемая для хранения файловых данных, как правило, в файле локальной файловой системы. Пара ключей/значений используется для хранения метаданных, атрибутов и записей каталогов. Trove имеет хорошо определенный интерфейс и может быть реализован различными способами. На сегодняшний день единственной реализацией является реализация Trove dbfs, которая хранит байт-тесты в файлах и парах ключей/значений в базе данных Berkeley DB. Операции находки не являются блокирующими, API обеспечивает функции пост для чтения или записи различных компонентов и функции для проверки или ожидания завершения.