учебники, программирование, основы, введение в,

 

NFS. Настройка сервера

Задачи NFS
Сетевая файловая система (Network File System - NFS) служит для обеспечения доступа компьютерам сети к общим каталогам на сервере. Централизованное хранение файлов на сервере облегчает организацию работы в большой сети, особенно там, где один и тот же пользователь может работать в разное время на разных компьютерах. С помощью файлового сервера решается сразу несколько задач:

  1. регулярное резервное копирование всех данных: нереально выполнять эту операцию для нескольких десятков или сотен компьютеров, но вполне реально - с единственного сервера или нескольких серверов.
  2. повышение надежности хранения данных: неразумно каждый компьютер сети оснащать RAID-массивом, ведь подавляющее большинство файлов в компьютере, таких, как установленные пакеты программ, проще установить заново, чем защищать их от сбоя; но будет вполне разумным укомплектовать файловый сервер аппаратным RAID-массивом или организовать там программный RAID-массив, хотя бы простое зеркалирование дисков.
  3. уменьшение стоимости хранения данных: дорого и неэффективно в каждый компьютер устанавливать огромный диск на случай, если потребуется хранить много данных, но на сервере вполне можно установить масштабируемую дисковую подсистему большого объема.
  4. обеспечение доступа к одним и тем же данным с любого компьютера.

