Глава 6. Сетевые службы общего доступа к файлам

В этой главе содержатся инструкции по настройке Red Hat Enterprise Linux AS для реализации сетевых служб общего доступа NFS и Samba с высокой степенью доступности.

Настройка службы NFS

Сетевая файловая система (NFS) является одним из самых эффективных применений кластера. Использование кластерной службы NFS даёт следующие преимущества:

Требования к NFS серверу

Чтобы выполнять службы NFS высокой степени доступности, все кластерные сервера должна соответствовать определенным требованиям. (Обратите внимание: эти требования не касаются клиентов NFS.) Эти требования приведены ниже:

  • В ядре должна быть включена поддержка NFS сервера. NFS может быть встроен в ядро или использоваться в виде модуля. Поддерживаются NFS версии 2 и 3.

  • Встроенная в ядро системы Red Hat Enterprise Linux AS 2.1 поддержка NFS, включает улучшения (изначально разработанные компанией Mission Critical Linux Inc.), позволяющие прозрачно перемещать службы NFS. Эти улучшения ядра позволяют клиентам NFS избавиться от ошибок потерянных указателей файлов, возникающих после перемещения службы NFS. Если в ядре не реализованы эти улучшения NFS, служба NFS тем не менее сможет работать в кластере, но при запуске и остановке службы вы увидите сообщения, предупреждающие об отсутствии этих улучшений.

  • Во всех кластерных системах должны работать демоны NFS. Этого можно добиться, задав выполнение сценария NFS уровня выполнения init.d. Например:

    /sbin/chkconfig --level 345 nfs on 
  • Также должны работать демоны RPC portmap. Например:

    /sbin/chkconfig --level 345 portmap on 

    NFS службы не запустятся, если не будут работать следующие NFS-демоны: nfsd, rpc.mountd, и rpc.statd.

  • Подключения файловых систем, а также их экспорт, для кластерных служб NFS не должны задаваться в файлах /etc/fstab и /etc/exports. В кластерных NFS службах подключения файловых систем и их экспорт задаются в утилите cluadmin.

Сбор информации о конфигурации службы NFS

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

  • Service Name (Название службы) — Имя, используемое для обозначения службы в кластере.

  • Preferred Member — Имя системы, которая будет выполнять роль сервера NFS этой службы, если в кластере работают несколько узлов.

  • Relocation Policy (Политика перемещения) — политика, определяющая, перемещать ли службу на предпочитаемый узел, если во время запуска службы он был отключен. Этот параметр полезен в конфигурациях с балансировкой нагрузки, когда общая нагрузка делится на два сервера.

  • IP Address (IP адрес) — клиенты NFS будут обращаться к файловым системам NFS сервера, используя этот адрес (или связанное с ним имя компьютера). Чтобы NFS клиенты не зависели от того, какой из узлов кластера в данный момент исполняет роль NFS сервера, для обращения к службе они не должны использовать имя узла кластера. Вместо этого, кластерным NFS службам назначаются плавающие IP адреса, отличные от IP адресов узлов кластера. Этот плавающий IP адрес присваивается узлу, который действительно в данный момент выполняет NFS экспорт. При таком подходе, клиенты NFS могут знать о существовании только плавающего IP адреса, и не зависеть от перемещений службы от одного узла к другому. Задавая IP адрес службы NFS, администратор также может определить маску сети и адрес широковещательной рассылки. Если будет указано None (Отсутствует) (по умолчанию предлагается это значение), в качестве маски сети и широковещательного адреса будут применены параметры настройки сетевого интерфейса.

  • Mount Information (Информация о подключениях) — информация о подключениях не кластерных файловых систем обычно находится в файле /etc/fstab. Напротив, кластерные файловые системы не следует описывать в файле /etc/fstab. Таким образом гарантируется, что файловая система будет подключена только на одном узле кластера. Нарушение этого правила приводит к разрушению файловой системы и отказу системы в целом.

    • Device special file (Специальный файл устройства) — Специальный файл дискового устройства, файловая система которого будет подключена. Вы должны определить этот параметр в ходе настройки службы NFS.

    • Mount point directory (Каталог подключения) — служба NFS может подключать больше одной файловой системы. В таком случае, файловые системы будут объединены в одну переносимую группу.

    • Mount options (Параметры подключения) — Параметры, задаваемые при подключении. Замечание по умолчанию, Linux-сервер NFS не гарантирует, что запись данных будет произведена на жесткий диск синхронно. Чтобы включить режим синхронной записи, укажите параметр подключения sync. Определяя параметр sync, вы получаете гарантию целостности данных, но теряете в производительности системы. За подробным описанием параметров подключения, обратитесь к странице mount(8) руководства.

    • Forced unmount (Принудительное отключение) — Этот параметр определяет, будет ли разрешено принудительное отключение файловых систем. Если принудительное отключение разрешено, и какие-либо приложения, работающие в кластерной системе, используют эту файловую систему при отключении или перемещении службы, перед выполнением отключения файловой системы такие приложения будут завершены в принудительном порядке.

  • Export Information (Информация об экспортах) — Информация об экспортах не кластерных служб NFS, обычно помещается в файл /etc/exports. Напротив, кластерные службы NFS не должны размещать эту информацию в /etc/exports; эти параметры задаются в ходе настройки службы. Информация об экспорте включает в себя:

    • Export directory (Экспортируемый каталог) — Экспортируемый каталог может совпадать с точкой подключения. В этом случае, через NFS доступна вся файловая система. Кроме этого, можно экспортировать не всю, а часть (подкаталог) подключенной файловой системы. Экспортируя подкаталоги файловой системы, вы можете определить разным группам NFS-клиентов различные права.

    • Export client names (Имена клиентов экспорта) — этот параметр определяет, каким компьютерам будет разрешено подключаться к экспортируемой файловой системе. В этом параметре можно указать как отдельные имена компьютеров (например, fred), так и целые домены (например, *.wizzbang.com). Если значение этого параметра равно *, любой компьютер сможет подключить эту файловую систему.

    • Export client options (Параметры экспорта для клиентов) — этот параметр определяет права доступа, назначенные соответствующим клиентам. Например, вы можете задать доступ ro (только чтение), и rw (чтение-запись). По умолчанию установлены следующие параметры экспорта: ro,async,wdelay,root_squash.

    За подробным описанием параметров экспорта, обратитесь к странице export(5) руководства.

