Книга: UNIX: взаимодействие процессов
9.9. Блокирование в NFS
9.9. Блокирование в NFS
Аббревиатура NFS расшифровывается как Network File System (сетевая файловая система); эта система подробно обсуждается в главе 29 [22]. Блокировка записей fcntl представляет собой расширение NFS, поддерживаемое большинством ее реализаций. Обслуживается эта блокировка двумя дополнительными демонами: lockd и statd. При вызове fcntl для получения блокировки ядро обнаруживает, что файл находится в файловой системе NFS. Тогда локальный демон lockd посылает демону lockd сервера запрос на получение блокировки. Демон statd хранит информацию о клиентах, установивших блокировку, и взаимодействует с lockd для обеспечения снятия блокировок в случае завершения процессов.
Установка блокировки записи в NFS должна занимать в среднем больше времени, чем для локального файла, поскольку для установки и снятия блокировки требуется передача информации по сети. Для проверки работы блокировки NFS нужно всего лишь изменить имя файла, определяемое константой SEQFILE в листинге 9.2. Если измерить время, требуемое для выполнения 10000 операций по увеличению порядкового номера новой версией программы, оно окажется примерно в 80 раз больше, чем для локального файла. Однако нужно понимать, что в этом случае происходит передача информации по сети и при операциях чтения и записи (для изменения порядкового номера).
ПРИМЕЧАНИЕ
Блокировка записей в NFS была связана с проблемами в течение многих лет, и большинство проблем были следствием плохой реализации. Несмотря на тот факт, что большинство производителей Unix все-таки доделали эту реализацию, использование блокировки fcntl через NFS все еще далеко от совершенства. Не будем делать безответственных утверждений: блокировка fcntl должна работать и в NFS, но будет ли — зависит от реализации демона и сервера.
- 9.1. Введение
- 9.2. Блокирование записей и файлов
- 9.3. Блокирование записей с помощью fcntl по стандарту Posix
- 9.4. Рекомендательная блокировка
- 9.5. Обязательная блокировка
- 9.6. Приоритет чтения и записи
- 9.7. Запуск единственного экземпляра демона
- 9.8. Блокирование файлов
- 9.9. Блокирование в NFS
- 9.10. Резюме
- Упражнения
- 14.8. Небезопасная NFS
- Блокирование всплывающих окон
- Блокирование активного содержимого
- NFS Server Configuration
- NFS Client Configuration
- 9.7.1. Root File System on NFS
- 12.3.3. NFS Server
- 12.3.4. Target NFS Root Mount
- 12.3.5. U-Boot NFS Root Mount Example
- Preparing NFS
- Mounting an NFS Volume
- The NFS Daemons