Кластерная файловая система ( 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 создала File Access Listener (FAL), реализацию протокола доступа к данным в рамках DECnet Phase II, которая стала первой широко используемой сетевой файловой системой. В 1984 году компания Sun Microsystems создала файловую систему под названием « Network File System » (NFS), которая стала первой широко используемой сетевой файловой системой на основе интернет-протокола . [4] Другими известными сетевыми файловыми системами являются Andrew File System (AFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP) и Server Message Block (SMB), которая также известна как Common Internet File System (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 File System , Mnet, Chord Project .
Сетевое хранилище (NAS) обеспечивает как хранилище, так и файловую систему, например, файловую систему общего диска поверх сети хранения данных (SAN). NAS обычно использует протоколы на основе файлов (в отличие от протоколов на основе блоков, которые использовала бы SAN), такие как NFS (популярный в системах UNIX ), SMB/CIFS ( Server Message Block/Common Internet File System ) (используется с системами MS Windows), AFP (используется с компьютерами Apple Macintosh ) или NCP (используется с OES и Novell NetWare ).
Отказ дискового оборудования или определенного узла хранения в кластере может создать единую точку отказа , которая может привести к потере или недоступности данных. Отказоустойчивость и высокая доступность могут быть обеспечены посредством репликации данных того или иного вида, так что данные остаются нетронутыми и доступными, несмотря на отказ любой отдельной единицы оборудования. Примеры см. в списках распределенных отказоустойчивых файловых систем и распределенных параллельных отказоустойчивых файловых систем .
Распространенным измерением производительности кластерной файловой системы является количество времени, необходимое для удовлетворения запросов на обслуживание. В обычных системах это время состоит из времени доступа к диску и небольшого количества времени обработки ЦП . Но в кластерной файловой системе удаленный доступ имеет дополнительные накладные расходы из-за распределенной структуры. Это включает время доставки запроса на сервер, время доставки ответа клиенту и для каждого направления накладные расходы ЦП на выполнение программного обеспечения протокола связи .
Управление параллелизмом становится проблемой, когда более одного человека или клиента получают доступ к одному и тому же файлу или блоку и хотят обновить его. Следовательно, обновления файла от одного клиента не должны мешать доступу и обновлениям от других клиентов. Эта проблема более сложна для файловых систем из-за параллельных перекрывающихся записей, когда разные писатели одновременно пишут в перекрывающиеся области файла. [9] Эта проблема обычно решается с помощью управления параллелизмом или блокировки , которые могут быть встроены в файловую систему или предоставлены дополнительным протоколом.
В 1970-х годах мэйнфреймы IBM могли совместно использовать физические диски и файловые системы, если каждая машина имела собственное канальное соединение с блоками управления приводами. В 1980-х годах кластеры TOPS-20 и OpenVMS (VAX/ALPHA/IA64) корпорации Digital Equipment Corporation включали общие файловые системы дисков. [10]
была разработана для упрощения совместного использования ресурсов файловой системы в сети неоднородных машин.
конечном итоге и VMS, и TOPS-20 предоставили такого рода возможности.