Настраивая службы NFS с помощью утилиты cluadmin:

  • Внимательно проверьте правильность заданных параметров службы. Встроенная логика проверки правильности параметров не является достаточной.

  • Во многих приглашениях утилиты, с помощью команды [?] вы можете получить справку о текущем параметре.

Пример конфигурации службы NFS

Ниже приведен пример конфигурации, иллюстрирующий процесс настройки службы NFS. В этом пример настраивается один NFS-экспорт, в котором находятся домашние каталоги 4 работников отдела бухгалтерии. Доступ клиентов к NFS будет ограничен четырьмя компьютерами этих работников.

Ниже приведены используемые параметры настройки службы, а также некоторые комментарии к ним.

ЗамечаниеЗамечание
 

Для настройки службы NFS с помощью cluadmin, необходимо запустить демоны кластера.

  • Service Name (Название службы)nfs_accounting. Название службы выбрано исходя из предназначения службы - предоставлять экспорт работникам бухгалтерии.

  • Preferred Member (Предпочитаемый узел)clu4. В этом примере кластера узлы имеют имена clu3 и clu4.

  • User Script (Пользовательский сценарий ) — Программное обеспечение кластера имеет встроенную поддержку служб NFS. В связи с этим, при настройке службы NFS нет необходимости создавать такой сценарий. Поэтому для параметра User Script устанавливается значение по умолчанию: None (Отсутствует).

  • IP Address (IP адрес)10.0.0.10. К имени компьютера clunfsacct, связанного с этим IP адресом, NFS-клиенты будут обращаться при подключении файловых систем. Заметьте, этот IP отличается от адресов узлов кластера (clu3 и clu4). В качестве маски сети и широковещательного адреса будут использованы значения по умолчанию.

  • Mount Information (Информация о подключении)/dev/sdb10, имя раздела на общем RAID-хранилище, где физически располагается файловая система. ext3 — тип подключаемой файловой системы. /mnt/users/accounting — точка подключения файловой системы. rw,nosuid,sync — параметры подключения.

  • Export Information (Информация об экспорте) - в этом примере, вся подключенная файловая система будет доступна на чтение и запись четырем работникам бухгалтерии. Компьютеры этих работников имеют следующие имена: burke, stevens, needle и dwalsh.

Ниже приведена часть файла /etc/hosts, в котором описаны IP адреса и связанные имена компьютеров, используемых в кластере.

10.0.0.3        clu3          # cluster member

10.0.0.4        clu4          # second cluster member

10.0.0.10       clunfsacct    # floating IP address associated with accounting dept. NFS service

10.0.0.11       clunfseng     # floating IP address associated with engineering dept. NFS service

Ниже приведен настройки в утилите cluadmin службы NFS с описанными выше параметрами:

cluadmin> service add

Service name: nfs_accounting
Preferred member [None]: clu4
Relocate when the preferred member joins the cluster (yes/no/?) \
	    [no]: yes
Status check interval [0]: 30
User script (e.g., /usr/foo/script or None) [None]: 
Do you want to add an IP address to the service (yes/no/?) [no]: yes

        IP Address Information   

