Лекционные материалы (1162669), страница 6
Текст из файла (страница 6)
Тесно связано сэтим решением наличие единой корневой директории (можно иметь такую директорию споддиректориями для каждого сервера).Прозрачность именования.Две формыпрозрачностиименования различают - прозрачность расположения(/server/d1/f1) и прозрачность миграции (когда изменение расположения файла не требуетизменения имени).Имеются три подхода к именованию:машина + путь;монтирование удаленных файловых систем в локальную иерархию файлов;единственное пространство имен, которое выглядит одинаково на всех машинах.Последний подход необходим для достижения того, чтобы распределенная системавыглядела как единый компьютер.Двухуровневое именование.Большинство систем используют ту или иную форму двухуровневого именования.
Файлы (идругие объекты) имеют символические имена для пользователей, но могут также иметьвнутренние двоичные имена для использования самой системой. Например, в операцииоткрыть файл пользователь задает символическое имя, а в ответ получает двоичное имя,которое и использует во всех других операциях с данным файлом.Способы формирования двоичных имен различаются в разных системах:имя может указывать на сервер и файл;в качестве двоичных имен при просмотре символьных имен возвращаются мандаты,содержащие помимо прав доступа либо физический номер машины с сервером, либосетевой адрес сервера, а также номер файла.В ответ на символьное имя некоторые системы могут возвращать несколько двоичных имен(для файла и его дублей), что позволяет повысить надежность работы с файлом.255.1.3Семантика разделения файлов.UNIX-семантика.Естественная семантика однопроцессорной ЭВМ - если за операцией записи следует чтение,торезультат определяется последней из предшествующих операций записи.
Враспределенной системе такой семантики достичь легко только в том случае, когда имеетсяодин файл-сервер, а клиенты не имеют кэшей. При наличии кэшей семантика нарушается.Надо либо сразу все изменения в кэшах отражать в файлах, либо менять семантику разделенияфайлов.Еще одна проблема - трудно сохранить семантику общего указателя файла (в UNIX он общийдля открывшего файл процесса и его дочерних процессов) - для процессов на разных ЭВМтрудно иметь общий указатель.Неизменяемые файлы - очень радикальный подход к изменению семантики разделенияфайлов.Только две операции - создать и читать. Можно заменить новым файлом старый - т.е.
можноменять директории. Если один процесс читает файл, а другой его подменяет, то можнопозволить первому процессу доработать со старым файлом, в то время как другие процессымогут уже работать с новым.Семантика сессий.Изменения открытого файла видны только тому процессу (или машине), который производитэти изменения, а лишь после закрытия файла становятся видны другим процессам (илимашинам). Что происходит, если два процесса одновременно работали с одним файлом - либорезультат будет определяться процессом, последним закрывшим файл, либо можно толькоутверждать, что один из двух вариантов файла станет текущим.Транзакции.Процесс выдает операцию «НАЧАЛО ТРАНЗАКЦИИ», сообщая тем самым, что последующиеоперации должны выполняться без вмешательства других процессов.
Затемвыдаетпоследовательностьчтенийизаписей, заканчивающуюся операцией«КОНЕЦТРАНЗАКЦИИ». Если несколько транзакций стартуют в одно и то же время, то системагарантирует, что результат будет таким, каким бы он был в случае последовательноговыполнения транзакций (в неопределенном порядке). Пример - банковские операции.5.2Реализация распределенных файловых систем.Выше были рассмотрены аспекты распределенных файловых систем, которые видныпользователю. Ниже рассматриваются реализационные аспекты.5.2.1Использование файлов.Приступая к реализации очень важно понимать, как система будет использоваться. Приведемрезультаты некоторых исследований использования файлов (статических и динамических) вуниверситетах. Очень важно оценивать представительность исследуемых данных.a) большинство файлов имеют размер менее 10К.
(Следует перекачивать целиком).b) чтение встречается гораздо чаще записи. (Кэширование).c) чтение и запись последовательны, произвольный доступ редок.(Упреждающее кэширование, чтение с запасом, выталкивание после записи следуетгруппировать).26d) большинство файлов имеют короткое время жизни. (Создавать файл в клиенте и держатьего там до уничтожения).e) мало файлов разделяются (кэширование в клиенте и семантика сессий).f) существуют различные классы файлов с разными свойствами.(Следует иметь в системе разные механизмы для разных классов).5.2.2Структура системы.Есть ли разница между клиентами и серверами? Имеются системы, где все машины имеютодно и то же ПО и любая машина может предоставлять файловый сервис. Есть системы, вкоторых серверы являются обычными пользовательскими процессами и могут бытьсконфигурированы для работы на одной машине с клиентами или на разных.
Есть системы, вкоторых клиенты и серверы являются фундаментально разными машинами с точки зренияаппаратуры или ПО (требуют различных ОС, например).Второй вопрос - должны ли быть файловый сервер и сервер директорий отдельнымисерверами или быть объединенными в один сервер. Разделение позволяет иметь разныесерверы директорий (UNIX, MS-DOS) и один файловый сервер. Объединение позволяетсократить коммуникационные издержки.В случае разделения серверов и при наличии разных серверов директорий для различныхподдеревьев возникает следующая проблема.
Если первый вызванный сервер будетпоочередно обращаться ко всем следующим, то возникают большие коммуникационныерасходы. Если же первый сервер передает остаток имени второму, а тот третьему, и т.д., то этоне позволяет использовать RPC.Возможный выход - использование кэша подсказок. Однако в этом случае при получении отсервера директорий устаревшего двоичного имени клиент должен быть готов получить отказот файлового сервера и повторно обращаться к серверу директорий (клиент может не бытьконечным пользователем!).Последний важный вопрос - должны ли серверы хранить информацию о клиентах.Серверы с состоянием.
Достоинства.a) Короче сообщения (двоичные имена используют таблицу открытых файлов).b) выше эффективность (информация об открытых файлах может храниться в оперативнойпамяти).c) блоки информации могут читаться с упреждением.d) убедиться в достоверности запроса легче, если есть состояние (например, хранить номерпоследнего запроса).e) возможна операция захвата файла.Серверы без состояния. Достоинства.a)b)c)d)e)устойчивость к ошибкам.не требуется операций ОТКРЫТЬ/ЗАКРЫТЬ.не требуется память для таблиц.нет ограничений на число открытых файлов.нет проблем при крахе клиента.275.2.3Кэширование.В системе клиент-сервер с памятью и дисками есть четыре потенциальных места дляхранения файлов или их частей.Во-первых, хранение файлов на дисках сервера. Нет проблемы консистентности, так кактолько одна копия файла существует.
Главная проблема - эффективность, поскольку дляобмена с файлом требуется передача информации в обе стороны и обмен с диском.Во-вторых, кэширование в памяти сервера. Две проблемы - помещать в кэш файлы целикомили блоки диска, и как осуществлять выталкивание из кэша.Коммуникационные издержки остаются.Избавиться от коммуникаций позволяет кэширование в машине клиента.В третьих, кэширование на диске клиента. Оно может не дать преимуществ передкэшированием в памяти сервера, а сложность повышается значительно.Поэтому рассмотрим подробнее четвертый вариант - организацию кэширования в памятиклиента.
При этом имеется три различных способа:a) кэширование в каждом процессе. (Хорошо, если c файлом активно работает один процесс многократно открывает и закрывает файл, читает и пишет, например в случае процессабазы данных).b) кэширование в ядре. (Накладные расходы на обращение к ядру).c) кэш-менеджер в виде отдельного процесса. (Ядро освобождается от функций файловойсистемы, но на пользовательском уровне трудно эффективно использовать память,особенно в случае виртуальной памяти. Возможна фиксация страниц, чтобы избежатьобменов с диском).Оценить выбор того или иного способа можно только при учете характера приложений иданных о быстродействии процессоров, памятей, дисков и сети.Консистентность кэшей.Кэширование в клиенте создает серьезную проблему - сложность поддержания кэшейсогласованном состоянии.вАлгоритм со сквозной записью.Этот алгоритм, при котором модифицируемые данные пишутся в кэш и сразу же посылаютсясерверу, не является решением проблемы.
При его использовании в мультипроцессорах всекэши “подслушивали” шину, через которую там осуществляются все “сквозные” записи впамять, и сразу же обновляли находящиеся в них данные. В распределенной системе такое“подслушивание” невозможно, а требуется перед использованием данных из кэша проверять,не устарела ли информация в кэше. Кроме того, запись вызывает коммуникационные расходы.Алгоритм сотложеннойзаписью. Через регулярные промежутки времени всемодифицированные блоки пишутся в файл (так на традиционных ЭВМ работает OC UNIX).Эффективность выше, но семантика непонятна пользователю.Алгоритм записи в файл при закрытии файла. Реализует семантику сессий. Такойалгоритм, на первый взгляд, кажется очень неудачным для ситуаций, когда несколькопроцессов одновременно открыли один файл и модифицировали его.
Однако, аналогичнаякартина происходит и на традиционной ЭВМ, когда два процесса на одной ЭВМ открываютфайл, читают его, модифицируют в своей памяти и пишут назад в файл.Алгоритм централизованного управления. Можно выдержать семантику UNIX, но неэффективно, ненадежно, и плохо масштабируется.285.2.4Размножение.Система может предоставлять такой сервис, как поддержание для указанных файловнескольких копий на различных серверах.
Главные цели:1) Повысить надежность.2) Повысить доступность (крах одного сервера не вызывает недоступность размноженныхфайлов).3) Распределить нагрузку на несколько серверов.Имеются три схемы реализации размножения:a) Явное размножение (непрозрачно). В ответ на открытие файла пользователю выдаютсянесколько двоичных имен, которые он должен использовать для явного дублированияопераций с файлами.b) «Ленивое» размножение. Сначала копия создается на одном сервере, а затем он самавтоматически создает (в свободное время) дополнительные копии и обеспечивает ихподдержание.c) Симметричное размножение. Все операции одновременно вызываются в несколькихсерверах и одновременно выполняются.Протоколы коррекции.Просто посылка сообщений с операцией коррекции каждой копии является не оченьхорошим решением, поскольку в случае аварий некоторые копии могут остаться нескорректированными.
Имеются два алгоритма, которые решают эту проблему.(1)Метод размножения главной копии. Один сервер объявляется главным, а остальные подчиненными. Все изменения файла посылаются главному серверу. Он сначалакорректирует свою локальную копию, а затем рассылает подчиненным серверамуказания о коррекции. Чтение файла может выполнять любой сервер. Для защиты отрассогласования копий в случае краха главного сервера до завершения им рассылки всехуказаний о коррекции, главный сервер до выполнения коррекции своей копиизапоминает в стабильной памяти задание на коррекцию. Слабость - выход из строяглавного сервера не позволяет выполнять коррекции.(2)Метод одновременной коррекции всех копий.