6 N F S во FreeBSD


6.1. ВВЕДЕНИЕ

Созданная в 1985 году фирмой Sun, NFS (Network File System) стала фактическим стандартом для систем управления распределенными данными.

NFS создает общую файловую систему из файловых систем нескольких машин, соединенных в сеть, создавая при этом у пользователя иллюзию, что он работает с одной файловой системой.
Система NFS,часто используемая для связи нескольких машин в среде ОС UNIX и для включения в среду UNIX PC с помощью PC-NFS, доступна, кроме того,на машинах серий Cray,IBM,Dec ...

6.2. ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ

6.2.1. Предлагаемый сервис

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

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

Для администратора рабочих станций UNIX,NFS выглядит как расширение локальной команды "монтирования" (mount) на файловые системы, присутствующие в сети.

На рабочих станциях Sun NFS используется для управления станциями без жестких дисков.

NFS не управляет одновременным доступом нескольких пользователей к одному и тому же файлу. Это дополнительная функция, реализуемая следящей программой (демоном) LOCKD.

В случае "двоичного" файла, несмотря на прозрачность доступа возникает проблема различного представления данных на разных машинах. NFS не конвертирует данные. Вам следует использовать "форматированные" данные или применить XDR (eXternal Data Representation) или аналогичное программное средство.

6.2.2. Механизмы реализации

Модель клиент-сервер
--------------------

NFS реализована в соответствии с моделью клиент-сервер. Машина, подсоединенная к сети, является сервером NFS, если она способна предоставить свою файловую систему другим машинам ; говорят, что она "экспортирует" свою файловую систему.

Машина является клиентом NFS, если она использует файловую систему, экспортируемую сервером ; говорят, что она "монтирует" или "импортирует" файловую систему (Рис. 6.1)

"Импортирует" файловую "Экспортирует" файловую систему и/или каталоги систему и/или каталоги

┌─────────────┐ ┌─────────────┐
│ КЛИЕНТ │ │ СЕРВЕР │
└──────┬──────┘ └──────┬──────┘
──────────┴────────────────────────────┴────────────────

Рисунок 6.1 - Клиент и сервер NFS.

Система может быть :
- одновременно клиентом и сервером (станции с жестким диском)
- только клиентом (PC или станции без диска)
- только сервером (центральные IBM)

Один сервер может обслуживать несколько клиентов. Одна ма-
шина-клиент способна обращаться к нескольким серверам.

Обычно серверы "экспортируют" свои файловые системы пол-
ностью (за исключением нескольких систем,например SunOS версий
4.x,которая позволяет экспортировать отдельные каталоги). Кли-
енты,напротив,"монтируют" только каталоги.

Виртуальные файловые системы
----------------------------

Прозрачный доступ к файловым системам различных типов
(UNIX,DOS ...) реализован посредством встроенного в ядро ин-
терфейса VFS : Virtual File System (Рисунок 6.2). Каждой смон-
тированной файловой системе соответствует в ядре своя структу-
ра VFS. В то время,как файловые системы UNIX манипулируют
элементами,называемыми inode (index node - индексные узел -
индексный дескритор файла), NFS использует понятие vnode
(virtual node). Речь идет о,в некотором смысле, о виртуальном
inode, которому соответствует либо локальный физический inode
либо удаленный физический inode (или еще что-то,реализующее
управление файлами на не UNIX машинах).

NFS, таким образом, использует систему управления виртуаль-
ными файлами,которая приводится в соответствии ("mapping") с
системой управления реальными файлами, в случае, если файл яв-
ляется локальным.

Протокол
--------

NFS использует RPC (Remote Procedure Call) для управления
диалогами между клиентами и серверами и XDR (eXternal Data
Representation) для обмена данными,связанными с протоколом (но
не для данных пользователя !)

Что касается нижних уровней протокола, то в принципе NFS
можно надстроить над TCP. Однако, все текущие версии из сооб-
ражений эффективности используют UDP.

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

2 7

