15.17 Протокол NFS
Последней реализацией NFS является версия 3, хотя продолжают успешно применяться реализации версии 2. Программа NFS сервера имеет номер 100003 и, по соглашению, NFS захватывает при инициализации порт 2049.
15.17.1 Описатели файлов
Когда клиент монтирует каталог, протокол возвращает ему описатель файла (file handle), который должен идентифицировать данный каталог в последующих запросах клиента. Монтируемый каталог может содержать подкаталоги, имеющие, в свою очередь, собственные подкаталоги, и т.д. Возможно, путь к файлу будет содержать несколько уровней вложенности. Например, перед тем как клиент сможет изменить файл:
/usr/john/book/chapter3
необходимо получить описатель данного файла с сервера. Для этого NFS выполняет последовательный поиск (одно перемещение по дереву за каждый запрос). Для нашего файла клиент должен:
■ Послать на сервер запрос на просмотр описателей файлов каталога
■ Послать на сервер запрос на просмотр описателей файлов каталога
■ Послать на сервер запрос на просмотр описателей файлов каталога
Таким образом, для получения описателя файла клиент NFS должен отправить несколько запросов.
15.17.2 Процедуры NFS
Существуют процедуры NFS, обеспечивающие клиенту доступ, чтение или запись удаленного файла. Клиент может узнать структуру и реальную емкость удаленной файловой системы либо запросить атрибуты удаленного файла. Допустимо удалять и переименовывать файлы. Некоторые процедуры специфичны для файловой системы Unix (например, связывание с именем псевдонима файла). Процедуры NFS версий 2 и 3 кратко представлены в таблице 15.5.
Таблица 15.5 Процедуры NFS версий 2 и 3
Процедура | Версия 2 | Версия 3 |
---|---|---|
0 | Пустая процедура для тестирования | Пустая процедура для тестирования. |
1 | Получить атрибуты файла | Получить атрибуты файла. |
2 | Установить атрибуты файла | Установить атрибуты файла. |
3 | Устаревшая процедура | Просмотр имени файла. По описателю файла для каталога и имени подкаталога или файла возвратить описатель файла для подкаталога или файла. |
4 | Просмотр имени файла | Проверка полномочий доступа. |
5 | Чтение информации о связанной с файлом символьной ссылке | Чтение информации о связанной с файлом символьной ссылке. |
6 | Чтение данных из файла | Чтение данных из файла |
7 | Не используется | Записать данные в файл. Запрос может указывать, будет ли кешироваться операция записи и будет ли результат операции фиксироваться в устойчивом состоянии до отправки ответа. |
8 | Записать данные в файл | Создать файл. |