СРАВНИТЕЛЬНЫЙ АНАЛИЗ РАСПРЕДЕЛЁННЫХ ФАЙЛОВЫХ СИСТЕМ.

,

Студентка РЭУ им.

(*****@***com)

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

Способ связи – это метод, с помощью которого осуществляется взаимодействие между процессами. Так, например, это может быть протокол Remote Procedure Call (RPC), обеспечивающий удалённый вызов процедур, другие способы используются реже.

Семантика разделения файлов отражает то, каким именно образом будет происходить распределение доступа к разным удалённым данным. Существуют следующие подходы к решению этой проблемы: сессионная семантика, неизменяемые файлы и транзакции.

В первом случае смысл в том, что изменения данных одним пользователем не видны другому, пока первый не закроет файл.

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

Также разделение файлов можно произвести с помощью неделимых транзакций. С момента начала транзакции система гарантирует выполнение операций последовательно и без вмешательства других процессов.

НЕ нашли? Не то? Что вы ищете?

Рассмотрим следующую характеристику файловых систем – кэширование, что значит хранение данных в определённом месте для быстрого доступа к ним. Кэширование осуществляется одним из трёх способов: сквозная запись, отложенная запись или запись при закрытии.

Сквозной записью называется метод, при котором каждое изменение кэшируемого файла немедленно отправляется на сервер, и другие пользователи всегда получают самую новую версию.

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

Третий способ кэширования основан на сессионной семантике доступа к данным и заключается в том, что обновленный файл отсылается на сервер только после его закрытия.

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

Следующий показатель – принцип именования. Именование может быть осуществлено клиентом или на основе глобального пространства имён. Суть принципов следует из их названия.

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

По вышеперечисленным критериям будёт проведено изучение и сравнение следующих распределённых файловых систем: Coda, Distributed File System (DFS) и Network File System (NFS).

Распределённая файловая система Coda (Constant Data Availability) является модифицированной версией Andrew File System 2. Была разработана в 1987 году в университете Карнеги-Меллона для объединения примерно 10000 местных компьютеров в единое файловое пространство. Поддерживает несколько операционных систем на базе UNIX, а именно Linux, NetSBD и FreeSBD.

Связь в Coda осуществляется через протокол RPC (Remote Procedure Call) второй версии, немного отличающейся от традиционной. RPC2 совершает надёжные вызовы RPC на базе ненадёжного протокола UDP (User Datagram Protocol). При каждом вызове удалённой процедуры запускается новый поток выполнения, который блокируется сразу же после того, как отправит запрос на сервер, и ждёт ответа, во время чего периодически посылает пользователю уведомления о состоянии выполнения запроса. Параллельные вызовы осуществляются с помощью дополнения MultiRPC, что позволяет осуществлять их полностью прозрачно для пользователя.

Coda использует транзакционную семантику разделения файлов. Для проведения каждой операции открывается новый поток выполнения, поочерёдно отвечающий на каждый запрос.

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

Репликация также помогает обеспечивать высокую доступность системы Coda. Все файлы сгруппированы в тома по такому принципу, что один файл может содержаться только в одном томе. Эти тома – единицы репликации. Для обеспечения непротиворечивости реплицированного тома система использует специальный протокол Read-Once – Write-All (ROWA), что дословно переводится с английского как «читаем раз – пишем все». Это означает, что операция чтения производится из одной копии файла, а операция записи изменяет сразу все доступные копии документа. Следовательно, Coda использует симметричную репликацию или репликацию группы.

Именование в данной системе происходит так: файлы, объединенные в тома, размер каждого из которых занимает область диска в файловой системе, ассоциируются с коллекциями файлов пользователей. Каждый том соответствует поддереву глобального пространства имён, образованного серверами.

Что касается отказоустойчивости и восстановления Coda, система предлагает механизм под названием восстановимая виртуальная память RVM (Recoverable Virtual Memory). RVM обеспечивает хранение важной информации в основной памяти и достаточно быстрое восстановление данных после сбоя.

Изучим следующую распределённую файловую систему – DFS (Distributed File System), являющуюся компонентом Microsoft Windows. Система поддерживает как операционную систему Windows, так и Linux. 

Для обеспечения взаимодействия между процессами используется рассмотренный ранее протокол RPC.

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

Кэширование в DFS производится так же, как и в Coda – на стороне клиента, но сам принцип отличается. Здесь кэширование происходит в течение времени, заданного администратором, то есть с отложенной записью.

Принцип репликации в данной системе – «ленивый», но зато существуют специальные дополнения для её осуществления. Со временем службу репликации файлов FRS (File Replication Service) заменила DFS-R (Replication),  с заданным интервалом копирующая файлы с одного сервера на другой.

Именование здесь осуществляется с помощью единого логического пространства UNC-имён (Uniform Naming Convention), что позволяет пользователю легко получать доступ к нужному ему каталогу и файлу, исключая необходимость запоминать имя каждого документа.

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