┌────────v────────┐ ┌───────────────────┐
│ ┌─────────────┐ │ │ ┌──────────────┐ │
│ │ │ │ │ │ │ │
│ │ 3 │ │ │ │ 3 │ │
│ └─────────────┘ │ │ └──────────────┘ │
│ / │ │ ^ │
│ v v │ │ / v │
│ ┌──┐┌──┐ │ │ ┌──┐ ┌──┐ │
│ │4 ││5 │ │ │ │ 8│ │4 │ │
│ └──┘└──┘ │ │ └──┘ └──┘ │
│ │ │ │ │ ^ │ │
│ v v │ │ │ v │
│ ┌───┐ ┌───┐ │ │ ┌─┴┐ ┌──┐ │
│ │10 │ │ 6 │ │ │ │6 │ │10│ │
│ └───┘ └─┬─┘ │ │ └──┘ └──┘ │
└────────────│────┘ └──────^────────────┘
v │
┌─────────────────────┴────┐
│ 9 │
└──────────────────────────┘

Рис. 6.2
1 - Клиент
2 - Обращение к системе
3 - Интерфейс VFS (Virtual File System)
4 - Система локальных файлов UNIX
5 - клиент NFS
6 - RPC и XDR
7 - Сервер
8 - NFS сервер
9 - Сеть
10- Данные

Рисунок 6.2. Механизмы NFS, реализующие взаимодействие машин UNIX.


Идентификация пользователей
---------------------------

Проверяя право доступа к файлам,система идентифицирует
пользователя на сервере точно так же,как и на локальном терми-
нале - с помощью его номеров UID (User ID) и GID (Group ID).
Отсюда вытекает важное следствие : для того,чтобы сохранить
право доступа к своим файлам,пользователь должен иметь одина-
ковые UID и GID на всех машинах.

Привилегированный пользователь теряет свои привилегии по
доступу к файлам в сети, если только это не предусмотрено в
конфигурации.


Передача информации между клиентом и сервером в UNIX
----------------------------------------------------

NFS встроено в ядро в виде набора следящих программ (демо-
нов). Клиент и сервер обмениваются информацией следующим обра-
зом (рисунок 6.3.) :
- для выполнения операции монтирования, клиент NFS обращает-
ся к демону rpc.mountd, расположенному со стороны сервера,
который посылает назад идентификатор (file handle), ассо-
циированный со смонтированным каталогом;
- для выполнения файловых операций, клиент NFS посылает
идентификатор (file handle) и описание требуемой операции
демону nfsd, расположенному со стороны сервера. Этот демон
использует для выполнения операции функции ядра.


┌──────────────────┐ ┌────────────────┐
│ 1 │ │ 5 │
│ ┌─────────┐ │ ┌─┐ │ ┌──────────┐ │
│ │ 2 │< ─── │1│────> │ 4 │ │
│ └────┬────┘ │ └─┘ │ └──────────┘ │
│ │ │ │ ^ │
│ ┌┴┐ │ │ ┌┴┐ │
│ │3│ │ │ │2│ │
│ └┬┘ │ │ └┬┘ │
│ v │ │ v │
│ ┌─────────┐ │ ┌─┐ │ ┌──────────┐ │
│ │ 3 │<──── │4│── > │ 5 │ │
│ └─────────┘ │ └─┘ │ └──────────┘ │
└──────────────────┘ └────────────────┘
Рис. 6.3
1 - Клиент
2 - Команда mount
3 - Клиент NFS
4 - Следящая программа mountd
5 - Сервер NFS

1: Запрос на монтирование
2: Порождение идентификатора
3: Пересылка идентификатора
4: Чтение и запись с использованием идентификатора

Рисунок 6.3. - Обмен данными между клиентом и сервером NFS.


Механизмы кэширования
---------------------