Описание NFS
Служба NFS позволяет серверу обеспечить разделяемый доступ к указанным каталогам его локальной файловой системы, а клиенту - монтировать эти каталоги так же, как если бы они были локальными каталогами клиента.
Версии NFS
NFS, разработанная компанией Sun Microsystems, оказалась настолько удачной, что ее реализации были воплощены разными компаниями почти во всех операционных системах. Существует несколько принципиально разных реализаций NFS. Достаточно распространена версия NFS 2.0, хотя уже в Solaris 2.5 была введена NFS 3.0. В последующих версиях Solaris, включая Solaris 9, в NFS были внесены существенные дополнения, но сам протокол остался совместимым с реализациями NFS 3.0 в других системах. Начиная с NFS 3.0, поддерживается передача пакетов посредством TCP и UDP, ранее поддерживался только UDP.
Будьте внимательны! В сети следует использовать клиенты и серверы NFS одной и той же версии. NFS 2.0 можно встретить в старых системах, например, в HP-UX 10.0. Совместная работа систем, использующих разные версии NFS , нежелательна.
Совместимость NFS и других служб разделяемых каталогов
NFS по смыслу и по организации работы похожа на разделяемые каталоги (shared folders) в системах Windows, но эти службы используют совершенно разные протоколы работы и между собой не совместимы. Однако существует несколько программных продуктов, которые устанавливают поддержку NFS в системах Windows, поэтому применение NFS в сети с различными операционными системами не представляет проблемы, надо только помнить о необходимости использовать одинаковые версии NFS .
Служба NFS предполагает работу модели клиент-сервер, причем на компьютерах-клиентах и компьютерах-серверах запускаются разные программы для обеспечения доступа к общим каталогам на сервере.
Поскольку компьютеры на рабочих местах сотрудников в России обычно управляются Windows-системами, в качестве файловых серверов часто используются также Windows-системы. Однако нередко возникает желание установить UNIX на файл-сервер, чтобы повысить надежность, сократить затраты на оборудование или использовать этот же сервер для ряда других корпоративных нужд: в качестве web-сервера, сервера баз данных и т.п. Чтобы не устанавливать дополнительное ПО для поддержки NFS, в таком случае достаточно установить пакет samba на UNIX-машину. Он позволит ей "прикинуться" Windows-сервером так, чтобы все клиентские компьютеры воспринимали его как самый обычный файл-сервер или принт-сервер Windows-сети. Пакет samba обеспечивает поддержку "родного" для Windows-сетей протокола SMB.
В тех случаях, когда в сети работают несколько UNIX-компьютеров и им нужно обращаться к одному файл-серверу, имеет смысл использовать механизм NFS (network file system).
NFS не очень устойчив к сбоям сети, требует ее бесперебойной работы и предполагает быстрое соединение между клиентом и сервером. Использование NFS для монтирования файловых систем вне локальной сети, например, через Интернет, технически осуществимо, но не очень рационально и небезопасно.
Терминология NFS
После настройки NFS-сервера UNIX-компьютер будет предоставлять доступ внешним пользователям к некоторым каталогам своей файловой системы. Такое предоставление доступа называется "экспортом": говорят, что система экспортирует свои каталоги. Как именно каталоги будут экспортироваться, определяется списком, который задает системный администратор. В большинстве систем UNIX этот список содержится в файле /etc/exports, но в Solaris он находится в другом файле - /etc/dfs/dfstab.
NFS работает посредством механизма удаленного вызова процедур (RPC - Remote Procedure Call).
Что такое RPC
Идеология RPC очень проста и привлекательна для программиста. Как обычно работает сетевое приложение? Оно следует некоему протоколу (например, HTTP): формирует пакет с запросом, вызывает системную функцию установления соединения, затем функцию отправки пакета, затем ждет ответного пакета и вызывает функцию закрытия соединения. Это значит, что вся работа с сетью является заботой программиста, который пишет приложение: он должен помнить о вызове функций сетевого API системы, думать о действиях в случае сбоев сети.
RPC предполагает иной способ обмена данными между клиентом и сервером. С точки зрения программиста, приложение клиента, работающее с помощью RPC, вызывает функцию на сервере, она выполняется и возвращает результат. Пересылка запроса на выполнение функции через сеть и возврат результатов от сервера клиенту происходит незаметно для приложения, поэтому последнее не должно беспокоиться ни о сбоях сети, ни о деталях реализации транспортного протокола.
Для того чтобы обеспечить прозрачность пересылки данных через сеть, придумана двухступенчатая процедура. На сервере любое приложение, предоставляющее свой сервис через RPC, должно зарегистрироваться в программе, которая называется транслятором портов (port mapper). Функция этой программы - устанавливать соответствие между номером процедуры RPC, которую запросил клиент, и номером TCP или UDP порта, на котором приложение сервера ждет запросов. Вообще говоря, RPC может работать не только с TCP или UDP. В Solaris как раз реализована работа на базе механизма TI (TransportIndependent), поэтому в Solaris транслятор портов называется rpcbind, а не portmap, как в Linux или FreeBSD.
Приложение, которое регистрируется у транслятора портов, сообщает ему номер программы, номер версии и номера процедур, которые могут обрабатываться данной программой. Эти процедуры будут впоследствии вызываться клиентом по номеру. Кроме этого, приложение сообщает номера портов TCP и UDP, которые будут использоваться для приема запросов на выполнение процедур.
Клиент, желающий вызвать выполнение процедуры на сервере, сначала отправляет запрос транслятору портов на сервер, чтобы узнать, на какой TCP или UDP порт надо отправить запрос. Транслятор портов запускается при старте системы и всегда работает на стандартном порту 111. Получив ответ от него, клиент отправляет запрос на тот порт, который соответствует требуемому приложению. Например, сервер NFS работает на порту 2049.
Процедура монтирования общего каталога через NFS
Прежде чем мы перейдем к описанию настроек сервера и клиентов NFS, следует понять, как осуществляется монтирование удаленных файловых систем в принципе.
Клиент NFS посылает запрос на монтирование удаленному компьютеру, который предоставляет свою файловую систему (обычно - некоторую ее часть) для общего пользования. При этом говорят, что сервер NFS "экспортирует" тот или иной каталог (подразумевается - с подкаталогами). Запрос от клиента NFS попадает на обработку демону mountd. Тот выдает клиенту NFS специальный ключ. Этот ключ является идентификатором, который однозначно идентифицирует каталог, смонтированный по сети.
По NFS можно смонтировать как целые файловые системы, так и отдельные каталоги. Из соображений безопасности запрещено монтировать каталоги "через раздел". Это означает, что если каталог /var расположен на одном разделе диска, а каталог /var/adm - на другом, то при монтировании каталога /var каталог /var/adm не будет автоматически смонтирован. Если требуется монтировать те подкаталоги экспортируемого каталога, которые расположены в другой файловой системе (на другом разделе), следует экспортировать их отдельно и указывать в /etc/dfs/dfstab еще один разделяемый каталог - тот самый подкаталог с другого раздела.
Ключ, выданный клиенту при монтировании и идентифицирующий сеанс работы с данным удаленным каталогом, сохраняется при перезагрузке NFS-сервера, чтобы после восстановления его работы клиенты, замершие в ожидании, продолжили работу с удаленным сервером как ни в чем ни бывало. При демонтировании и новом монтировании файловой системы через NFS ключ обычно изменяется. На практике перезагрузка NFS-сервера все-таки может привести к сбою в работе клиентского приложения, особенно, если приложение читает или записывает файл в удаленный каталог во время перезагрузки.
После монтирования файловой системы через NFS клиент посылает серверу запросы на передачу и прием файлов, эти запросы обрабатывает демон nfsd.
Демонтирование файловой системы NFS выполняется так же, как и демонтирование любой другой файловой системы - командой umount.
Ниже будут обсуждены следующие аспекты настройки службы NFS в сети:

  • определение списка каталогов на сервере, которые должны быть общими;
  • определение прав доступа к этим каталогам;
  • аутентификация и назначение прав доступа в NFS;
  • настройка сервера NFS , запуск необходимых программ;
  • настройка клиентов NFS, монтирование удаленных каталогов;

