WINE@Etersoft/Настройка совместной работы по NFS в Linux
Содержание
- 1 Настройка совместной работы по NFS в Linux
- 1.1 Настройка сервера NFS на примере Ubuntu Linux
- 1.2 Настройка клиентов NFS на примере Ubuntu Linux
- 1.3 Монтирование вручную
- 1.4 Монтирование при загрузке системы
- 1.5 Автомонтирование при обращении к каталогу (autofs)
- 1.6 Настройка сервера NFS на примере ALT Linux
- 1.7 Настройка клиентов NFS на примере ALT Linux
- 1.8 Настройка экспортируемых с сервера каталогов
- 1.9 Варианты авторизации клиентов
- 1.10 Информация о сервере NFS
- 1.11 Особенности работы с NFS
Настройка совместной работы по NFS в Linux
Разделяемый сетевой ресурс для совместной работы в WINE можно реализовать с помощью технологии NFS. Выбирая этот способ, следует учитывать следующие особенности NFS:
'Права доступа' Доступ к файлам по NFS осуществляется на основании идентификатора пользователя (UID/GID). Поэтому требуется, чтобы у каждого пользователя присутствовало две учётные записи: на сервере и на рабочей станции, причём с одинаковым UID. В случае, когда доступ предоставляется на основании принадлежности к группе (мы предлагаем для WINE именно такой вариант), это требует, чтобы данная группа присутствовала и на сервере, и на всех рабочих станциях с одинаковым GID. 'Безопасность' Поскольку при обращении к серверу клиент (с рабочей станции) сам сообщает свой UID/GID, авторизация остаётся целиком на совести данной рабочей станции и никак не зависит от сервера. Поэтому применять NFS (по крайней мере версии 3) можно только внутри безопасной сети, в которой можно доверять всем рабочим станциям.
Итак, для настройки разделяемого сетевого ресурса для совместной работы с WINE потребуется обеспечить:
- совпадение идентификатора группы (GID), которой принадлежит общий каталог, на сервере и всех рабочих станциях;
- совпадения идентификаторов всех пользователей (UID), которые входят в указанную группу, на сервере и на всех рабочих станциях.
Также, поскольку речь идёт о совместном использовании ресурса, потребуется задействовать механизм блокировок файлов NFS. Это требует запуска службы nfslock
и на сервере, и на всех клиентах.
Настройка сервера NFS на примере Ubuntu Linux
Будем называть машину с NFS-сервером server
.
Потребуется установить следующие пакеты:
nfs-user-server portmap
Для запуска необходимых служб следует выполнить команды:
# /etc/init.d/portmap start # /etc/init.d/nfs-user-server start
Чтобы указанные службы запускались автоматически при последующих перезагрузках, следует выполнить команды:
# update-rc.d portmap defaults # update-rc.d nfs-user-server defaults
Настройка клиентов NFS на примере Ubuntu Linux
На стороне клиента должны быть установлены пакеты:
portmap nfs-common
Для корректной совместной работы на каждом клиенте обязательно должен быть запущен сервис nfslock, и при монтировании не должно быть ключа nolock, иначе взаимодействия между клиентами не будет и данные в базе могут быть нарушены. Заметить проблему можно по неменяющемуся значению wc -l /proc/locks
на сервере, и отсутствию всех запустивших систему пользователей в списке активных пользователей 1С.
При использовании NFSv3 потребуется указать в файле /etc/defaults/nfs-common
переменную NEED_STATD=yes
для запуска rpc.statd, необходимого для работы блокировок. Для NFSv4 это не требуется. После изменения настроек не забудьте перезапустить nfs-common командой
/etc/init.d nfs-common restart
Смонтируем каталог сервера server:/mysharedir
в /mnt/share/base
. Для этого есть 3 пути:
- монтировать вручную каждый раз;
- автоматическое монтирование при загрузке системы;
- автомонтирование при обращении к каталогу.
Монтирование вручную
Для этого следует выполнить одну из следующих команд, в зависимости от версии NFS:
- для 3-й версии NFS:
$ mount -t nfs -o rw,soft,nointr server:/mysharedir /mnt/share/base
- для 4-й версии NFS:
$ mount -t nfs4 -o rw,soft,nointr server:/mysharedir /mnt/share/base
Монтирование при загрузке системы
Для этого требуется добавить в файл /etc/fstab
строку:
- для 3-й версии nfs
$ server:/mysharedir /mnt/share/base nfs rw,soft,nointr 0 0
- для 4-й версии nfs
server:/mysharedir /mnt/share/base nfs4 rw,soft,nointr 0 0
Проверить монтирование можно командой mount /mnt/share/base
.
Автомонтирование при обращении к каталогу (autofs)
Для этого необходимо добавить в файл /etc/auto.master
строку:
/mnt/share /etc/auto.tab --timeout 60
Кроме этого, в файл /etc/auto.tab
нужно добавить строку:
- для 3-й версии NFS:
base -rw,soft,nointr server:/mysharedir
- для 4-й версии NFS:
base -fstype=nfs4,rw,soft,nointr server:/mysharedir
/mnt/share
должен существовать в локальной файловой системе и в нём не должно быть подкаталогов.
Теперь можно запустить службу автоматического монтирования командой
# service autofs restart (/etc/init.d/autofs restart)Если изменения в файл конфигурации
/etc/auto.master
вносились во время работы autofs
, следует перезагрузить демон automount командой # service autofs reload (/etc/init.d/autofs reload)
Настройка сервера NFS на примере ALT Linux
Будем называть машину с NFS-сервером server
.
Потребуется установить следующие пакеты:
nfs-server portmap
Для запуска необходимых служб следует выполнить команды:
# service portmap start # service nfs start
Чтобы указанные службы запускались автоматически при последующих перезагрузках, следует выполнить команды:
# chkconfig portmap on # chkconfig nfs on
Настройка клиентов NFS на примере ALT Linux
На стороне клиента должны быть установлены следующие пакеты:
portmap nfs-client
Для корректной совместной работы на каждом клиенте обязательно должен быть запущен сервис nfslock, и при монтировании не должно быть ключа nolock, иначе взаимодействия между клиентами не будет и данные в базе могут быть нарушены. Заметить проблему можно по неменяющемуся значению wc -l /proc/locks
на сервере, и отсутствию всех запустивших систему пользователей в списке активных пользователей 1С.
# service nfslock start # chkconfig nfslock on
Смонтируем каталог сервера server:/mysharedir
в /mnt/share/base
. Для этого есть 3 пути:
- монтировать вручную каждый раз;
- автоматическое монтирование при загрузке системы;
- автомонтирование при обращении к каталогу.
Настройка экспортируемых с сервера каталогов
Чтобы экспортировать каталог /mysharedir
для монтирования на клиенте, следует в файле /etc/exports
добавить строки:
Для одной машины c IP-адресом ipaddr1
:
/mysharedir ipaddr1(rw,async)
Для машин подсети 192.168.20.0/24:
/mysharedir 192.168.20.0/24(rw,async)
Для всех машин с доменным именем, оканчивающимся на server.net
:
/mysharedir *server.net(rw,async,all_squash,anonuid=150,anongid=201)
Для экспортирования без ограничений:
/mysharedir *(rw,async)
Где:
-
rw
-- разрешены чтение и запись -
ro
-- разрешено только чтение -
no_root_squash
-- разрешает пользователямroot
на машинах-клиентах доступ к смонтированным каталогам в качестве суперпользователя. По умолчанию пользователиroot
на клиенте получают при доступе к серверуuid
пользователяnobody
. -
async
-- позволяет NFS-серверу отвечать на запросы клиентов в асинхронном режиме, что повышает производительность.
После внесения изменений достаточно выполнить команду
# exportfs -r
для перечитывания настроек сервером.
Для проверки текущих настроек следует вызвать команду:
# exportfs -v
/net/exports 192.168.0.0/24(rw,insecure,sync,wdelay,no_subtree_check,fsid=0) /net/exports/home 192.168.0.0/24(rw,insecure,sync,wdelay,no_subtree_check,nohide)Первая запись здесь является фиктивной (отмечена fsid=0) и обозначает каталог, от которого отсчитываются экспортируемые системы.
Соответственно, предварительно следует подсоединить туда содержимое нужного каталога:
/home /net/exports/home none bind 0 0
Варианты авторизации клиентов
Данный раздел приведён для полноты информации. Авторизация клиентов через NFS не поддерживается. Для того чтобы несколько NFS-клиентов могли одновременно работать с базой, расположенной на NFS-сервере, следует учитывать распределение прав доступа.
Существует несколько вариантов решения этой проблемы:
- Централизованная авторизация (PAM) или централизованная синхронизация конфигурационных файлов авторизации (NIS).
- Создание единой учетной записи (uid + gid) на всех машинах, имеющих доступ к базе.
- Использование параметров all_squash, anonuid, anongid при экспортировании каталога на nfs-сервере
Рассмотрим вариант с единой для всех учётной записью.
В этом случае можно создать новую учетную запись (uid + gid) при помощи команды: useradd имя_пользователя -u номер_uid -g основная_группа_gid -G дополнительные,группы -m
Здесь
-
номер_uid
-- желаемый идентификатор пользователя; -
основная_группа_gid
-- желаемый идентификатор или название Вашей основной группы; -
дополнительные,группы
-- перечисление дополнительных подключаемых групп через запятую, без пробелов; - ключ
-m
указывает на создание домашнего каталога/home/имя_пользователя
; - ключ
-d домашний_каталог
привязывает к этому пользователю домашний каталогдомашний_каталог
.
Далее следует задать пароль созданному пользователю командой passwd имя_пользователя
.
Или можно поправить настройки уже существующих учетных записей с помощью команд usermod
и groupmod
:
Изменить текущие uid и gid пользователя командой:
usermod -u новый_uid -g новый_gid имя_пользователя
Изменить текущий идентификатор группы командой:
groupmod -g новый_gid название_группы
Рассмотрим вариант анонимного использования ресурса на примере экспортирования NFS-сервером каталога /mysharedir
для машины client
. Для реализации этого метода в файле /etc/exports
NFS-сервера следует внести/изменить строку:
/mysharedir client(rw,async,all_squash,anonuid=150,anongid=201)
В то же время владельцем экспортируемого каталога, подкаталогов и файлов должен быть пользователь с uid=150
, а владельцем-группой, соответственно пользователи с gid=201
. На данный момент одновременная работа с базой по данному методу возможна только между NFS-клиентами. Если при этом обратиться к базе локально, произойдет ошибка.
Информация о сервере NFS
Для получения информации о работе сервера NFS следует использовать команду nfsstat
на таком сервере:
nfsstat -s
Для определения поддержки сервером NFS4 можно проверить доступные RPC-интерфейсы. Доступность через порт 2049 по протоколам TCP и UDP означает поддержку версии NFS4.
# rpcinfo -p server program vers proto port 100003 4 udp 2049 nfs 100003 4 tcp 2049 nfs 100021 3 tcp 32788 nlockmgr 100021 4 tcp 32788 nlockmgr
Наличие программы 100021 (nlockmgr) свидетельствует о поддержке блокировок со стороны сервера.
Дополнительные ссылки: http://www.bog.pp.ru/work/NFS.html http://www.brennan.id.au/19-Network_File_System.html http://nfs.sourceforge.net/nfs-howto/
Особенности работы с NFS
Поскольку SGID-бит на файлах имеет специальное значение для NFS (включает mandatory блокировки), следует обратить особое внимание на отсутствие этого бита на файлах. Обычно помогает устанавливать права на каталог скриптом setwineshare
(см. раздел Разделяемый сетевой ресурс). Для каталогов SGID-бит обязателен при совместной работе, поскольку обеспечивает общую группу для создаваемых файлов, отличную от основной группы пользователя.
Если при проверке возникает ошибка подключения, проверьте, что доступ к порту не запрещён файрволлом или ограничением на слушаемые порты в самом portmap (в ALT Linux проверьте отсутствие параметра -l
в /etc/sysconfig/portmap
.)
# rpcinfo -p server rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
Если Wine зависает при обращении к каталогу, следует попробовать выполнить $ flock файл /bin/sh
. Если при этом не появляется приглашения, командой строки, проблема в том, что недоступен (не запущен) сервер блокировок (rpc.statd) на клиентской или на серверной стороне.