Третья система, которая будет исследована, – популярная NFS (Network File System). Одна из первых разработанных распределённых файловых систем предоставляет прозрачный доступ к определённой части файла, необходимой для пользователя. Среди достоинств NFS необходимо выделить совместимость с множеством операционных систем, таких как MacOS, Windows, UNIX-подобные системы и другие. Также особенностью структуры является независимость операционных систем, архитектур и протоколов, что позволяет, например, клиенту под управлением Windows подключиться к файл-серверу UNIX.

Взаимодействие между процессами обеспечивается при помощи протокола ONC RPC (Open Network Computing Remote Procedure Call), представляющего собой RPC с дополнением для открытых сетевых вычислений. Также, чтобы избежать падения производительности при одновременном выполнении двух вызовов удалённой процедуры, используются составные процедуры, объединяющие их в один запрос.

Для распределения доступа к файлам NFS осуществляет сессионную семантику, смысл которой был разобран выше.

Кэширование в данной системе происходит, как и во многих других – на клиенте. Клиент работает с файлом и, при необходимости, кэширует данные с сервера, над которыми позже можно исполнить и операцию записи. После этого данные вновь отправляются на сервер. Также недавним дополнением для системы является возможность делегирования часть прав сервера клиенту после открытия файла, и дальше этот пользователь может самостоятельно принимать решения, в то время как другим клиентам доступ к этим данным запрещён. Но сервер всегда должен быть способен отменить это делегирование. Для этого необходимо использовать механизм  кэширования обратной записи.

По следующему показателю NFS предлагает минимальную поддержку репликации файлов, при которой система может реплицироваться только целиком со всем файлами, атрибутами, каталогами и блоками данных.

Модель именования Network File System предлагает каждому пользователю их собственное пространство имён.

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

Был проведён сравнительный анализ вышеперечисленных распределённых файловых систем, результаты которого отражены в таблице 1.

Таблица 1

Распределённые файловые системы

Характеристики

Coda

DFS

NFS

ОС

Linux, NetSBD, Free SBD

Windows, Linux

MacOS, Windows, Linux и др.

Связь

RPC+MultiRPC

RPC

ONC RPC

Разделение файлов

Транзакции

Неизменяемые файлы

По сессиям

Кэширование

На клиенте, по закрытию

На клиенте, с отложенной записью

На клиенте, с обратной записью

Репликация

Симметричная, ROWA

Ленивая, DFC-R

Минимальная, целиком

Именование

Глобальное пространство имён

Единое пространство UNC-имён

Пользовательское пространство имён

Действия при отказах

Восстановимая виртуальная память RVM

Автоматическое резервирование

Не обеспечено

Исходя из исследования, необходимо сделать выводы. По первой характеристике среди всех представленных вариантов наибольшее количество разных по своему происхождению операционных систем предоставляет NFS, за ней идёт DFS, которая поддерживает две системы различной природы, а система Coda может работать только на трёх UNIX-подобных операционных системах, чем сильно проигрывает своим конкурентам.

Протоколы связи у всех исследованных систем одинаковы, и отличаются только дополнениями. А третий критерий – семантика разделения файлов – у всех обеспечивается по-разному. В идеале распределённая файловая система должна позволять клиенту прочесть данные, записанные в файл последними. Из всех рассмотренных систем примерную, неполную версию этого гарантирует только Network File System, а транзакционное разделение файлов в  Coda не обладает свойствами транзакций ACID (Atomicity, Consistency, Isolation, Durability).

Для достижения высокой производительности, система должна позволять кэширование целых файлов. Из представленных файловых систем, это обеспечивается в NFS и Coda, и трудно оценить, какая система удобнее, так как это зависит от цели её использования.

Возможности репликации существенно лучше других у распределённой файловой системы Coda, а NFS поддерживает только минимальную репликацию, что лишает пользователя некоторых возможностей.

Network File System отстаёт и в обеспечении отказоустойчивости, и, как было сказано ранее, имеет ряд нерешённых проблем в этой сфере, хотя другие системы имеют специальные действующие механизмы, позволяющие им избегать сбоев или быстро исправлять их последствия.

Анализ был проведён по основным системным характеристикам,  количество которых при необходимости можно увеличить, и получить более точные данные. Исходя из данного анализа, распределённая файловая система DFS немного проще, и отстаёт в своей реализации от других, а Coda в целом по всем параметрам с небольшим отрывом превосходит NFS, но  примерно они находятся в равном положении, поэтому выбор той или иной системы должен основываться на конкретных целях её использования и личных предпочтениях пользователя.

Список литературы.

1. , , . Проблематика распределённых файловых систем. // Системы и средства информации, выпуск №17, 194-213 с.

2. Э. Таненбаум, М. ван Стеен. Распределённые системы: принципы и парадигмы. // СПб.: Питер, 2003. – 877 с.

3. Distributed File System. Электронный ресурс: https://ru. bmstu. wiki/DFS_(Distributed_File_System) (дата обращения 20.05.2018г.)