Настройка NFS-сервера
Для настройки NFS сервера нам потребуется выполнить настройку как минимум трех приложений: rpcbind, mountd и nfsd. Прежде всего, создадим файл /etc/dfs/dfstab, в котором опишем экспортируемые каталоги; в отличие от других систем UNIX, Solaris требует указать здесь не просто список каталогов с параметрами монтирования, а набор команд share, которые фактически и запускают экспорт каталогов. Таким образом, получается, что /etc/dfs/dfstab - это скрипт, который выполняется для того, чтобы сделать общие каталоги доступными для монтирования через сеть.
rpcbind: объявление служб RPC
Для начала следует запустить программу rpcbind, если она еще не запущена. Скорее всего, она запускается при старте вашей системы, если это действительно Solaris. Эта программа, как мы помним, преобразует номера вызовов процедур RPC в номера портов TCP и UDP. При запуске любого RPC-сервера, т.е. программы, работающей с протоколом RPC, программа rpcbind получает от этого RPC-сервера информацию о том, какие номера процедур RPC он намерен обслуживать и через какой порт TCP (UDP) ему следует направлять запросы.
Когда клиент делает RPC-вызов, происходит выяснение требуемого номера порта на машине сервера у rpcbind.
Поэтому rpcbind должен быть запущен до того, как будет запущен любой из RPC-серверов. При аварийном завершении rpcbind необходимо вначале перезапустить rpcbind, и затем перезапустить все RPC-серверы.
Для проверки готовности всех служб NFS к работе через rpcbind используется команда rpcinfo -p:
rpcinfo -p
program     vers    proto   port    service
100000      4       tcp     111     rpcbind
100000      3       tcp     111     rpcbind
100000      2      tcp     111     rpcbind
100000      4      udp     111     rpcbind
100000 3       udp     111     rpcbind
100000 2       udp     111     rpcbind
100232      10      udp     32772   sadmind
100083         1       tcp     32771
100221         1       tcp     32772
100068         2       udp     32773
100068         3       udp     32773
100068         4       udp     32773
100068         5       udp     32773
100229         1       tcp     32773   metad
100230         1       tcp     32774   metamhd
100242         1       tcp     32775   metamedd
100001         2       udp     32774   rstatd
100001         3       udp     32774   rstatd
100001         4       udp     32774   rstatd
100002         2       udp     32775   rusersd
100002         3       udp     32775   rusersd
100002         2       tcp     32776   rusersd
100002         3       tcp     32776   rusersd
100008         1       udp     32776   walld
100012         1       udp     32777   sprayd
100011         1       udp     32778   rquotad
100024         1       udp     32779   status
100024         1       udp     32777   status
100133         1       udp     32779
100133         1       tcp     32777
100021         1       udp     4045    nlockmgr
100021         2       udp     4045    nlockmgr
100021         3       udp     4045    nlockmgr
100021         4       udp     4045    nlockmgr
100021         1       tcp     4045    nlockmgr
100021         2       tcp     4045    nlockmgr
100021         3       tcp     4045    nlockmgr
100021         4       tcp     4045    nlockmgr
300598         1       udp     32784
300598         1       tcp     32781
805306368  1       udp     32784
805306368  1       tcp     32781
100249         1       udp     32785
100249         1       tcp     32782
1289637086  5       tcp     32787
1289637086  1       tcp     32787
100005         1       udp     32814   mountd
100005         2       udp     32814   mountd
100005         3       udp     32814   mountd
100005         1       tcp     33201   mountd
100005         2       tcp     33201   mountd
100005         3       tcp     33201   mountd
100003         2       udp     2049    nfs
100003         3       udp     2049    nfs
100227         2       udp     2049    nfs_acl
100227         3       udp     2049    nfs_acl
100003         2       tcp     2049    nfs
100003         3       tcp     2049    nfs
100227         2       tcp     2049    nfs_acl
100227         3       tcp     2049    nfs_acl
При запуске системы в многопользовательском режиме 3 rpcbind запускается автоматически, а службы NFS - в случае, если существует файл /etc/dfs/dfstab.
Запуск службы экспорта файловых систем
Сервис NFS предоставляется двумя программами, которые обрабатывают соответствующие RPC-запросы. Это программы mountd и nfsd.
Программа mountd обрабатывает запросы на удаленное монтирование файловых систем. Для получения списка экспортируемых каталогов применяют команду showmount -e, которая обращается к mountd за информацией:
showmount -e
export list for sunny:
/nfst (everyone)
Для того чтобы на сервере NFS узнать, какие системы подсоединили к себе разделяемые каталоги этого сервера, следует дать команду showmount без параметров:
showmount
www.eu.spb.ru
Программа nfsd - это обработчик файлового запроса удаленного клиента NFS к файловой системе сервера NFS .
Параметры службы NFS настраиваются в файле /etc/default/nfs, а запуск и останов службы осуществляются, соответственно, командами
/etc/init.d/nfs.server start
и
/etc/init.d/nfs.server stop
В файле /etc/default/nfs следует указать достаточное количество потоков, которые можно параллельно запускать для обслуживания одновременных запросов к файлам через NFS. За это отвечает параметр NFSD_SERVERS.
Значение этого параметра не должно быть меньшим максимального количества одновременных обращений к разделяемым файловым системам NFS на сервере. Слишком маленькое число потоков вызовет задержки в работе клиентов, поскольку им придется становиться в очередь на обработку запросов. В то же время, излишне большое число приведет к нерациональному расходу памяти NFS-сервера. Оптимальное число определяется из опыта, и единственное, что можно сказать определенно: оно не должно быть больше удвоенного общего количества компьютеров сети, настроенных для работы через NFS. По умолчанию это число равно 16, что для нагруженных серверов NFS очевидно мало.
Если из-за слишком большого количества потоков nfsd загрузка процессора возрастет до 100%, имеет смысл уменьшить число этих потоков.
С одной стороны, идеально иметь 2 потока на каждого активного клиента, постоянно обращающегося к ресурсам NFS, с другой - на один процессор рекомендуется запускать не более 16 потоков, если это достаточно медленный процессор типа тех, что установлены в системах SPARCstation 5.
В моей тестовой системе Solaris на компьютере x86 монтирование каталога сервера одним клиентом NFS привело к увеличению занимаемой nfsd памяти всего на 8 Кбайт, так что в современных системах скорее имеет смысл ожидать некоторого снижения производительности за счет нагрузки на процессор или кэширования больших файлов экспортируемых каталогов, чем нехватки памяти из-за слишком большого количества потоков nfsd.
Перед запуском mountd и nfsd следует убедиться, что в /etc/dfs/dfstab указаны все каталоги, которые вы собираетесь экспортировать, а также разумно настроены параметры безопасности.