IP address: 10.0.0.10
Netmask (e.g. 255.255.255.0 or None) [None]:    
Broadcast (e.g. X.Y.Z.255 or None) [None]: 
Do you want to (a)dd, (m)odify, (d)elete or (s)how an IP address, or 
are you (f)inished adding IP addresses [f]: f
Do you want to add a disk device to the service (yes/no/?) [no]: yes

Disk Device Information

Device special file (e.g., /dev/sdb4): /dev/sdb10
Filesystem type (e.g., ext2, ext3 or None): ext3
Mount point (e.g., /usr/mnt/service1) [None]: /mnt/users/accounting
Mount options (e.g., rw,nosuid,sync): rw,nosuid,sync
Forced unmount support (yes/no/?) [yes]: 
Would you like to allow NFS access to this filesystem (yes/no/?)  [no]: yes

You will now be prompted for the NFS export configuration: 

Export directory name: /mnt/users/accounting

Authorized NFS clients

Export client name [*]: burke
Export client options [None]: rw
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS CLIENTS, or 
are you (f)inished adding CLIENTS [f]: a

Export client name [*]: stevens
Export client options [None]: rw
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS CLIENTS, or 
are you (f)inished adding CLIENTS [f]: a

Export client name [*]: needle
Export client options [None]: rw
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS CLIENTS, or 
are you (f)inished adding CLIENTS [f]: a

Export client name [*]: dwalsh
Export client options [None]: rw
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS CLIENTS, or 
are you (f)inished adding CLIENTS [f]: f
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS EXPORTS, or 
are you (f)inished adding EXPORTS [f]: 
Do you want to (a)dd, (m)odify, (d)elete or (s)how DEVICES, 
or are you (f)inished adding DEVICES [f]: 
Disable service (yes/no/?) [no]: 
name: nfs_eng
disabled: no 
preferred node: clu4
relocate: yes
user script: None
monitor interval: 30
IP address 0: 10.0.0.10
  netmask 0: None
  broadcast 0: None
device 0: /dev/sdb10
  mount point, device 0: /mnt/users/accounting
  mount fstype, device 0: ext3
  mount options, device 0: rw,nosuid,sync
  force unmount, device 0: yes
NFS export 0: /mnt/users/accounting
  Client 0: burke, rw
  Client 1: stevens, rw
  Client 2: needle, rw
  Client 3: dwalsh, rw
Add nfs_eng service as shown? (yes/no/?) yes
Added nfs_eng.
cluadmin>

Доступ клиентов к службе NFS

Для использования кластерной службы NFS клиенты не требуют какой-то особенной настройки. В соответствии с приведенным выше примером, если клиентской системе нужно подключиться к службе NFS высокой степени доступности, в файле /etc/fstab необходимо добавить следующую строку:

clunfsacct:/mnt/users/accounting  /mnt/users/  nfs bg 0 0

Конфигурация службы NFS "Активный-Активный"

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

В примере, приведенном в этом разделе, рассматривается настройка двух служб NFS высокой степени доступности. В этом примере предполагается, что к файловым системам NFS, обслуживаемым кластером, обращаются две различные группы пользователей. Для обслуживания этих пользователей, необходимо настроить две отдельных службы NFS. Каждая службе будет присвоен отдельный IP адрес, а также предпочитаемый узел кластера. Таким образом, при нормальной работе двух узлов кластера, каждый из них будет экспортировать одну из файловых систем. Это позволяет администратору более эффективно использовать мощности двух кластерных систем. В случае сбоя (или запланированного обслуживания) на одном из узлов кластера, обе службы NFS будут запущены на работающем узле кластера.

Эта примерная конфигурация строится на основе конфигурации, приведенной в предыдущем разделе, за счет добавления второй службы. При добавлении второй службы используются следующие параметры настройки:

  • Service Name (Название службы)nfs_engineering. Название службы выбрано исходя из предназначения службы - предоставлять экспорт работникам технического отдела.

  • Preferred Member (Предпочитаемый узел)clu3. В этом примере кластера узлы имеют имена clu3 и clu4. Обратите внимание, что здесь указано имя компьютера clu3, так как предпочитаемым узлом другой кластерной службы (nfs_accounting) является узел clu4.

  • IP Address (IP адрес)10.0.0.11. К имени компьютера clunfseng, связанного с этим IP адресом, NFS-клиенты будут обращаться при подключении файловых систем. Заметьте, этот IP отличается от адресов узлов кластера (clu3 и clu4). Также обратите внимание на то, что этот IP адрес отличается от присвоенного другой NFS службе (nfs_accounting). В качестве маски сети и широковещательного адреса будут использованы значения по умолчанию.

  • Mount Information (Информация о подключении)/dev/sdb11, имя раздела на общем RAID-хранилище, где физически располагается файловая система. ext2 — тип подключаемой файловой системы. /mnt/users/engineering — точка подключения файловой системы. rw,nosuid,sync — параметры подключения.

  • Export Information (Информация об экспорте) — в этом примере, отдельные каталоги подключенной файловой системы будут доступны на чтение и запись трем работникам технического отдела. Компьютеры этих работников носят имена: ferris, denham, и brown. Обратите внимание, чтобы сделать этот пример более показательным, каждый работник отдела сможет подключить только свой собственный каталог.

