
628 Глава 10. Распределенные файловые системы
open, которая является новой для NFS и радикально меняет методы работы с фай-
лами, принятые в прежних версиях. Вплоть до версии 4 система NFS строилась
так, что ее файловые серверы не сохраняли информацию о состоянии. По причи-
нам, которые мы обсудим чуть позже в этой главе, в версии 4 от этого принципа
пришлось отказаться. В результате можно считать, что при работе с одним и тем
же файлом серверы обычно сохраняют состояние файла между операциями.
Операция rename используется для изменения имени существующего файла.
Файлы удаляются при помощи операции remove. В версир! 4 эта операция ис-
пользуется для удаления файлов любых типов. В предыдущей версии для удале-
ния вложенных каталогов существовала отдельная операцрш rmd1r. Файлы уда-
ляются по имени, и в результате число жестких ссылок на них уменьшается на
единицу. Если число ссылок падает до нуля, файл можно уничтожить.
Версия 4 позволяет клиентам открывать и закрывать обычные файлы. От-
крытие несуществующего файла приводит к его созданию. Для открытия файла
клиент указывает его имя, а также те или иные значения атрибутов. Так, напри-
мер,
клиент может указать, что файл должен быть открыт для чтения. Если файл
успешно открыт, клиент может работать с этим файлом при помощи дескрипто-
ра файла. Этот дескриптор используется также и для закрытия файла (операция
close).
При помощи операции close клиент уведомляет сервер, что доступ к фай-
лу ему больше не нужен. Сервер, в свою очередь, может сбросить информацию
о состоянии файла, которую он поддерживал для организации доступа клиента к
этому файлу.
Операция lookup используется для получения дескриптора файла по заданно-
му полному пути к нему. В NFS версии 3 операция lookup не разрешала имена за
монтажной точкой (напомним, что, как мы говорили в главе 4, монтажная точ-
ка
—
это каталог, который, в сущности, представляет собой ссылку на вложен-
ный каталог в чужом пространстве имен). Так, предположим, что имя /remote/vu
соответствует монтажной точке в графе имен. При разрешении имени /remote/
vu/nnbox операция lookup в NFS версии 3 возвращает дескриптор файла монтаж-
ной точки /remote/vu вместе с остатком полного имени (то есть mbox). После
этого клиент должен был явно смонтировать файловую систему, необходимую
для завершения поиска имени. Файловая система в таком контексте
—
это набор
файлов, атрибутов, каталогов и блоков данных, которые совместно реализованы
в виде логического устройства с блочной структурой данных [117, 450].
В версии 4 все стало значительно проще. Теперь lookup в состоянии разре-
шить имя целиком даже в случае перехода через монтажные точки. Отметим, что
такой подход возможен только в том случае, если чужая файловая система уже
смонтирована в соответствующую монтажную точку. Клиент в состоянии обна-
ружить переход через монтажную точку, отслеживая идентификатор файловой
системы, который будет возвращен ему по окончании разрешения имени.
Для чтения элементов каталога существует отдельная операция readdl
г,
кото-
рая возвращает список пар {имя,
дескриптор
файла) вместе со значениями атри-
бутов, запрошенных клиентом. Клиент может также определить, сколько элемен-
тов ему следует возвратить. Операция возвращает смещение, которое может быть
использовано при следующем вызове readdir для чтения следующей порции эле-
ментов.