Аутентичность пользователей NFS
Работа с общим диском, разделяемым между многими пользователями сети, предполагает, что в пределах сети существует общее пространство имен пользователей, т.е. пользователь gregory на любом клиентском (в терминах NFS) компьютере имеет то же реальное имя и (что важнее) тот же идентификатор, что и пользователь gregory на сервере NFS. Это достигается использованием централизованной аутентификации (например, с помощью PAM и сервера аутентификации или с помощью NIS+). Кроме того, важно ограничить права пользователя root при доступе через NFS, т.к. пользователь root на любом компьютере в любой системе UNIX имеет идентификатор 0, но от имени пользователя root на разных компьютерах могут работать разные люди.
Для ограничения доступа пользователя root на сервере NFS, любые файловые запросы от имени пользователей root клиентских компьютеров выполняются от имени nobody. Можно указать, пользователям root каких компьютеров мы предоставляем привилегированный доступ от имени root и через NFS.
По умолчанию файловая система экспортируется с правами чтения и записи для тех, кто ее смонтирует. Однако, права доступа к конкретным каталогам могут запрещать запись в них, фактически права доступа к удаленной файловой системе определяются комбинацией прав, данными при монтировании системы и прав доступа к каталогам; силу имеют более строгие права (например, нельзя записать файл в каталог, если нет права записи в каталог ИЛИ если право есть, но файловая система экспортируется в режиме read-only - только для чтения).
Рассмотрим для примера файл /etc/dfs/dfstab системы Solaris:
share -F nfs -o rw=@212.231.110, ro=@192.168.4 /home
share -F nfs -o ro=212.231.110@,root=212.231.110.112\
/usr/share/man
Файловая система /home экспортируется с возможностью чтения и записи для компьютеров сети 212.231.110, и только чтения - для компьютеров сети 192.168.4. Файловая система /usr/share/man экспортируется для чтения для компьютеров сети 212.231.110. Пользователю root с компьютера 212.231.110.112 разрешен доступ с правами суперпользователя к этой файловой системе.
Полный список доступных режимов и настроек при указании экспортируемой файловой системы доступен в man share и man share_nfs, а некоторые из них обсуждаются ниже, в разделе "параметры экспорта в /etc/dfs/dfstab".
Сервер NFS и бездисковые станции
Для бездисковых станций через сеть с помощью NFS экспортируются все файловые системы, которые им нужны, и даже область свопинга. Поэтому, настраивая экспорт файловой системы для бездисковых станций, следует убедиться, что для них экспортируется корневая файловая система и область свопинга.
Под "корневой файловой системой" мы здесь понимаем определенный заранее каталог на сервере NFS, играющий роль корневой файловой системы для бездисковой станции. Собственный корневой каталог сервера не следует экспортировать вообще.
Файловые системы бездисковых рабочих станций монтируются из отдельного каталога сервера (в наших примерах мы будем использовать каталог /export, но можно задействовать и любой другой каталог) и по составу файлов аналогичны файловым системам автономных компьютеров, оснащенных дисками.
Табл. 18.1 демонстрирует соответствие экспортируемых на сервере каталогов и точек монтирования на бездисковых рабочих станциях.