В операционной системе UNIX ввод-вывод в "блокирующем" ре-
жиме осуществляется с помощью кэша, который и позволяет реали-
зовать опережающее чтение ("read ahead") и отсроченную запись
("delayed write").
Что касается клиентов NFS,то в этом случае производитель-
ность ввода-вывода позволяют улучшить следящие программы ("де-
моны") biod (обычно их четыре) - они обеспечивают опережающее
чтение и сохраняют соответствующую информацию в памяти клиен-
та. Кроме того, система запоминает атрибуты файлов и катало-
гов. Запись выполняется лишь в том случае ,если блок пересылки
NFS полон. Если нет доступных следящих программ biod, диалог
выполняется непосредственно с одним из серверов nfsd.
NFS обеспечивает корректность хранящейся в кэше информации
тем, что периодически опрашивает сервер.
Сервер NFS выполняет запись непосредственно, без использова-
ния механизма кэширования. При чтении, напротив, используется
кэш.

Безопасность
------------

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

Пользователь машины клиента, при этом, идентифицируется
простонапросто номером, чего явно недостаточно. Фирма Sun об-
ладает версией Secure NFS, использующей систему идентификации
DES (Data Encryption Standard) и механизмы шифрования. Эта
версия недоступна для большинства других разработчиков.


6.3. АДМИНИСТРАТИВНЫЕ ФУНКЦИИ И ЭКСПЛУАТАЦИЯ

6.3.1 Административные функции

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

Для того,чтобы NFS функционировала в режиме сервера, следует
активировать несколько следящих программ :
- следящую программу portmap, функции которой описываются в
главе, посвященной RPC ;
- следящуюпрограмму rpc.mountd, реализующую операции монти-
рования и демонтирования ресурсов ;
- следящие программы nfsd : именно они и выполняют, с по-
мощью ядра, запросы передаваемые машинами-клиентами. Как
правило, запускаются четыре следящих программы nfsd.

Необязательно запускать следящие программы на машине-клиен-
те, однако, как правило, все же запускаются четыре программы
biod, позволяющие улучшить характеристики ввода-вывода.

Сейчас мы рассмотрим пример, который проиллюстрирует принци-
пы настройки сервера и клиента, в качестве которых используют-
ся две станции Sun (Рис 6.4.) :

- сервер ordinfm "экспортирует" каталоги usr/share (только
чтение) и /home (чтение и запись) ;
- клиент ordinaq "монтирует" каталоги /usr/share/man и
/home/testnfs.



┌─────────────┐
Экспортрует : │ СЕРВЕР NFS │
/usr/share/home │ ordinfm │
└──────┬──────┘
──────────┬────────────────────────────┴────────────────
┌──────┴──────┐
│ КЛИЕНТ NFS │ Импортирует
│ ordinaq │ /usr/share/man
└─────────────┘ /home/testnfs

Рис. 6.4. - пример эксплуатации NFS

Конфигурация на серверах
------------------------

Системы экспортируемых файлов описываются в файле
/etc/exports. Система файлов экспортируется в машину или груп-
пу машин (группу машин можно описать в файле /etc/netgroup).
Можно, кроме того, задать права доступа к экспортируемым фай-
лам.

В системе SunOS, команда exportfs позволяет временно экспор-
тировать систему файлов ; если выдать эту команду без парамет-
ров, она выведет список экспортированных файлов. В других сис-
темах следует модифицировать файл /etc/exports, который
считывается заново при каждом очередном запросе на "монтирова-
ние".

В нашем примере, для того, чтобы экспортировать каталоги usr
/share и /home, следует ввести следующие команды :
#exportfs /usr/share -ro
#exportfs /home -rw

(значения параметров можно понять, изучив структуру файла
/etc/exports).

Файл /etc/exports имеет следующую структуру :

система_файлов -опции список_клиентов

где :
- система_файлов : система экспортируемых файлов или каталогов
- опции : может принимать следующие значения :
- ro : ресурсы экспортируются в режиме только чтения
- rw : ресурсы экспортируются в режиме чтения и записи
- root : клиент сохраняет права привилегированного пользова-
теля
- noroot : клиент теряет права привилегированного пользова-
теля
- список_клиентов : список машин-клиентов или ссылка на спи-
сок машин-клиентов, указанных в файле /etc/netgroup.

По умолчанию, файловая система экспортируется для всех машин
в режиме чтения и записи, и клиент теряет права привилегиро-
ванного пользователя.

В нашем примере файл /etc/exports может выглядеть следующим
образом (предполагается, что каталог /usr/share делится между
всеми машинами, а каталог /home принадлежит исключительно ма-
шине ordinaq, причем привилегированный пользователь на ней
сохраняет свои права) :
/usr/share -ro
/home -rw,root ordinaq


Конфигурация на клиентах
------------------------

Используемый каталог следует смонтировать,что делается либо
с помощью выдаваемой "вручную" команды монтирования, либо ав-
томатически при запуске станции.

- монтирование вручную

#mount -t nfs -o опции каталог_сервер каталог_клиент

где
- каталог_сервер : имя машины сервера и имя монтируемого
каталога (имя каталога следует указывать полностью,начи-
ная с корневого), в виде : имя_сервера:имя_каталога ;
- каталог_клиент : имя каталога,задаваемое полностью, начи-
ная с корневого каталога ;
- опции : могут принимать следующие значения
- rw (read-write) или ro (read-only) : устанавливает, при
необходимости, защиту (только чтение) на каталоге сер-
вера ;
- suid или nosuid : указывает,выполнять или не выполнять
программы с установленным битом SUID ;
- bg (background) или fg (foreground) : опция, используе-
мая исключительно при монтировании. В любом случае хотя
бы одна попытка монтирования выполняется в режиме
foreground (т.е. система не переходит к другой операции
до тех пор, пока не будет завершена эта). Остальные по-
пытки монтирования выполняются в режиме background (уп-
равление передается оператору) или foreground (в зави-
симости от выбранного значения) ;
- retry=n : в случае, если первая попытка монтирования не
удалась, операция повторяется еще n раз. После n+1 -й
безуспешной попытки монтирование прекращается и пользо-
вателю выдается предупреждающее сообщение (mount:
server non responding - сервер не отвечает).
- soft или hard ; retrans=n ; timeo = n : после монтиро-
вания файловой системы, каждый запрос NFS ждет n (зна-
чение timeo) десятых долей секунды. Если ответа нет,
значение времени ожидания умножается на два и запрос
повторяется. Если число повторений достигло значения,
указанного в опции retrans=n, то в случае, если было
указано значение soft, система выдает сообщение об
ошибке (RPC timeout) и запрос снимается, если же файло-
вая система была смонтирована с параметром hard, выда-
ется предупреждающее сообщение (NFS server non
responding, still trying - NFS сервер не отвечает, все
еще пробую) и запрос повторяется до тех пор, пока он не
завершится успехом.
- intr или nointr : опция используется только в том слу-
чае, если файловая система монтируется с опцией hard.
Опция intr позволяет снять с клавиатуру текущую опера-
цию в том случае, если сервер не отвечает ;
- rsize=n : размер блока UDP при чтении (по умолчанию,
8192 байта). Речь идет о величине кванта обмена между
клиентом и сервером.
- wsize=n : размер блока UDP при записи (по умолчанию,
8192 байта).

Мы советуем Вам использовать следующие значения :
- hard или soft : значение hard позволяет продолжить работу
при сбое запроса, в отличие от значения soft. Sun советует
использовать значение hard для каталогов, смонтированных в
режиме записи, однако это совершенно не обязательно. Для
прикладных программ, лучше всего монтировать в режиме
hard. С другой стороны,для разработчиков использование
значения soft более практично : оно позволяет в случае
сбоя просто прекратить ошибочную команду ;
- fg : запросы на монтирование выполняются в режиме передне-
го плана ;
- nosuid : файлы с установленным битом SUID не выполняются ;
- intr : текущую операцию можно прервать с клавиатуры, нажав
на CONTROL C или CONTROL Z (внимание : некоторые системы
устанавливают эту возможность по умолчанию).

Следующие опции можно настроить в соответствии с текущими
нуждами :
- ro (read-only) или rw (read-write) : значение rw может
привести к проблемам, связанным с целостностью информации
и/или одновременного доступа к ресурсам ;
- retry (по умолчанию, 1000) : число повторений операции
монтирования в случае неудачи
- retrans (по умолчанию, 4) : число попыток RPC повторить
запрос ;
- timeo (7 десятых секунды, по умолчанию) : время, в течение
которого клиент, выдав запрос RPC, ожидает ответа сервера.

Приведем пример команды mount :
#mount -t nfs -o hard,bg,nosuid,intr,rw,timeo=10,
retry=5 ordinfm:/home/testnfs /home/testnfs

- Автоматическое монтирование (при запуске станции) :

Параметры команды mount, при этом, хранятся в файле
/etc/fstab или /etc/checklist, в зависимости от версии.

Файл /etc/fstab имеет следующий формат :
каталог_сервер каталог_клиент nfs опции 0 0
(значения параметров описаны выше - см. монтирование вручную)

Приведем пример файла /etc/fstab :

ordinfm:/usr/share/man /usr/share/man nfs bg,ro,hard,intr 0 0
ordinfm:/home/testnfs /home/testnfs nfs bg,rw,hard,intr 0 0

В некоторых системах существует дополнительная возможность -
automount.Следящая программа automount позволяет монтировать
раздел NFS только в случае его использования - при этом раздел
автоматически демонтируется, если он не использовался долгое
время. При этом файл /etc/fstab становится ненужным. Функцио-
нирование automount задается параметрами, указываемыми в фай-
лах maps.

Операции поддержки
------------------

- Демонтирование каталога сервера

#umount каталог_клиент
где
каталог_клиент : полное имя каталога, начиная с корневого
каталога.

Для выполнения команды демонтирования, каталог_клиент не
должен быть занятым ("busy").

- список ресурсов, экспортируемых сервером, и монтируемых
клиентами

#showmnt -опции имя_сервера

где
- имя_сервера : имя машины сервера NFS
- опции : могут принимать следующие значения :
- e : выводит список каталогов, экспортируемых сервером
(содержимое файла /etc/exports) ;
- d : выводит список каталогов, смонтированных клиентами
(содержимое файла /etc/rmtab) ;
- a : выводит полный список монтирований, выполненных кли-
ентами, с указанием номера машины.

- Команда rpcinfo

#rpcinfo -p имя_сервера

Эта команда,которая будет подробно описана в главе 10, выда-
ет список список зарегистрированных и функционирующих на сер-
вере сервисных функций RPC. Среди них должны находиться nfs и
mountd.

- Команда nfsstat

#nfsstat -опции

- опции могут принимать следующие значения :
- c : информация о клиенте
- s : информация о сервере
- n : информация о NFS
- r : информация о RPC
- z : выдача информации и обнуление счетчиков

По умолчанию, используется значение -csnr.

Эта команда выводит значения счетчиков, связанных с NFS.
Значения счетчиков timeout и retrans клиента следует изучать
тща
тельно, так как они могут сообщить о неполадках в функциониро-
вании сервера. В этом случае, следует изменить значения пара-
метров монтирования в соответствии с уже данными указаниями :
увеличить значение параметра timeo, уменьшить, в случае необ-
ходимости, значения rsize и wsize.

Возможные проблемы
------------------

Ниже мы перечисляем наиболее часто встречающиеся сообщения
об ошибках и предупреждения.

- Проблемы, возникающие при монтировании

mount : ... server not responding

- диагностика : авария сервера или не функционирует NFS
или авария сети.
- проверки :
- проверьте, не находится ли сервер в состоянии ожида-
ния с помощью команды : #ping имя_сервера Вы должны
получить сообщение имя_сервера alive или сообщение о
правильной передаче.
- проверьте, функционирует ли на сервере NFS, с помо-
щью команд :
#ps -e (или ps -ax)
Должны отозваться следящие программы
portmap,rpc.mountd и nfsd ; #rpcinfo -p имя_сервера В
списке должны оказаться nfs и mountd.

mount : ... permission denied

- диагностика : экспортируемые файлы не описаны или опи-
саны неправильно
- проверки : проверьте файл /etc/exports сервера.

- Проблемы, возникающие при функционировании

NFS server x not responding, still trying

- диагностика и проверки : если вслед за этим сообщением
появляется сообщение NFS server x OK - это значит, что
запрос не получился, но был успешно повторен (если такие
сообщения возникают часто, следует увеличить значение па-
раметра монтирования timeo). В противном случае, с серве-
ром или с сетью случилось что-то серьезное (см. проверки,
описанные выше). Текущую операцию можно прервать, нажав
на клавиши CONTROL C или CONTROL Z.

RPC timeout

- речь идет о такой же проблеме, как и та, которая описана
выше - т.е. о неудавшемся запросе. Это сообщение означа-
ет, что монтирование было выполнено с параметром soft и
что запрос был прерван. Запрос следует повторить.

- Проблемы, связанные с производительностью

- диагностика : возможно, что плохо функционируют следящие
программы biod. Возможно также, что сеть очень загружена
или что процессор клиента или сервера занят.
- проверки : попробуйте снять и перезапустить следящие
программы biod на рабочей станции : #ps -ax | grep biod #
kill -9 pid1, pid2, pid3, pid4 #biod 4

6.3.2 Эксплуатация

Продукт является прозрачным для пользователя, если не счи-
тать несколько специальных операций, основные из которых опи-
саны в параграфе 6.3.3. Все команды "экспортирования" и "мон-
тирования" выполняются при запуске системы и входят в
компетенцию администраторов.

В распоряжении пользователя есть команды, позволяющие ему
контролировать функционирование NFS :
- список "экспортируемых" файлов сервера : со стороны машины
-клиента для вывода этой информации можно использовать ко-
манду showmnt ; со стороны сервера можно использовать ко-
манду exportfs или непосредственно просмотреть содержимое
файла /etc/exports ;
- список файлов, "смонтированных" машиной-клиентом : можно
воспользоваться командой mount без параметров. При этом
выводится содержимое файла /etc/mtab.

Напоминаем, что привилегированный пользователь теряет в сети
свои права, он становится "никем" ("nobody") с UID -2, если
только при экспортировании не было указано противное. Таким
образом, для него эксплуатация NFS не является прозрачной.

6.3.3. Особенности функционирования

- Правила доступа к файлам UNIX

Метод управления файлами UNIX неполностью поддерживается не-
которыми из операций : например, если первый клиент откроет
файл, а второй, в то же самое время, уничтожит этот файл, то
запросы на чтение со стороны первого клиента не будут выпол-
няться, хотя UNIX будет рассматривать этот файл как правильно
открытый и доступный.

Однако, вообще говоря, правила доступа к файлам UNIX поддер-
живаются механизмами, реализующими функционирование клиентов
UNIX.

- Атрибуты файлов

Атрибуты файлов устанавливаются клиентом NFS (дата, время,
право доступа, владелец ...)

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

- Одновременный доступ к файлу в режиме записи

Два процесса, записывающие данные в один и тот же файл, рис-
куют получить несогласованные результаты.

Вообще говоря, файлы, управляемые NFS, лучше использовать
только в режиме чтения. Если Вы хотите использовать файл в ре-
жиме записи и, при этом, управлять одновременным доступом,
воспользуйтесь следящей программой lockd (см. параграф 6.5.).

- Дата и время

Часы и календарь сервера и клиента редко согласуются, а это
может привести к определенным трудностям, в том,например, слу-
чае, если файл, создаваемый на сервере, используется затем
клиентом или наоборот.
Эта проблема очень важна для тех инструментальных средств,
которые использует дату и время, как make или SCCS.

Решением этой проблемы стал бы механизм синхронизации часов
- такой, как rdate в SunOS. Однако, не существует механизма,
общего для всех систем, хотя протокол NTP (Network Time
Protocol) становится как будто все более и более популярным.


6.4. ХАРАКТЕРИСТИКИ И ЗАГРУЗКА СЕТИ

6.4.1. Характеристики

Объявлены следующие характеристики системы :
- 300 К/сек при чтении
- 50 К/сек при записи.

Мы проверили эти значения с помощью трех программ :
- последовательного чтения из файла
- последовательной записи в файл
- рандомизированного чтения из файла
Эти программы написаны на Си и используют стандартную библи-
отеку Си.

Рисунки 6.5. и 6.6. иллюстрируют скорость передачи,получен-
ную при пересылке блоков, размером 1024 байта, между клиентом
Sun 4/65,оборудованным контроллером Emulex MD21, и сервером
Sun 4/330, оборудованным периферийным устройством того же ти-
па. Для сравнения приводятся и значения, полученные на локаль-
ных дисках.

Рисунки 6.7. и 6.8. иллюстрируют скорость передачи между Sun
4/65, оборудованным диском Emulex MD21, и сервером HP 9000
375, оборудованным диском 7937.

800 ┬
│ ┌──────┐
700 ┼ 1 │ │
│ │ │
600 ┼ │ │
│ │ │
500 ┼ │ │
│ │ │
400 ┼ │ │
│ │ │
300 ┼ │ │
│ ┌────┐ │ │
200 ┼ │ │ │ │
│ │ │ │ │
100 ┼ 2 │ │ │ │
│ ┌────┐ │ │ │ │
└───┴────┴──┴──┴────┴──┴───┴──────┘
2 3 4

Рис. 6.5. - Скорость передачи в режиме записи между двумя
Sun

1 - Скорость в К/сек
2 - Запись NFS (сервер 4/330)
3 - Локальная запись Sun 4/65
4 - Локальная запись Sun 4/330

900 ┬ ┌────┐
│ │ │
800 ┼ 1 │ │
│ │ │
700 ┼ │ │
│ │ │
600 ┼ ┌────┐ │ │
│ │ │ │ │
500 ┼ │ │ │ │
│ │ │ │ │
400 ┼ │ │ │ │
│ │ │ ┌────┐ │ │
300 ┼ ┌────┐ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
200 ┼ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
100 ┼ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │
0 └──┴────┴──┴──┴────┴──┴─┴────┴──┴──┴────┴──┤
2 3 4 5


Рис. 6.6. - Скорость передачи между двумя Sun в режиме чте-
ния

1 - Скорость в К/сек
2 - Чтение NFS рандомизированное (сервер 4/330)
3 - Локальное чтение Sun 4/65
4 - Локальное чтение Sun 4/330


350 ┬ 1 ┌──────┐
│ │ │
300 │ │ │
│ │ │
250 │ │ │
│ │ │
200 │ │ │
│ │ │
150 │ │ │
│ │ │
100 │ │ │
│ ┌─────┐ │ │
50 │ │ │ │ │
│ │ │ │ │
0 └─────┴─────┴──┼───┴──────┴────┤
2 3

Рис. 6.7. - Скорость передачи между Sun и HP в режиме записи

1 - Скорость в К/сек
2 - Запись NFS (сервер HP)
3 - Локальная запись HP 9000/375



350 ┬ 1 ┌──────┐
│ │ │
300 │ ┌─────┐ │ │
│ │ │ │ │
250 │ │ │ │ │
│ │ │ │ │
200 │ │ │ │ │
│ │ │ │ │
150 │ │ │ │ │
│ │ │ │ │
100 │ │ │ │ │
│ │ │ │ │
50 │ │ │ │ │
│ │ │ │ │
0 └─────┴─────┴──┼───┴──────┴────┤
2 3

Рис. 6.8. - Скорость передачи между Sun и HP в режиме записи

1 - Скорость в К/сек
2 - Последовательное чтение NFS (сервер HP)
3 - Локальное чтение HP 9000/375

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


6.4.2. Загрузка сети

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


6.5. ОТСЛЕЖИВАЮЩАЯ ПРОГРАММА LOCKD И МОНИТОР СТАТУСА


6.5.1. Функциональные возможности

Использование следящей программы lockd (rpc.lockd) позволяет
управлять доступом к файлам или компонентам файлов (последова-
тельностям файлов, часто называемым записями). Одновременно с
этой программой следует активировать следящую программу statd
(монитор статуса rpc.statd). Эта программа управляет состояни-
ем файла и позволяет восстановить это состояние или уничтожить
блокировку в случае сбоя сервера.

На рисунке 6.9. изображено выполнение операции блокировки в
сети.

┌────────────────────────────┐ ┌───────────────────────────┐
│ 1 │ │ 6 │
│ ┌─────────┐ │ │ │
│ │ 2 │ │ │ │
│ └─────────┘ ┌────────┐ │ ┌─┐ │ ┌───────┐ │
│ │ │ 3 │───┼──┤5├─┼──>│ 3 │ │
│ │ └──┬──┬──┘ │ └─┘ │ └─┬──┬──┘ │
│ ┌┴┐ ^ │ 3│ │ │ │ 6│ │
│ │1│ ┌─┐/ └──┘ │ │ └──┘ │
│ └┬┘ │2│ │ │ / ┌─┐ │
│ │ └─┘ v │ │ v │7│ │
│ │ / ┌───────┐ │ ┌─┐ │ ┌──────┐ └─┘ │
│ v │ │ 4 │─┼──┤4├─┼──>│ 4 │ v │
│ ┌─────────┐ └───────┘ │ └─┘ │ └──────┘ ┌─────────┐ │
│ │ 5 │ │ │ │ 6 │ │
│ └─────────┘ │ │ └─────────┘ │
└────────────────────────────┘ └───────────────────────────┘


Рис. 6.9. - Операция блокировки в сети

1 - Клиент
2 - Программа пользователя
3 - Следящая программа lockd
4 - Следящая программа statd
5 - клиент NFS
6 - сервер NFS

1: Программа вызывает примитив, который устанавливает замок
2: Отслеживающая программа lockd получает запрос
3: Запрос передается программе statd
4: Отслеживающая программа statd сервера запоминает запрос
5: Вызывается следящая программа lockd сервера
6: Отслеживающая программа statd получает информацию об ус-
тановке замка
7: Устанавливается замок


6.5.2. Эксплуатация

Замки на файлах и записях управляются с помощью указания в
программном коде системных вызовов (lockf(),fcntl()).

6.6. ИТОГИ

NFS обеспечивает прозрачный доступ к удаленным файловым сис-
темам, расположенным на разнотиповых машинах. NFS использует
RPC (Remote Procedure Call) для обеспечения диалога между кли-
ентом и сервером и XDR (eXternal Data Representation) для об-
мена данными, связанными с протоколом. Что касается нижних
уровней протокола, текущие версии NFS используют UDP.
Производительность : от 200 до 600 К/сек при чтении и от 50
до 100 К/сек при записи.

Отслеживающая программа lockd позволяет управлять одновре-
менным доступом к файлам или записям.

Несмотря на свои недостатки, NFS - это технологически зрелый
продукт, удобный как для пользователей, так и для администра-
торов рабочих станций UNIX.


БИБЛИОГРАФИЯ

Конструкторская документация часто разделяет функциональные
возможности NFS и ее административные возможности в двух от-
дельных руководствах - что неудобно. Это, например [Sun 90] и
[Sun 90a], [HP 89a] и [HP 89b].
В [Sun 91] содержатся сведения о настройке конфигурации кли-
ента и сервера.
Основные концепции NFS описаны в [KOCHAN 89].

NFS посвящены две книги : [SANTIFALLER 91] и [STERN 91].
Вторая книга является наиболее полной, особенно в том, что ка-
сается административной стороны вопроса.

Синкретическое описание функциональных возможностей NFS со-
держится в [RIFFLET 90] и [TONG TONG 91].

Обновлено: 12.03.2015