Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Протокол NFS



Этот протокол определяет набор RPC-запросов, которые реализуют операции с отдаленными файлами и каталогами

Поиск файла в каталоге — LOOKUP, чтение набора элементов каталога — READDIR, создание и исключение файлов и каталогов - CREATE, REMOVE, MKDIR, RMDIR, чтение и записывание файлов - READ и WRITE, работа с атрибутами файлов - GETATTR, SETATTR).

Среди этих NFS-запросов, однако, нет аналогов системных вызовов ореп() и close(). Это отображает фундаментальное свойство NFS-серверов — они не хранят состояния между обращениями клиентов. Такой подход используют из-за опасности потери состояния в случае выхода сервера из строя (в этом случае последующее использование открытых файлов станет невозможным).

То, что NFS-протокол не хранит состояния, определяет две важны характеристики запросов, которые входят у него.

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

2. Большинство NFS-запросов должны быть идемпотентными. Это значит, что NFS-клиент может отослать серверу один и тот же запрос несколько раз, при этом общий результат их выполнения должен остаться тем самым. Например, чтение дискового блока из файла (запрос READ) является идемпотентным: в результате выполнения операции возвращаются те же данные независимо от того, сколько раз она была повторена.

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

Протокол NFS — это реализация протокола запроса-справки. Если клиент не получит подтверждения выполнения запроса к исчерпанию времени ожидания, он пересылает тот же запрос повторно. Это повторяют до тех пор, пока запрос не будет выполнен (при этом время ожидания подтверждения с каждой новой попыткой удваивают), после чего клиент продолжает свою работу, будто и ничего не случилось.

Если сервер выйдет из строя, клиент будет повторять запросы в цикле и продолжать работу не сможет. Способ завершения цикла задают во время монтирования каталога. В случае жесткого монтирования (hard mount) цикл будет длиться бесконечно (он может быть прерван только после возобновления работы сервера), в случае мягкого монтирования (soft mount) цикл перерывают по окончании некоторое время (обычно нескольких минут), а клиенту возвращают ошибку. За умалчиванием используют жесткое монтирование.





Дата публикования: 2015-04-07; Прочитано: 313 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...