Таблица 18.1. Соответствие каталогов сервера NFS и точек монтирования бездисковых рабочих станций

Экспортируемые каталоги на сервере

Импортируемые каталоги на бездисковом компьютере

Пояснение

Параметры монтирования

/export/root/<hostname>

/

корневой каталог

-o nosuid

export/exec/<platformname>

/usr

Каталог выполняемых файлов (Shared Product Object Tree - SPOT). Содержимое этого каталога зависит от аппаратной платформы, разным платформам должны монтироваться разные каталоги

-o ro

/export/home/<hostname>

/home

возможно потребуется -o nosuid

/export/share

/usr/share

-o ro

/export/swap/<hostname>

Применяется на бездисковых клиентах в качестве удаленного пространства подкачки

Обычным пользователям сервера доступ к каталогу /export обычно запрещают, ибо этот каталог предназначен только для монтирования его клиентами, управление этим каталогом осуществляет администратор, работая от имени root.
Каталог /export/root следует экспортировать с правами пользователей на чтение и запись.
Параметр nosuid запрещает клиентам устанавливать бит setuid для файлов на смонтированной файловой системе NFS. Этот параметр может быть полезен для случаев, когда файл принадлежит пользователю root клиента или пользователю, чей uid совпадает с uid наделенного большими правами пользователя в какой-либо из систем сети (особенно - сервера NFS).
Вместо того чтобы использовать при монтировании каталога /export/root параметр nosuid, может оказаться достаточным запретить пользователям сервера NFS доступ к этому каталогу.
Параметр ro обеспечивает монтирование каталога только для чтения для всех клиентов. Например, каталог с системными исполняемыми файлами пользователям менять незачем, и его рекомендуется экспортировать только для чтения.
При экспорте каталога /export/home можно пойти двумя путями:

  • экспортировать каталог /home сервера, так, чтобы дать возможность пользователям работать на сервере интерактивно в своем домашнем каталоге и монтировать этот же каталог по сети при работе на других компьютерах;
  • экспортировать каталог /export/home сервера с тем, чтобы пользователи на сервере не имели домашних каталогов (или же, что менее удобно, имели разные домашние каталоги при работе на сервере и при работе на остальных компьютерах сети).