Ниже приведен пример создания службы NFS, в том же кластере, что и в предыдущем примере, при создании службы nfs_accounting, с помощью утилиты cluadmin.

cluadmin> service add

Service name: nfs_engineering
Preferred member [None]: clu3
Relocate when the preferred member joins the cluster (yes/no/?) [no]: yes
Status check interval [0]: 30
User script (e.g., /usr/foo/script or None) [None]: 
Do you want to add an IP address to the service (yes/no/?) [no]: yes

        IP Address Information

IP address: 10.0.0.11
Netmask (e.g. 255.255.255.0 or None) [None]: 
Broadcast (e.g. X.Y.Z.255 or None) [None]: 
Do you want to (a)dd, (m)odify, (d)elete or (s)how an IP address, or 
are you (f)inished adding IP addresses [f]: f
Do you want to add a disk device to the service (yes/no/?) [no]: yes

Disk Device Information

Device special file (e.g., /dev/sdb4): /dev/sdb11
Filesystem type (e.g., ext2, ext3 or None): ext2            
Mount point (e.g., /usr/mnt/service1) [None]: /mnt/users/engineering
Mount options (e.g., rw,nosuid,sync): rw,nosuid,sync
Forced unmount support (yes/no/?) [yes]: 
Would you like to allow NFS access to this filesystem (yes/no/?) \
	    [no]: yes

You will now be prompted for the NFS export configuration: 

Export directory name: /mnt/users/engineering/ferris

Authorized NFS clients

Export client name [*]: ferris
Export client options [None]: rw
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS CLIENTS, or 
are you (f)inished adding CLIENTS [f]: f
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS EXPORTS, or 
are you (f)inished adding EXPORTS [f]: a

Export directory name: /mnt/users/engineering/denham

Authorized NFS clients

Export client name [*]: denham
Export client options [None]: rw
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS CLIENTS, or 
are you (f)inished adding CLIENTS [f]: 
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS EXPORTS, or 
are you (f)inished adding EXPORTS [f]: a

Export directory name: /mnt/users/engineering/brown

Authorized NFS clients

Export client name [*]: brown
Export client options [None]: rw
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS CLIENTS, or 
are you (f)inished adding CLIENTS [f]: f
Do you want to (a)dd, (m)odify, (d)elete or (s)how NFS EXPORTS, or 
are you (f)inished adding EXPORTS [f]: a
Do you want to (a)dd, (m)odify, (d)elete or (s)how DEVICES, or 
are you (f)inished adding DEVICES [f]: 
Disable service (yes/no/?) [no]: 
name: nfs_engineering
disabled: no
preferred node: clu3
relocate: yes
user script: None
monitor interval: 30
IP address 0: 10.0.0.11
  netmask 0: None
  broadcast 0: None
device 0: /dev/sdb11
  mount point, device 0: /mnt/users/engineering
  mount fstype, device 0: ext2            
  mount options, device 0: rw,nosuid,sync
  force unmount, device 0: yes
NFS export 0: /mnt/users/engineering/ferris
  Client 0: ferris, rw
NFS export 0: /mnt/users/engineering/denham
  Client 0: denham, rw
NFS export 0: /mnt/users/engineering/brown
  Client 0: brown, rw
Add nfs_engineering service as shown? (yes/no/?) yes
Added nfs_engineering.
cluadmin>

Особенности NFS

Следующие особенности необходимо принять во внимание при настройке кластерных служб.

Избегайте использования exportfs -r

Файловые системы NFS, экспортируемые кластерными системами, не указываются в стандартном файле /etc/exports. Вместо этого NFS экспорты, связанные с кластерными службами, сохраняются в файле конфигурации кластера (с помощью cluadmin).

Команда exportfs -r удаляет все экспорты, не объявленные явно в файле /etc/exports. Выполнение этой команды приведет к недоступности кластерных служб NFS до перезапуска службы. Поэтому рекомендуется не использовать команду exportfs -r в кластере с настроенными службами NFS высокой степени доступности. Чтобы восстановить систему после непреднамеренного использования exportfs -r, необходимо остановить, а затем перезапустить кластерную службу NFS.

Блокировка файлов NFS

Блокировки файлов NFS не сохраняются при переносе или перемещении службы. Причиной этого является то, что реализация NFS в Linux сохраняет информацию о блокировках в системных файлах. Эти системные файлы, сохраняющие состояние блокировок, в кластере не реплицируются. Вследствие этого, после переноса службы могут быть установлены другие блокировки.