NFS - установка и настройка под Gentoo

Материал из AlexNook
Перейти к навигацииПерейти к поиску

Отличная статья, которая легла в основу этой заметки - это официальный мануал на Gentoo wiki.


Установка

В Gentoo для установки программы достаточно выполнить:

emerge -v net-fs/nfs-utils

При этом используются следующие USE флаги суммарно:

Use Flags: libmount nfsidmap nfsv4 uuid nfsdcld (?)

  • libmount - Link mount.nfs with libmount.
  • nfsidmap - Enable support for newer nfsidmap helper.
  • nfsv4 - Enable support for NFSv4.
  • uuid - Support UUID lookups in rpc.mountd.
  • nfsdcld - Enable nfsdcld NFSv4 clientid tracking daemon.

Настройка Server и Export

Export

Сперва хочется отметить, что можно удобно сформировать одну точку экспорта всех папок файловой системы, используя команду

mount --bind /mnt/my_hdd/films /mnt/nfs_export_point/films
mount --bind /home/ftp/pub /mnt/nfs_export_point/files

когда локальная папка монтируется в новое место (создаётся идентичная копия). Файлы становятся доступными из двух мест. После чего делается экспорт папки /mnt/nfs_export_point

Note: для рекурсивного монтирования подмонтированных внутри пути устройств нужно использовать --rbind
Warning: есть мнение, что такое монтирование может создавать много сложностей разного рода, когда одно и то же доступно в разных местах. Я это не использую


Для настройки экспорта шары нужно поправить файлик

nano /etc/exports
File: /etc/exports
/mnt/samba/ochakovo 10.8.0.0/24(rw,insecure,sync,all_squash,subtree_check,anonuid=1002,anongid=1000)


Warning: После правки файла с экспортами важно выполнить команду после запуска NFS демона, чтобы все изменения дошли до пользователей
exportfs -rv

Параметры команды экспорта

  • /mnt/samba/ochakovo экспортировать папку ochakovo
  • 10.8.0.0/24 дать доступ для клиентов из этой подсети
  • rw доступ на чтение и записиь
  • insecure разрешить использовать номера портов выше 1024
  • sync синхронный режим доступа(может принимать обратное значение- async). sync (async) - указывает, что сервер должен отвечать на запросы только после записи на диск изменений, выполненных этими запросами. Опция async указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежность, т.к. в случае обрыва соединения или отказа оборудования возможна потеря данных;
  • all_squash эта опция отвечает за то, что любые пользователи NFS-клиента будут считаться анонимными на NFS-сервере или же тем пользователеми NFS-сервера, чьи идентификаторы указаны в anonuid и anongid;
  • subtree_check при разрешение доступа к подкаталогу файловой системы, а не всей файловой системе, сервер проверяет, находится ли запрошенный файл в экспортированном подкаталоге или нет. Это повышает безопасность, но уменьшает скорость
  • anonuid пользователь на NFS сервере, куда мапится подключившийся клиент к шаре
  • anongid группа на NFS сервере, куда мапится подключившийся клиент к шаре


Note: Доступ к шаре разграничивается по IP клиента, которому она доступна. Так же правами доступа на файлы и папки шары, установленными в системе.

Server

Для настройки запускаемого демона NFS нужно поправить файлик /etc/conf.d/nfs Внутри я поправил лишь 1 строчку:

File: /etc/conf.d/nfs
# Options to pass to rpc.nfsd
OPTS_RPC_NFSD="8 -V 4"
  • 8 The option 8 is the number of NFS server threads to start. Since only one thread is started by default, the thread count should be increased for optimal performance.
  • -V 4 enable NFS versions 4

Запуск и остановка

Для запуска

/etc/init.d/nfs start
Note: При этом запускается сразу несколько служб. Для остановки всех сразу нужно использовать rpcbind
Code: Запускаемые службы

donik /mnt/samba/ochakovo # /etc/init.d/nfs start
 * Starting rpcbind ...                                                                                                                         [ ok ]
 * Starting NFS statd ...                                                                                                                       [ ok ]
 * Starting idmapd ...                                                                                                                          [ ok ]
 * Exporting NFS directories ...                                                                                                                [ ok ]
 * Starting NFS mountd ...
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6                                                                                  [ ok ]
 * Starting NFS daemon ...                                                                                                                      [ ok ]
 * Starting NFS smnotify ...                                                                                                                    [ ok ]

Для остановки

/etc/init.d/rpcbind stop

Для добавления в автозапуск

rc-update add nfs default

Настройка клиента

Для монтирования шары на клиенте в /etc/fstab нужно прописать

File: /etc/fstab
10.8.0.1:/mnt/samba/ochakovo	/data	nfs4	_netdev,rsize=1048576,wsize=1048576,vers=4,user,rw,auto,nofail,noatime	0	0

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

  • 10.8.0.1:/mnt/samba/ochakovo путь до экспортируемой шары на сервере, включая IP NFS сервера
  • /data куда подмонтировать NFS шару
  • nfs4 тип монтируемой файловой системы
  • _netdev говорим, что устройство сетевое (используется для предотвращения попыток системы монтировать эту файловую систему пока доступна сеть)
  • rsize и wsize I/O on large files over NFSv4 can be *strongly* improved by these params, which increases the maximum read and write size to 1024^2 bytes, or 1MB.
  • vers This option is an alternative to the nfsvers=n option. nfsvers option determins the NFS protocol version number used to contact the server's NFS service. If the server does not support the requested version, the mount request fails.
  • user любой пользователь клиента может подмонтировать себе шару с NFS сервера
  • rw Mount the filesystem read/write.
  • auto Can be mounted with the -a option.
  • nofail Do not report errors for this device if it does not exist.
  • noatime Do not update inode access times on this filesystem (e.g. for faster access on the news spool to speed up news servers). This works for all inode types (directories too), so it implies nodiratime.


Корректировка мапинга анонимных пользователей

Иногда, когда id пользователя и его группы не совпадают на клиенте и сервере, права папок и файлов шары мапятся как nobody

Чтобы избежать этого, можно поправить файлик /etc/idmapd.conf

File: /etc/idmapd.conf
[Mapping]

Nobody-User = samba
Nobody-Group = users


Запуск и остановка

Для запуска

/etc/init.d/nfsclient start

Для остановки

/etc/init.d/nfsclient stop

Для добавления в автозапуск

rc-update add nfsclient default


Warning: Когда для монтирования шары используется fstab, то нужно в runlevels default добавить службу netmount, если её там НЕТ
rc-update add netmount default

Ссылки

  1. Gentoo wiki
  2. Man по mount(8)
  3. Полезная статья с описанием опций экспорта шар и монтированием
  4. Options for NFS in FSTAB file