В первом случае следует обязательно указать параметр nosuid для монтирования этого каталога через NFS.

Проверка работоспособности служб NFS
Теперь необходимо проверить, правильно ли запущены mountd и nfsd. Сначала это делается с помощью команды rpcinfo -p. Вывод программы должен показать что-то похожее на следующее:
100000  4       tcp     111     rpcbind
100000 3       tcp     111     rpcbind
100000 2       tcp     111     rpcbind
100000 4       udp     111     rpcbind
100000         3       udp     111     rpcbind
100000         2       udp     111     rpcbind
100003         2       udp     2049    nfs
100003         3       udp     2049    nfs
100005         3       udp     1023    mountd
100005         3       tcp     1023    mountd
100005         1       udp     1023    mountd
100005         1       tcp     1023    mountd
Как видно, rpcbind успешно анонсирует службы.
Если в ответ на rpcinfo -p мы получили сообщение
rpcinfo: can't con
или
RPC_PROG_NOT_REGISTERED
или нечто похожее вместо ожидаемого - стало быть, rpcbind не доступен (отключен). Возможно, в файлах /etc/hosts.allow или /etc/hosts.deny есть настройки, запрещающие программе rpcbind отвечать нам.
Для перезапуска служб NFS можно завершить выполнение демонов nfsd, mountd и rpcbind, и потом запустить их вновь в таком порядке: rpcbind, затем mountd и nfsd. Программе nfsd может быть передан числовой аргумент - число потоков, которые следует запустить при старте. Программа "распараллелится" в указанном количестве потоков.
Более стандартным выходом является запуск скрипта
/etc/init.d/nfs.server
вначале с параметром stop, затем с параметром start.
При штатной работе mountd и nfsd запускаются на сервере NFS при старте системы из стартовых скриптов. Это можно проверить командами
ps -ef | grep mountd
ps -ef | grep nfsd
Программа rpcbind объявляет свои службы независимо от того, продолжают ли работать программы, ранее зарегистрировавшиеся и (возможно) прекратившие работу вследствие аварии.
Следовательно, вышеприведенная проверка с помощью ps обязательна, если служба NFS перестала работать.
Не забудьте перед настройкой сервера NFS изучить страницы руководства, рассказывающие о rpcbind, mountd, nfsd, dfstab.
Блокировка файлов на NFS-сервере
Для того чтобы несколько процессов не конфликтовали при доступе к одному и тому же файлу, обычно используется механизм блокировки файла. Подробнее о блокировках сказано в документации по системным функциям lockf() и flock(). В NFS механизм блокировки реализован посредством двух демонов: lockd и statd.
Оба демона запускаются на сервере NFS после mountd и nfsd.
Программа lockd устанавливает и снимает блокировку файлов по запросу, а демон statd следит за состоянием блокировок и работоспособностью NFS-сервера.
В сети демон statd сервера NFS обменивается информацией с демонами statd на других компьютерах. Демон lockd посылает запросы демону statd для установления статуса компьютеров, взаимодействующих с ним.
Если компьютер, за которым следит statd, перестает отвечать и перезапускается, удаленный statd сообщает об этом локальному, следящему за ним, и локальный демон информирует об этом программы, которые работали через это соединение. Если прекращает работу локальный сервис и затем следует его перезапуск, то statd информирует об этом другие компьютеры.
Дисковые квоты в NFS
Если на сервере NFS установлены дисковые квоты для отдельных пользователей, то для того, чтобы пользователь "издалека" мог узнать свою дисковую квоту, запускается демон rquotad.
Вообще говоря, установка дисковых квот (независимо от NFS) выполняется следующим образом:

  1. В файле /etc/vfstab для файловой системы, для которой будет применяться квотирование, устанавливается параметр монтирования quota. Не забудьте демонтировать и снова смонтировать соответствующую файловую систему, если хотите, чтобы параметр оказал воздействие на работу файловой системы немедленно!
  2. Затем создается файл quotas в корне этой файловой системы (например, если речь идет о файловой системе /export/home, то файл будет называться /export/home/quotas).
  3. С помощью команды edquota устанавливаются квоты для каждого из пользователей в отдельности.
  4. Выполняется команда quotaon.

