Лекционные материалы (1162669), страница 7
Текст из файла (страница 7)
Все изменения файла посылаются(используя надежные и неделимые широковещательные рассылки) всем серверам.Чтение файла может выполнять любой сервер.(3)Метод голосования. Идея - запрашивать чтение и запись файла у многих серверов(запись - у всех!). Для успешного выполнения записи требуется, чтобы Nw серверов еевыполнили. При этом у всех этих серверов должно быть согласие относительно номератекущей версии файла.
Этот номер увеличивается на единицу с каждой коррекциейфайла. Для выполнения чтения достаточно обратиться к Nr серверам и воспользоватьсяодним из тех, кто имеет последнюю версию файла. Значения для кворума чтения (Nr) икворума записи (Nw) должны удовлетворять соотношению Nr+Nw>N. Поскольку чтениеявляется более частой операцией, то естественно взять Nr=1. Однако в этом случае длякворума записи потребуются все серверы.5.2.5Пример: Sun Microsystem’s Network File System (NFS).Изначально реализована Sun Microsystem в 1985 году для использования на своих рабочихстанций на базе UNIX.
В настоящее время поддерживается также другими фирмами для UNIXи других ОС (включая MS-DOS). Интересны следующие аспекты NFS - архитектура,протоколы и реализация.29Архитектура NFS.Позволяет иметь произвольное множество клиентов и серверов на произвольных ЭВМлокальной или широкомасштабной сети.Каждый сервер экспортирует некоторое число своих директорий для доступа к ним удаленныхклиентов. При этом экспортируются директории со всеми своими поддиректориями, т.е.фактически поддеревья.
Список экспортируемых директорий хранится в специальном файле,что позволяет при загрузке сервера автоматически их экспортировать.Клиент получает доступ к экспортированным директориям путем их монтирования. Есликлиент не имеет дисков, то может монтировать директории в свою корневую директорию.Если несколько клиентов одновременно смонтировали одну и ту же директорию, то они могутразделять файлы в общей директории без каких либо дополнительных усилий. Простота достоинство NFS.Протоколы NFS.Поскольку одна из целей NFS - поддержка гетерогенных систем, клиенты и серверы могутработать на разных ЭВМ с различной архитектурой и различными ОС.
Поэтомунеобходимо иметь строгие протоколы их взаимодействия. NFS имеет два таких протокола.Первый протокол поддерживает монтирование. Клиент может послать серверу составное имядиректории (имя пути) и попросить разрешения на ее монтирование. Куда будет монтироватьдиректорию клиент для сервера значения не имеет и поэтому не сообщается ему. Если путьзадан корректно и директория определена как экспортируемая, то сервер возвращает клиентудескриптор директории.
Дескриптор содержит поля, уникально идентифицирующие тип ЭВМ,диск, номер i-вершины (понятие ОС UNIX) для данной директории, а также информацию оправах доступа к ней. Этот дескриптор используется клиентом в последующих операциях сдиректорией.Многие клиенты монтируют требуемые удаленные директории автоматически призапуске (используя командную процедуру shell-интерпретатора ОС UNIX).Версия ОС UNIX, разработанная Sun (Solaris), имеет свой специальный режимавтоматического монтирования. С каждой локальной директорией можно связать множествоудаленных директорий.
Когда открывается файл, отсутствующий в локальной директории,ОС посылает запросы всем серверам (владеющим указанными директориями). Кто ответитпервым, директория того и будет смонтирована. Такой подход обеспечивает и надежность,и эффективность (кто свободнее, тот раньше и ответит). При этом подразумевается, что всеальтернативные директории идентичны. Поскольку NFS не поддерживает размножениефайлов или директорий, то такой режим автоматического монтирования в основномиспользуется для директорий с кодами программ или других редко изменяемых файлов.Второй протокол - для доступа к директориям и файлам. Клиенты посылают сообщения,чтобы манипулировать директориями, читать и писать файлы.
Можно получить атрибутыфайла. Поддерживается большинство системных вызовов ОС UNIX, исключая OPEN иCLOSE. Для получения дескриптора файла по его символическому имени используетсяоперация LOOKUP, отличающаяся от открытия файла тем, что никаких внутренних таблиц несоздается. Таким образом, серверы в NFS не имеют состояния (stateless). Поэтому для захватафайла используется специальный механизм.NFS использует механизм защиты UNIX. В первых версиях все запросы содержалиидентификатор пользователя и его группы (для проверки прав доступа). Несколько летэксплуатации системы показали слабость такого подхода. Теперь используетсякриптографический механизм с открытыми ключами для проверки законности каждогозапроса и ответа.
Данные не шифруются.30Все ключи, используемые для контроля доступа, поддерживаются специальным сервисом (исерверами) - сетевым информационным сервисом (NIS). Храня пары (ключ, значение), сервисобеспечивает выдачу значения кода при правильном подтверждении ключей. Кроме того, онобеспечивает отображение имен машин на их сетевые адреса, и другие отображения. NISсерверы используют схему главный -подчиненные для реализации размножения («ленивое»размножение).Реализация NFS.(XDR - External Data Represantation)Задача уровня виртуальной файловой системы - поддерживать для каждого открытого файластроку в таблице (v-вершину), аналогичную i-вершине UNIX.
Эта строка позволяет различатьлокальные файлы от удаленных. Для удаленных файлов вся необходимая информацияхранится в специальной r-вершине в NFS-клиенте, на которую ссылается v-вершина. Усервера нет никаких таблиц.Передачи информации между клиентом и сервером NFS производятся блоками размером 8К(для эффективности).Два кэша - кэш данных и кэш атрибутов файлов (обращения к ним очень часты, разработчикиNFS исходили из оценки 90%). Реализована семантика отложенной записи - предмет критикиNFS.Имеется также кэш подсказок для ускорения получения v-вершины по символическому имени.При использовании устаревшей подсказки NFS-клиент будет обращаться к NFS-серверу икорректировать свой кэш (пользователь об этом ничего не должен знать).316 Распределенная общая память (DSM - Distributed Shared Memory).Традиционно распределенные вычисления базируются на модели передачи сообщений, вкоторой данные передаются от процессора к процессору в виде сообщений.
Удаленный вызовпроцедур фактически является той же самой моделью (или очень близкой).DSM - виртуальное адресное пространство, разделяемое всеми узлами (процессорами)распределенной системы. Программы получают доступ к данным в DSM примерно так же, какэто происходит при реализации виртуальной памяти традиционных ЭВМ. В системах с DSMданные могут перемещаться между локальными памятями разных компьютеров аналогичнотому, как они перемещаются между оперативной и внешней памятью одного компьютера.6.1Достоинства DSM.(1) В модели передачи сообщений программист обеспечивает доступ к разделяемым даннымпосредством явных операций посылки и приема сообщений.
При этом приходится квантоватьалгоритм, обеспечивать своевременную смену информации в буферах, преобразовыватьиндексы массивов. Все это сильно усложняет программирование и отладку. DSM скрывает отпрограммиста пересылку данных и обеспечивает ему абстракцию разделяемой памяти, киспользованию которой он уже привык на мультипроцессорах. Программирование и отладка сиспользованием DSM гораздо проще.(2) В модели передачи сообщений данные перемещаются между двумя различнымиадресными пространствами.
Это делает очень трудным передачу сложных структур данныхмежду процессами. Например, передача данных по ссылке и передача структур данных,содержащих указатели, вызывает серьезные проблемы. В системах с DSM этих проблем нет,что несомненно упрощает разработку распределенных приложений.(3) Объем суммарной физической памяти всех узлов может быть огромным. Эта огромнаяпамять становится доступна приложению без издержек, связанных в традиционных системах сдисковыми обменами. Это достоинство становится все весомее в связи с тем, что скоростипроцессоров и коммуникаций растут быстрее скоростей памяти и дисков.(4) DSM-системы могут наращиваться практически беспредельно в отличие от систем сразделяемой памятью, т.е.
являются масштабируемыми.(5) Программы, написанные для мультипроцессоров с общей памятью, могут в принципе безкаких-либо изменений выполняться на DSM-системах (по крайней мере, они могут быть легкоперенесены на DSM-системы).По существу, DSM-системы преодолевают архитектурные ограничения мультипроцессоров исокращают усилия, необходимые для написания программ для распределенных систем.Обычно они реализуются программно-аппаратными средствами, но в 90-х годах появилосьнесколько коммерческих MPP с DSM, реализованной аппаратно (Convex SPP, KSR1, Origin2000).
В конце 2004 года второй в списке TOP-500 являлась система, состоящая из 20 DSMкластеров SGI ALTIX 3000, каждый по 512 процессоров.6.2Алгоритмы реализации DSM.При реализации DSM центральными являются следующие вопросы.1) как поддерживать информацию о расположении удаленных данных.2) как снизить при доступе к удаленным данным коммуникационные задержки и большиенакладные расходы, связанные с выполнением коммуникационных протоколов.3) как сделать разделяемые данные доступными одновременно на нескольких узлах длятого, чтобы повысить производительность системы.Рассмотрим четыре возможных алгоритма реализации DSM.326.2.1Алгоритм с центральным сервером.Все разделяемые данные поддерживает центральный сервер.