Текущая версия |
Ваш текст |
Строка 444: |
Строка 444: |
| 1. Какие принципиальные решения приходится принимать при обеспечении файлового сервиса? | | 1. Какие принципиальные решения приходится принимать при обеспечении файлового сервиса? |
| | | |
- | '''Ответ:'''<br> | + | '''Ответ:''' |
- | * ''Есть ли разница между клиентами и серверами?'' Имеются системы, где все машины имеют одно и то же ПО и любая машина может предоставлять файловый сервис. Есть системы, в которых серверы являются обычными пользовательскими процессами и могут быть сконфигурированы для работы на одной машине с клиентами или на разных. Есть системы, в которых клиенты и серверы являются фундаментально разными машинами с точки зрения аппаратуры или ПО.
| + | |
- | | + | |
- | * ''Должны ли быть файловый сервер и сервер директорий отдельными серверами или быть объединенными в один сервер.'' Разделение позволяет иметь разные серверы директорий (UNIX, MS-DOS) и один файловый сервер. Объединение позволяет сократить коммуникационные издержки.
| + | |
- | | + | |
- | * ''Должны ли серверы хранить информацию о клиентах.'' См. вопрос про сервер с состоянием.
| + | |
- | | + | |
| | | |
| 2. Интерфейс сервера директорий. | | 2. Интерфейс сервера директорий. |
| | | |
- | '''Ответ:'''<br> | + | '''Ответ:''' |
- | Обеспечивает операции создания и удаления директорий, именования и переименования файлов, перемещение файлов из одной директории в другую.
| + | |
- | | + | |
- | Определяет алфавит и синтаксис имен. Для спецификации типа информации в файле используется часть имени (расширение) либо явный атрибут.
| + | |
- | | + | |
- | Все распределенные системы позволяют директориям содержать поддиректории - такая файловая система называется иерархической. Некоторые системы позволяют создавать указатели или ссылки на произвольные директории, которые можно помещать в директорию. При этом можно строить не только деревья, но и произвольные графы (разница между ними очень важна для распределенных систем, поскольку в случае графа удаление связи может привести к появлению недостижимых поддеревьев. Обнаруживать такие поддеревья в распределенных системах очень трудно).
| + | |
- | | + | |
- | Ключевое решение при конструировании распределенной файловой системы - должны или не должны машины (или процессы) одинаково видеть иерархию директорий. Тесно связано с этим решением наличие единой корневой директории (можно иметь такую директорию с поддиректориями для каждого сервера).
| + | |
- | | + | |
- | Прозрачность именования.
| + | |
- | Две формы прозрачности именования различают - прозрачность расположения (/server/d1/f1) и прозрачность миграции (когда изменение расположения файла не требует изменения имени).
| + | |
- | | + | |
- | Имеются три подхода к именованию:
| + | |
- |
| + | |
- | * машина + путь;
| + | |
- | * монтирование удаленных файловых систем в локальную иерархию файлов;
| + | |
- | * единственное пространство имен, которое выглядит одинаково на всех машинах.
| + | |
- | | + | |
- | Последний подход необходим для достижения того, чтобы распределенная система выглядела как единый компьютер, однако он сложен и требует тщательного проектирования.
| + | |
- |
| + | |
| | | |
| 3. Семантика разделения файлов. | | 3. Семантика разделения файлов. |
| | | |
- | '''Ответ:'''<br> | + | '''Ответ:''' |
- | * UNIX-семантика --- естественная семантика однопроцессорной ЭВМ - если за операцией записи следует чтение, то результат определяется последней из предшествующих операций записи. В распределенной системе такой семантики достичь легко только в том случае, когда имеется один файл-сервер, а клиенты не имеют кэшей. При наличии кэшей семантика нарушается. Надо либо сразу все изменения в кэшах отражать в файлах, либо менять семантику разделения файлов.
| + | |
| | | |
- | * Неизменяемые файлы --- очень радикальный подход к изменению семантики разделения файлов. Только две операции - создать и читать. Можно заменить новым файлом старый - т.е. можно менять директории. Если один процесс читает файл, а другой его подменяет, то можно позволить первому процессу доработать со старым файлом в то время, как другие процессы могут уже работать с новым. | |
- | | |
- | * Семантика сессий --- изменения открытого файла видны только тому процессу (или машине), который производит эти изменения, а лишь после закрытия файла становятся видны другим процессам (или машинам). Что происходит, если два процесса одновременно работали с одним файлом - либо результат будет определяться процессом, последним закрывшим файл, либо можно только утверждать, что один из двух вариантов файла станет текущим. | |
- | | |
- | * Транзакции --- процесс выдает операцию “НАЧАЛО ТРАНЗАКЦИИ”, сообщая тем самым, что последующие операции должны выполняться без вмешательства других процессов. Затем выдает последовательность чтений и записей, заканчивающуюся операцией “КОНЕЦ ТРАНЗАКЦИИ”. Если несколько транзакций стартуют в одно и то же время, то система гарантирует, что результат будет таким, каким бы он был в случае последовательного выполнения транзакций (в неопределенном порядке). Пример - банковские операции. | |
- | | |
| 4. Серверы с состоянием и без состояния. Достоинства и недостатки. | | 4. Серверы с состоянием и без состояния. Достоинства и недостатки. |
| | | |
- | '''Ответ:'''<br> | + | '''Ответ:''' |
- | ''Серверы с состоянием. Достоинства.''
| + | |
- | * Короче сообщения (двоичные имена используют таблицу открытых файлов).
| + | |
- | * выше эффективность (информация об открытых файлах может храниться в оперативной памяти).
| + | |
- | * блоки информации могут читаться с упреждением.
| + | |
- | * убедиться в достоверности запроса легче, если есть состояние (например, хранить номер последнего запроса).
| + | |
- | * возможна операция захвата файла.
| + | |
- | | + | |
- | ''Серверы без состояния. Достоинства.''
| + | |
- | * устойчивость к ошибкам.
| + | |
- | * не требуется операций ОТКРЫТЬ/ЗАКРЫТЬ.
| + | |
- | * не требуется память для таблиц.
| + | |
- | * нет ограничений на число открытых файлов.
| + | |
- | * нет проблем при крахе клиента.
| + | |
| | | |
| 5. Алгоритмы обеспечения консистентности кэшей в распределенных файловых системах. | | 5. Алгоритмы обеспечения консистентности кэшей в распределенных файловых системах. |
| | | |
- | '''Ответ:'''<br> | + | '''Ответ:''' |
- | * Алгоритм со сквозной записью. Необходимость проверки, не устарела ли информация в кэше. Запись вызывает коммуникационные расходы (MS-DOS).
| + | |
- | | + | |
- | * Алгоритм с отложенной записью. Через регулярные промежутки времени все модифицированные блоки пишутся в файл. Эффективность выше, но семантика непонятная пользователю (UNIX).
| + | |
- | | + | |
- | * Алгоритм записи в файл при закрытии файла. Реализует семантику сессий. Не намного хуже случая, когда два процесса на одной ЭВМ открывают файл, читают его, модифицируют в своей памяти и пишут назад в файл.
| + | |
- | | + | |
- | * Алгоритм централизованного управления. Можно выдержать семантику UNIX, но не эффективно, ненадежно, и плохо масштабируется.
| + | |
| | | |
| 6. Способы организации размножения файлов и коррекции копий. | | 6. Способы организации размножения файлов и коррекции копий. |
| | | |
- | '''Ответ:'''<br> | + | '''Ответ:''' |
- | Система может предоставлять такой сервис, как поддержание для указанных файлов нескольких копий на различных серверах. Главные цели:
| + | |
- | | + | |
- | # Повысить надежность.
| + | |
- | # Повысить доступность (крах одного сервера не вызывает недоступность размноженных файлов.
| + | |
- | # Распределить нагрузку на несколько серверов.
| + | |
- | # Явное размножение (непрозрачно). В ответ на открытие файла пользователю выдаются несколько двоичных имен, которые он должен использовать для явного дублирования операций с файлами.
| + | |
- | # “Ленивое” размножение. Одна копия создается на одном сервере, а затем он сам автоматически создает (в свободное время) дополнительные копии и обеспечивает их поддержание.
| + | |
- | # Симметричное размножение. Все операции одновременно вызываются в нескольких серверах и одновременно выполняются.
| + | |
- | | + | |
- | Протоколы коррекции.
| + | |
- | Просто посылка сообщений с операцией коррекции каждой копии является не очень хорошим решением, поскольку в случае аварий некоторые копии могут остаться не скорректированными. Имеются два алгоритма, которые решают эту проблему.
| + | |
- | | + | |
- | # Метод размножения главной копии. Один сервер объявляется главным, а остальные - подчиненными. Все изменения файла посылаются главному серверу. Он сначала корректирует свою локальную копию, а затем рассылает подчиненным серверам указания о коррекции. Чтение файла может выполнять любой сервер. Для защиты от краха главного сервера до завершения всех коррекций, до выполнения коррекции главной копии главный сервер запоминает в стабильной памяти задание на коррекцию. Слабость - выход из строя главного сервера не позволяет выполнять коррекции.
| + | |
- | # Метод голосования. Идея - запрашивать чтение и запись файла у многих серверов (запись - у всех!). Запрос может получить одобрение у половины серверов плюс один. При этом должно быть согласие относительно номера текущей версии файла. Этот номер увеличивается на единицу с каждой коррекцией файла. Можно использовать различные значения для кворума чтения (Nr) и кворума записи (Nw). При этом должно выполняться соотношение Nr+Nw>N. Поскольку чтение является более частой операцией, то естественно взять Nr=1. Однако в этом случае для кворума записи потребуются все серверы.
| + | |
| | | |
| == Тема 6 (задачи на консистентность)== | | == Тема 6 (задачи на консистентность)== |