Для выключения поддержки квот достаточно выполнить команду
quotaoff
Для проверки квот в файловых системах надо выполнить команду
quota username


Особенности NFS в системах Solaris
В Solaris NFS организован не так, как в других системах UNIX, и это следует иметь в виду при настройке систем в гетерогенных сетях:
  • файл /etc/dfs/dfstab в других системах называется /etc/exports;
  • в других системах файл /etc/exports является файлом конфигурации, а не скриптом, вызывающим программу share;
  • в Solaris после изменения параметров монтирования в файле /etc/dfs/dfstab нужно дать команду shareall для вступления изменений в силу; в других системах следует перезапустить mountd и nfsd, обычно для этого можно использовать сценарий, как и в Solaris;
  • Solaris автоматически становится NFS-сервером при загрузке, если в файле /etc/dfs/dfstab указаны экспортированнные каталоги.

Помните, что команда shareall просто выполняет подряд все команды share, содержащиеся в файле /etc/dfs/dfstab. Если этот файл был модифицирован и некоторые команды экспорта каких-то файловых систем были удалены, действие старых команд share, запущенных до модификации файла, продолжится и после выполнения shareall.
Поэтому следует перезапустить mountd для того, чтобы изменения возымели эффект. Внимание: нельзя перезапускать mountd, когда пользователи работают с файловой системой сервера NFS, так как это может вызвать потери данных и зависание систем - клиентов NFS.
Если требуется разрешить доступ к разделяемой файловой системе только определенной группе машин, следует указать их список команде share:
share -F nfs -o rw=host1:host2 /home/host12
Параметры экспорта в /etc/dfs/dfstab
При экспорте файловых систем можно передавать командам share ряд параметров, указывающих, в каком режиме следует экспортировать те или иные каталоги. Наиболее важные параметры сведены в табл. 18.2:


Таблица 18.2. Параметры экспорта файловых систем NFS

Параметр

Значение

ro

только для чтения - для всех

ro=host1, host2

только для чтения и только указанным компьютерам

rw

для чтения и записи - для всех

rw=host1, host2

для чтения и записи, но только указанным компьютерам

root=host1, host2

