Спонсор: Microsoft
Опубликован: 13.11.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 20:

Виртуальные файловые системы (VFS). Реализации файловых систем. Сетевая файловая система NFS

< Лекция 19 || Лекция 20: 12345 || Лекция 21 >

Сетевая файловая система NFS

Система NFS (Network File System) - одна из наиболее распространенных сетевых файловых систем, разработанная фирмой Sun Microsystems и используемая в системе Solaris.

NFS – это спецификация и реализация программной системы для доступа к удаленным файлам через локальную (или глобальную) сеть.

Данная реализация является частью операционных систем Solaris и SunOS, использующих быстрый, но менее надежный асинхронный сетевой протокол, основанный на датаграммах (UDP/IP), и сеть Ethernet (сетевые протоколы подробно рассматриваются далее в соответствующих лекциях курса).

В реализации NFS используются процессы-демоны nfsd (обработка NFS-запросов клиентов) и mountd (обработка запросов монтирования), а также biod (асинхронный ввод-вывод блоков удаленных файлов на клиенте).

Взаимодействующие рабочие станции рассматриваются в NFS как набор независимых машин с независимыми файловыми системами, что позволяет совместно использовать файловые системы прозрачным образом.

Удаленная директория монтируется на локальную директорию. Смонтированная директория трактуется как полное поддерево локальной файловой системы, заменяя поддерево локальной файловой системы.

Спецификация удаленной директории для операции монтирования не является прозрачной; необходимо указать имя машины с удаленной директорией. После этого файлы в удаленной директории могут быть доступны прозрачным образом, т.е. операции над локальными и удаленными файлами программируются одинаково. При этом выполняется доступ только к тем блокам файла, к которым реально происходит обращение, а не ко всему файлу.

С учетом назначения полномочий доступа, потенциально любая файловая система (или директория внутри файловой системы), может быть смонтирована удаленно поверх локальной директории.

NFS спроектирована для работы в неоднородном окружении различных машин, ОС и сетевых архитектур; спецификация NFS от них не зависит.

Эта независимость достигнута благодаря использованию примитивов RPC (Remote Procedure Call – удаленный вызов процедуры),реализованных поверх External Data Representation (XDR) – протокола – машинно-независимого представления данных для их передачи через сеть.

Спецификация NFS различает сервисы, обеспечиваемые механизмом монтирования, и фактические удаленные файловые системы.

Протокол монтирования в NFS устанавливает первоначальную логическую связь между сервером и клиентом.

Операция монтирования включает имя удаленной директории, подлежащей монтированию, и имя машины-сервера, на которой она хранится.

Запрос на монтирование отображается на соответствующий RPC и передается на mount-сервер, исполняемый на серверной машине.

Список экспорта (export list) указывает список файловых систем, которые сервер экспортирует для монтирования, а также имена машин, на которых разрешено их монтировать.

Исполняя запрос на монтирование, соответствующий этому списку, сервер возвращает обработчик файла (file handle)— ключ к дальнейшему доступу. File handle содержит идентификатор файловой системы и номер inode (индексного узла), идентифицирующий монтируемую директорию внутри экспортируемой файловой системы.

Операция монтирования изменяет только точку зрения клиента и не влияет на серверную часть.

Монтирование в NFS иллюстрируется рис. 20.11 и рис. 20.12: на рис. 20.11 изображены три независимых файловых системы, а на рис. 20.12 – результат монтирования в NFS одной из них (директория dir1 смонтировалась как поддиректория удаленной файловой системы /usr/local.

Три независимых файловых системы.

Рис. 20.11. Три независимых файловых системы.

Монтирование в NFS.

Рис. 20.12. Монтирование в NFS.

Протокол NFS предоставляет набор RPC для удаленных операций над файлами. Процедуры поддерживают следующие операции:

  • Поиск файла в директории
  • Чтение набора элементов директории
  • Управление ссылками и директориями
  • Доступ к атрибутам файлов
  • Чтение и запись файлов

NFS – серверы не имеют состояния ( stateless ); каждый запрос должен иметь полный набор аргументов.

Модифицированные данные должны быть направлены на диск сервера до того, как результаты вернутся к клиенту (теряется возможность кэширования).

NFS – протокол не поддерживает механизмы управления параллельным доступом.

Система NFS имеет три основных уровня архитектуры:

  • UNIX – интерфейс файловой системы (основан на вызовах open, read, write и close calls и на дескрипторах файлов).
  • Уровень Virtual File System (VFS) – различает локальные и удаленные файлы, и в дальнейшем локальные файлы обрабатываются в соответствии с типами их файловых систем. VFS активизирует операции, специфичные для конкретной файловой системы, для обработки локальных запросов в соответствии с типами файловых систем. Уровень VFS вызывает процедуры NFS – протокола для удаленных запросов.
  • NFS – сервисный уровень – нижний уровень архитектуры; реализует NFS – протокол.

Схема архитектуры NFS приведена на рис. 20.13.

Схема архитектуры NFS.

увеличить изображение
Рис. 20.13. Схема архитектуры NFS.

Трансляция имен путей в NFS выполняется путем разбивки имени пути на последовательность имен компонент и выполнения отдельного NFS - поиска для каждой пары (компонента, vnode директории).

Для ускорения поиска на клиентской машине организуется кэш имен удаленных директорий.

Удаленные операции NFS обеспечивают почти взаимно-однозначное соответствие между обычными системными вызовами UNIX и удаленными вызовами процедур протокола NFS (за исключением открытия и закрытия файлов).

NFS основана на парадигме удаленных сервисов, но поддерживает буферизацию и кэширование для повышения эффективности.

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

Клиенты не освобождают задерживаемые блоки до тех пор, пока сервер не подтвердит, что они записаны на диск.

Выражаясь менее формально, впечатления от многолетней работы автора в локальной сети с использованием NFS достаточно благоприятные. Система обеспечивает монтирование удаленных файловых систем и работу с ними, как если бы они были расположены на локальной машине (только, разумеется, с некоторым замедлением). Она достаточно удобна и надежна. При каких-либо сбоях характерной чертой NFS является то, что она оставляет в локальных директориях временные файлы – копии удаленных файлов – с именами вида .N0035 и т.д. В таком случае рекомендуется удалить эти файлы обычным образом и продолжить работу.

< Лекция 19 || Лекция 20: 12345 || Лекция 21 >
Гульжан Мурсакимова
Гульжан Мурсакимова
Василий Четвертаков
Василий Четвертаков
Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия