Кластерная файловая система ( CFS ) — это файловая система , которая используется совместно путем одновременного монтирования на нескольких серверах . Существует несколько подходов к кластеризации , большинство из которых не используют кластеризованную файловую систему (только хранилище с прямым подключением к каждому узлу). Кластерные файловые системы могут предоставлять такие функции, как адресация, независимая от местоположения, и избыточность, которые повышают надежность или уменьшают сложность других частей кластера. Параллельные файловые системы — это тип кластерной файловой системы, которая распределяет данные по нескольким узлам хранения, обычно для обеспечения избыточности или производительности. [1]
Файловая система с общим диском использует сеть хранения данных (SAN), чтобы позволить нескольким компьютерам получить прямой доступ к диску на уровне блоков . Управление доступом и преобразование операций на уровне файлов, которые используют приложения, в операции на уровне блоков, используемые SAN, должны выполняться на клиентском узле. Самый распространенный тип кластерной файловой системы, файловая система с общим диском, за счет добавления механизмов управления параллелизмом обеспечивает согласованное и сериализуемое представление файловой системы, избегая повреждения и непреднамеренной потери данных, даже когда несколько клиентов пытаются получить доступ к одним и тем же файлам. в то же время. Файловые системы с общими дисками обычно используют своего рода механизм ограждения для предотвращения повреждения данных в случае сбоев узлов, поскольку незащищенное устройство может вызвать повреждение данных, если оно потеряет связь со своими родственными узлами и попытается получить доступ к той же информации, к которой обращаются другие узлы. .
Базовая сеть хранения данных может использовать любой из множества протоколов блочного уровня, включая SCSI , iSCSI , HyperSCSI , ATA over Ethernet (AoE), Fibre Channel , сетевое блочное устройство и InfiniBand .
Существуют разные архитектурные подходы к файловой системе общего диска. Некоторые распределяют информацию о файлах по всем серверам кластера (полностью распределяя). [2]
Распределенные файловые системы не имеют общего доступа на уровне блоков к одному и тому же хранилищу, а используют сетевой протокол . [3] [4] Они широко известны как сетевые файловые системы , хотя они не единственные файловые системы, использующие сеть для отправки данных. [5] Распределенные файловые системы могут ограничивать доступ к файловой системе в зависимости от списков доступа или возможностей как серверов, так и клиентов, в зависимости от того, как разработан протокол.
Разница между распределенной файловой системой и распределенным хранилищем данных заключается в том, что распределенная файловая система позволяет получать доступ к файлам, используя те же интерфейсы и семантику, что и к локальным файлам – например, монтирование/размонтирование, составление списка каталогов, чтение/запись на границах байтов, собственная модель разрешений системы. Распределенные хранилища данных, напротив, требуют использования другого API или библиотеки и имеют другую семантику (чаще всего семантику базы данных). [6]
Распределенные файловые системы могут стремиться к «прозрачности» во многих аспектах. То есть они стремятся быть «невидимыми» для клиентских программ, которые «видят» систему, аналогичную локальной файловой системе. За кулисами распределенная файловая система обеспечивает поиск файлов, транспортировку данных и потенциально предоставляет другие функции, перечисленные ниже.
В 1960-х годах несовместимая система разделения времени использовала виртуальные устройства для прозрачного межмашинного доступа к файловой системе. В 1970-х годах было разработано больше файловых серверов. В 1976 году компания Digital Equipment Corporation создала прослушиватель доступа к файлам (FAL), реализацию протокола доступа к данным в рамках фазы II DECnet , которая стала первой широко используемой сетевой файловой системой. В 1984 году компания Sun Microsystems создала файловую систему под названием « Сетевая файловая система » (NFS), которая стала первой широко используемой сетевой файловой системой на основе Интернет-протокола . [4] Другими известными сетевыми файловыми системами являются файловая система Эндрю (AFS), файловый протокол Apple (AFP), базовый протокол NetWare (NCP) и блок сообщений сервера (SMB), который также известен как общая файловая система Интернета (CIFS).
В 1986 году IBM объявила о поддержке клиентской и серверной архитектуры распределенного управления данными (DDM) для мейнфреймов System/36 , System/38 и IBM под управлением CICS . За этим последовала поддержка IBM Personal Computer , AS/400 , мэйнфреймов IBM под операционными системами MVS и VSE , а также FlexOS . DDM также стал основой для архитектуры распределенной реляционной базы данных , также известной как DRDA.
Существует множество одноранговых сетевых протоколов для распределенных файловых систем с открытым исходным кодом для облачных или кластерных файловых систем с закрытым исходным кодом, например: 9P , AFS , Coda , CIFS/SMB , DCE/DFS , WekaFS, [7] Lustre , PanFS, [8] Файловая система Google , Mnet, Chord Project .
Сетевое хранилище (NAS) обеспечивает как хранилище, так и файловую систему, например файловую систему общего диска поверх сети хранения данных (SAN). NAS обычно использует файловые протоколы (в отличие от блочных протоколов, которые использует SAN), такие как NFS (популярный в системах UNIX ), SMB/CIFS ( блокировка сообщений сервера/общая файловая система Интернета ) (используется в системах MS Windows). , AFP (используется с компьютерами Apple Macintosh ) или NCP (используется с OES и Novell NetWare ).
Отказ дискового оборудования или конкретного узла хранения в кластере может создать единую точку отказа , которая может привести к потере или недоступности данных . Отказоустойчивость и высокая доступность могут быть обеспечены за счет репликации данных того или иного типа, так что данные остаются нетронутыми и доступными, несмотря на выход из строя какого-либо отдельного оборудования. Примеры см. в списках распределенных отказоустойчивых файловых систем и распределенных параллельных отказоустойчивых файловых систем .
Обычным показателем производительности кластерной файловой системы является количество времени, необходимое для удовлетворения запросов на обслуживание. В обычных системах это время состоит из времени доступа к диску и небольшого времени обработки ЦП . Но в кластерной файловой системе удаленный доступ требует дополнительных затрат из-за распределенной структуры. Сюда входит время доставки запроса на сервер, время доставки ответа клиенту, а также для каждого направления нагрузка ЦП на запуск программного обеспечения протокола связи .
Управление параллелизмом становится проблемой, когда несколько человек или клиентов обращаются к одному и тому же файлу или блоку и хотят его обновить. Следовательно, обновления файла от одного клиента не должны мешать доступу и обновлениям от других клиентов. Эта проблема более сложна для файловых систем из-за одновременной перекрывающейся записи, когда разные записывающие устройства одновременно записывают в перекрывающиеся области файла. [9] Эта проблема обычно решается с помощью управления параллелизмом или блокировки , которые могут быть либо встроены в файловую систему, либо обеспечены дополнительным протоколом.
Мейнфреймы IBM в 1970-х годах могли совместно использовать физические диски и файловые системы, если бы каждая машина имела собственное канальное соединение с блоками управления дисками. В 1980-х годах кластеры TOPS-20 и OpenVMS (VAX/ALPHA/IA64) компании Digital Equipment Corporation включали файловые системы с общими дисками. [10]
NFS была разработана для упрощения совместного использования ресурсов файловой системы в сети неоднородных компьютеров.
В конечном итоге и VMS, и TOPS-20 предоставили такую возможность.