с указанных компьютеров пользователь root получает доступ к файлам на сервере NFS от имени root (иначе - от имени nobody или указанного в параметре anon)

anon=uid

идентификатор пользователя, от имени которого сможет работать с файлами на сервере NFS пользователь root удаленного (клиентского) компьютера, по умолчанию - nobody

nosub

запрещается монтировать подкаталоги экспортируемого каталога

nosuid

запрещается создавать в экспортируемой файловой системе файлы с установленными битами suid и sgid

Например, файл /etc/dfs/dfstab может иметь такой вид для экспорта двух файловых систем:
share -F nfs -o rw=@212.231.110, ro=@192.168.4 /home
share -F nfs -o ro=212.231.110@,root=212.231.110.112\ /usr/share/man
Особенности NFS в Solaris версии 9
В Solaris 9 были добавлены некоторые расширения поддержки NFS, которые улучшили производительность:

  • сняты ограничения на размер пакета; остались только ограничения, налагаемые транспортным протоколом, поэтому для NFS через UDP максимальный размер пакета составляет 32 Кбайт, а для TCP - 1 Мбайт;
  • клиент NFS теперь не занимает большое количество портов UDP. Ранее NFS использовала отдельный порт UDP для каждого запроса. Начиная с Solaris 9, клиент NFS по умолчанию использует только один заранее определенный порт. Однако эта функция настраивается: можно попытаться увеличить число портов, так как это может привести к увеличению производительности;
  • изменен алгоритм выполнения последовательных записей: ранее все запросы на запись выполнялись последовательно клиентом, затем сервером. Введена возможность (для клиента NFS) разрешить приложению выполнять одновременную запись (равно и одновременное чтение и запись) в один и тот же файл. Разрешить такое поведение можно с помощью параметра forcedirectio при монтировании файловой системы. Этот параметр распространяется на все файлы смонтированной файловой системы. Существует возможность разрешить такой режим работы с единственным файлом с помощью функции directio(). По умолчанию (без указания параметра при монтировании) запись в файл производится так же, как и раньше.

Статистика сервера NFS
Для получения статистики о работе сервера NFS следует использовать команду nfsstat на таком сервере:
nfsstat -s
Server rpc:
Connection oriented:
calls   badcalls       nullrecv       badlen  xdrcall dupchecks 
0       0       0       0       0       0
dupreqs
0
Connectionless:
calls    badcalls      nullrecv       badlen xdrcall        dupchecks 
33      0       0       0       0       3
dupreqs
0
Server nfs:
calls   badcalls 
33      0 
Version 2: (0 calls)
null    getattr        setattr        root    lookup readlink
0 0%    0 0%    0 0%    0 0%    0 0%    0 0%
read    wrcache        write   create remove rename
0 0%    0 0%    0 0%    0 0%    0 0%    0 0%
link    symlink        mkdir   rmdir   readdir        statfs
0 0%    0 0%    0 0%    0 0%    0 0%    0 0%
Version 3: (33 calls)
null    getattr        setattr        lookup access readlink
0 0%    5 15%   1 3%    4 12%   13 39% 0 0%
read    write   create mkdir   symlink        mknod
0 0%    1 3%    1 3%    0 0%    0 0%    0 0%
remove rmdir   rename link    readdir        readdirplus
0 0%    0 0%    0 0%    0 0%    1 3%    0 0%
fsstat fsinfo pathconf       commit
3 9%    3 9%    0 0%    1 3%
Server nfs_acl:
Version 2: (0 calls)
null    getacl setacl getattr        access
0 0%    0 0%    0 0%    0 0%    0 0%
Version 3: (0 calls)
null    getacl setacl
0 0%    0 0%    0 0%
Кэширование файловой системы
Ускорить доступ к любой медленной файловой системе, такой как удаленная система NFS или файловая система привода CD-ROM, можно за счет создания файловой системы кэша. Проще говоря, содержимое медленной файловой системы может быть закэшировано на локальном диске. Управление такой файловой системой кэша (cachefs) осуществляется утилитой cfsadmin.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика