Настройка nfs centos 7

Обновлено: 03.07.2024

Вопрос: я хотел бы использовать общий каталог через NFS между хостами CentOS 7. Какова процедура настройки сервера и клиента NFS и включения монтирования NFS между ними в среде CentOS 7?

NFS — это протокол распределенной файловой системы, построенный на основе протокола Sun RPC (удаленный вызов процедур). NFS широко используется для совместного использования каталогов и файлов в сетевых средах локальных сетей, а также используется во многих системах сетевых хранилищ (NAS) и серверных частях облачных хранилищ. В типичном развертывании NFS сервер NFS экспортирует часть своей локальной файловой системы в виде общих ресурсов NFS, а один или несколько удаленных клиентов NFS монтируют и получают доступ к экспортированным общим ресурсам в своей собственной файловой системе.

Вот как настроить общий ресурс NFS между сервером NFS и клиентом, работающими на CentOS 7.

Подготовка

В этом руководстве будут использоваться два хоста CentOS 7: один для сервера NFS, а другой для клиента NFS. Многие операции чтения/записи в NFS связаны с доступом к временным меткам и их обновлением, но сама NFS не имеет механизма для синхронизации времени между сервером и клиентом. Поэтому для надежной работы NFS настоятельно рекомендуется настроить NTP на каждом сервере NFS и клиентском узле, чтобы избежать перекоса часов между ними.

Настройка сервера NFS в CentOS 7

Установите необходимые демоны и утилиты NFS с помощью yum:

Затем подготовьте папку для экспорта через NFS. В этом примере я собираюсь экспортировать /var/nfs локальной файловой системы.

Теперь откройте /etc/exports в текстовом редакторе и укажите эту папку с дополнительными параметрами экспорта, как показано ниже.

Используемые параметры экспорта указывают на следующее. Очевидно, что вы можете настроить параметры в соответствии со своими требованиями.

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

Если вы изменяете /etc/exports , вам необходимо активировать изменение, выполнив:

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

Чтобы проверить, успешно ли экспортирована папка, запустите:

В выходных данных должно быть указано, какие папки (например, /var/nfs ) кому экспортируются (например, 192.168.1.0/24 ).

Настройка клиента NFS в CentOS 7

Теперь давайте посмотрим, как настроить удаленный клиент NFS для подключения и доступа к экспортированному общему ресурсу NFS.

На отдельном хосте CentOS 7 установите необходимые демоны и утилиты NFS.

Подготовьте локальную точку подключения для общего ресурса NFS.

Подключите удаленный общий ресурс NFS с помощью команды mount, как показано ниже. В этом примере IP-адрес сервера NFS — 192.168.1.174 .

Чтобы убедиться, что удаленный общий ресурс NFS успешно смонтирован, запустите команду mount без каких-либо аргументов и проверьте, содержит ли вывод смонтированный общий ресурс NFS.


Команда df должна отображать дополнительное хранилище из общей папки NFS.


Чтобы размонтировать общий ресурс NFS, используйте команду umount.

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

Обратите внимание, что подключенный общий ресурс NFS меняет владельца любого файла, созданного пользователем root, на пользователя nfsnobody. Это функция NFS, называемая закрытие корневого каталога, которая существенно ограничивает права доступа удаленного суперпользователя из соображений безопасности. Вы можете отключить сквош root с помощью параметра экспорта no_root_squash, но это не рекомендуется, так как любой удаленный пользователь root может случайно испортить общие папки с привилегиями root.

Поддержка Xmodulo

Этот веб-сайт стал возможен благодаря минимальной рекламе и вашему любезному пожертвованию через PayPal (кредитная карта) или биткойн ( 1M161JGAkz3oaHNvTiPFjNYkeABox8rb4g ).

NFS расшифровывается как Network File System, помогает вам обмениваться файлами и папками между системами Linux / Unix, разработанной SUN Microsystems в 1990 году. NFS позволяет вам локально монтировать удаленный общий ресурс.

Это руководство поможет вам настроить сервер NFS на CentOS 7 / RHEL 7.

Преимущества NFS

  • Общий доступ к файлам/папкам между системами *nix
  • Позволяет монтировать удаленные файловые системы локально
  • Может использоваться как централизованная система хранения.
  • Его можно использовать в качестве домена хранения (хранилища данных) для VMware и другой платформы виртуализации.
  • Позволяет приложениям совместно использовать файлы конфигурации и данных с несколькими узлами.
  • Разрешает обновлять файлы в общей папке.

Важные услуги

Ниже перечислены важные службы NFS, включенные в пакеты nfs-utils.

rpcbind: сервер rpcbind преобразует номера программ RPC в универсальные адреса.

nfs-server : позволяет клиентам получать доступ к общим ресурсам NFS.

nfs-lock / rpc-statd: блокировка файлов NFS. Реализовать восстановление блокировки файлов при сбое и перезагрузке сервера NFS.

nfs-idmap: переводит идентификаторы пользователей и групп в имена, а также преобразует имена пользователей и групп
в идентификаторы

.

Важные файлы конфигурации

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

/etc/exports : это основной файл конфигурации, который определяет, какие файловые системы экспортируются на удаленные хосты, и указывает параметры.

/etc/fstab : этот файл используется для управления файловыми системами, включая каталоги NFS, которые монтируются при загрузке системы.

/etc/sysconfig/nfs : этот файл используется для управления портами, на которых работают необходимые службы RPC.

/etc/hosts.allow и /etc/hosts.deny : эти файлы называются оболочками TCP и контролируют доступ к серверу NFS. Он используется NFS, чтобы решить, принимать или нет подключение, входящее с другого IP-адреса.

Окружающая среда

Для этой демонстрации я буду использовать минимальную версию CentOS 7. Это руководство также должно работать в системах Oracle Linux и Fedora.

NFS-сервер

Имя хоста: server.itzgeek.local (CentOS 7)
IP-адрес: 192.168.1.10/24

Клиент NFS

Имя хоста: client.itzgeek.local (CentOS 7)
IP-адрес: 192.168.1.20/24

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

Установить NFS-сервер

Установите приведенный ниже пакет для сервера NFS с помощью команды yum.

После установки пакетов включите и запустите службы NFS.

Создать общий ресурс NFS

Теперь давайте создадим каталог для совместного использования с клиентом NFS. Здесь я создам новый каталог с именем nfsfileshare в разделе /.

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

Разрешить клиенту NFS чтение и запись в созданный каталог.

Мы должны изменить файл /etc/exports, чтобы сделать запись каталога /nfsfileshare, которым вы хотите поделиться.

Создайте общий ресурс NFS, как показано ниже.

192.168.1.20 : IP-адрес клиентского компьютера. Мы также можем использовать имя хоста вместо IP-адреса. Также можно определить диапазон клиентов с подсетью, например 192.168.1.0/24.

rw: разрешение на запись в общую папку

синхронизация: все изменения в соответствующей файловой системе немедленно сбрасываются на диск; соответствующие операции записи ожидаются.

no_root_squash : по умолчанию любой запрос файла, сделанный пользователем root на клиентском компьютере, обрабатывается как запрос пользователя Nobody на сервере. (Точный UID, на который сопоставляется запрос, зависит от UID пользователя «никто» на сервере, а не на клиенте.) Если выбрано no_root_squash, то root на клиентской машине будет иметь такой же уровень доступа к файлам на система как root на сервере.

Вы можете ознакомиться со всеми параметрами в man-странице man exports или здесь.

Экспортируйте общие каталоги с помощью следующей команды.

Дополнительно:

exportfs -v : отображает список общих файлов и параметры экспорта на сервере.
exportfs -a : экспортирует все каталоги, перечисленные в /etc/exports.
exportfs -u : отменить экспорт одного или нескольких каталогов.
exportfs -r : повторно экспортировать все каталоги после изменения /etc/exports.

После настройки сервера NFS нам нужно смонтировать этот общий каталог в клиенте NFS.

Настроить брандмауэр

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

Настроить клиент NFS

Установить клиент NFS

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

Проверить общий ресурс NFS

Перед подключением общего ресурса NFS я прошу вас проверить общие ресурсы NFS, доступные на сервере NFS, выполнив следующую команду на клиенте NFS.

Вывод:

Согласно выходным данным, /nfsfileshare доступен на сервере NFS (192.168.1.10) для клиента NFS (192.168.1.20).

Дополнительно:

showmount -e : показывает доступные общие ресурсы на вашем локальном компьютере (сервере NFS).
showmount -e : список доступных общих ресурсов на удаленном сервере

Подключить общий ресурс NFS

Теперь создайте каталог на клиенте NFS для подключения общего ресурса NFS /nfsfileshare, который мы создали на сервере NFS.

Используйте команду ниже, чтобы смонтировать общий ресурс NFS /nfsfileshare с сервера NFS 192.168.1.10 в /mnt/nfsfileshare на клиенте NFS.

Проверьте смонтированный общий ресурс на клиенте NFS с помощью команды mount.

Вывод:

Кроме того, вы можете использовать команду df -hT для проверки подключенного общего ресурса NFS.

Вывод:

Создайте файл в смонтированном каталоге, чтобы проверить доступ для чтения и записи к общему ресурсу NFS.

Если приведенная выше команда не возвращает ошибок, у вас работает настройка NFS.

Автоматическое подключение общих ресурсов NFS

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

Добавьте запись, как показано ниже.

Сохраните и закройте файл.

Перезагрузите клиентский компьютер и проверьте, монтируется ли общий ресурс автоматически или нет.

Проверьте смонтированный общий ресурс на клиенте NFS с помощью команды mount.

Вывод:

Если вы хотите размонтировать этот общий каталог из вашего NFS-клиента после завершения общего доступа к файлам, вы можете размонтировать этот конкретный каталог с помощью команды umount.

Заключение

Вы успешно настроили сервер NFS и клиент NFS в CentOS 7 / RHEL 7. Если вы не хотите использовать статическое монтирование, вы можете настроить AutoFS в CentOS 7 для монтирования общего ресурса NFS только тогда, когда пользователь получает к нему доступ.

NFS позволяет серверу Linux совместно использовать каталоги с другими клиентами UNIX по сети. Сервер NFS экспортирует каталог, а клиент NFS монтирует этот каталог. RHEL 7 поддерживает две версии NFS — NFSv3 и NFSv4.

Сервер NFS и процессы RPC

запуск процесса nfs-server запускает сервер NFS и другие процессы RPC. Процессы RPC включают в себя:
– rpc.statd : реализует протокол мониторинга (NSM) между клиентом NFS и сервером NFS
– rpc.mountd : демон монтирования NFS, который реализует на стороне сервера запросы на монтирование от клиентов NFSv3.
– rpc.idmapd : сопоставляет имена NFSv4 и локальные UID и GID
– rpc.rquotad : предоставляет информацию о пользовательской квоте для удаленных пользователей.

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

<р>1. Установите необходимые пакеты nfs, если они еще не установлены на сервере:

<р>2. Включите службы во время загрузки:

В RHEL7.1 (nfs-utils-1.3.0-8.el7) включение nfs-lock не работает (нет такого файла или каталога). его не нужно включать, поскольку rpc-statd.service является статическим.

В RHEL7.1 (nfs-utils-1.3.0-8.el7) это не работает (нет такого файла или каталога). его не нужно включать, поскольку nfs-idmapd.service является статическим.

<р>3. Запустите службы NFS:

<р>4. Проверьте статус службы NFS:

<р>5. Создайте общий каталог:

<р>6. Экспорт каталога. Формат файла /etc/exports:

Клиентские параметры включают (значения по умолчанию перечислены первыми):
ro / rw :
a) ro : разрешить клиентам доступ к общему ресурсу только для чтения.
b) rw : разрешить клиентам доступ на чтение и запись к общему ресурсу.
sync / async :
a) sync : сервер NFS отвечает на запрос только после того, как изменения, сделанные предыдущим запросом, будут записаны на диск.
b) async : указывает, что серверу не нужно ждать.
wdelay / no_wdelay
a) wdelay : сервер NFS откладывает выполнение запросов на запись, когда подозревает, что другой запрос на запись неизбежен.
b) no_wdelay : используйте эту опцию, чтобы отключить задержку. Опция no_wdelay может быть включена только в том случае, если включена опция синхронизации по умолчанию.
no_all_squash / all_squash :
a) no_all_squash : не изменяет отображение удаленных пользователей.
b) all_squash : раздавить всех удаленных пользователей, включая root.
root_squash / no_root_squash :
a) root_squash : запрещает пользователям root, подключенным удаленно, иметь root-доступ. Эффективное подавление удаленных привилегий root.
b) no_root_squash : отключить раздавливание корней.

<р>7. Экспорт общего ресурса:

-r реэкспортирует записи в /etc/exports и синхронизирует /var/lib/nfs/etab с /etc/exports. /var/lib/nfs/etab — главная таблица экспорта. Другие параметры, которые можно использовать с командой exportfs:

<р>8. Перезапустите службу NFS:

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

<р>1. Установите необходимые пакеты nfs, если они еще не установлены на сервере:

<р>2. Используйте команду mount для монтирования экспортированных файловых систем. Синтаксис команды:

В этом примере выполняются следующие действия:
– выполняется монтирование /home с удаленного хоста (remote_host) в локальной точке монтирования /remote_home.
– файловая система монтируется только для чтения, и пользователям запрещается запускать программу setuid (параметры -o ro, nosuid).

<р>3. Обновите /etc/fstab, чтобы монтировать общие ресурсы NFS во время загрузки.

Службы брандмауэра должны быть активны на сервере NFS

Для работы сервера NFS включите службы nfs, mountd и rpc-bind в соответствующей зоне в приложении firewall-config или с помощью firewall-cmd :

Файл /etc/exports определяет, какие файловые системы экспортируются на удаленные хосты, и указывает параметры. Он следует следующим правилам синтаксиса:

Любые списки авторизованных хостов, размещенные после экспортируемой файловой системы, должны быть разделены пробелами.

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

Можно указать несколько хостов вместе с конкретными параметрами для каждого хоста. Для этого перечислите их в той же строке, что и список, разделенный пробелами, где за каждым именем хоста следует соответствующий параметр (в круглых скобках), например:

Информацию о различных методах указания имен хостов см. в Разделе 8.6.5, «Форматы имен хостов».

В своей простейшей форме файл /etc/exports указывает только экспортируемый каталог и хосты, которым разрешен доступ к нему, как в следующем примере:

Пример 8.6.Файл /etc/exports

Экспортированная файловая система доступна только для чтения. Удаленные хосты не могут изменять данные, совместно используемые в файловой системе. Чтобы хосты могли вносить изменения в файловую систему (то есть читать и записывать), укажите параметр rw.

Сервер NFS не будет отвечать на запросы до тех пор, пока изменения, сделанные предыдущими запросами, не будут записаны на диск. Чтобы вместо этого включить асинхронную запись, укажите параметр async .

Сервер NFS отложит запись на диск, если подозревает, что следующий запрос на запись неизбежен. Это может повысить производительность, так как сокращает количество обращений к диску с помощью отдельных команд записи, тем самым уменьшая накладные расходы на запись. Чтобы отключить это, укажите no_wdelay. no_wdelay доступен только в том случае, если также указан параметр синхронизации по умолчанию.

Это не позволяет пользователям root, подключенным удаленно (в отличие от локального), иметь привилегии root; вместо этого сервер NFS присваивает им идентификатор пользователя nfsnobody. Это эффективно «раздавливает» полномочия удаленного пользователя root до самого низкого локального пользователя, предотвращая возможную несанкционированную запись на удаленный сервер. Чтобы отключить раздавливание корней, укажите no_root_squash .

Чтобы закрыть всех удаленных пользователей (включая root), используйте all_squash . Чтобы указать идентификаторы пользователя и группы, которые NFS-сервер должен назначать удаленным пользователям с определенного хоста, используйте параметры anongid и anongid соответственно, как показано ниже:

Здесь uid и gid — это идентификатор пользователя и идентификатор группы соответственно. Параметры anonuid и anongid позволяют создать специальную учетную запись пользователя и группы для совместного использования удаленными пользователями NFS.

По умолчанию списки управления доступом (ACL) поддерживаются NFS в Red Hat Enterprise Linux. Чтобы отключить эту функцию, укажите параметр no_acl при экспорте файловой системы.

Каждое значение по умолчанию для каждой экспортируемой файловой системы должно быть явно переопределено. Например, если опция rw не указана, экспортированная файловая система доступна только для чтения. Ниже приведен пример строки из /etc/exports, которая переопределяет два параметра по умолчанию:

В этом примере 192.168.0.3 может монтировать /another/exported/directory/ для чтения и записи, и все операции записи на диск выполняются асинхронно. Дополнительные сведения о параметрах экспорта см. в man exportfs .

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

Важно

Формат файла /etc/exports очень точен, особенно в отношении использования пробела. Не забывайте всегда отделять экспортированные файловые системы от хостов и хосты друг от друга пробелом. Однако в файле не должно быть других пробелов, кроме строк комментариев.

8.6.2. Команда exportfs

Каждая файловая система, экспортируемая удаленным пользователям с помощью NFS, а также уровень доступа для этих файловых систем перечислены в файле /etc/exports. Когда служба nfs запускается, команда /usr/sbin/exportfs запускает и читает этот файл, передает управление rpc.mountd (если NFSv3) для фактического процесса монтирования, затем rpc.nfsd, где файловые системы затем доступны для удаленного доступа. пользователей.

При вводе вручную команда /usr/sbin/exportfs позволяет привилегированному пользователю выборочно экспортировать или отменить экспорт каталогов без перезапуска службы NFS. При задании правильных параметров команда /usr/sbin/exportfs записывает экспортированные файловые системы в /var/lib/nfs/xtab. Поскольку rpc.mountd обращается к файлу xtab при определении прав доступа к файловой системе, изменения в списке экспортируемых файловых систем вступают в силу немедленно.

Вызывает экспорт всех каталогов, перечисленных в /etc/exports, путем создания нового списка экспорта в /var/lib/nfs/etab . Этот параметр эффективно обновляет список экспорта при любых изменениях, внесенных в /etc/exports .

Заставляет экспортировать или не экспортировать все каталоги, в зависимости от того, какие другие параметры переданы в /usr/sbin/exportfs. Если другие параметры не указаны, /usr/sbin/exportfs экспортирует все файловые системы, указанные в /etc/exports .

Указывает каталоги для экспорта, которые не указаны в /etc/exports. Замените файловые системы дополнительными файловыми системами для экспорта. Эти файловые системы должны быть отформатированы так же, как они указаны в /etc/exports. Этот параметр часто используется для проверки экспортируемой файловой системы перед ее постоянным добавлением в список экспортируемых файловых систем. Дополнительные сведения о синтаксисе /etc/exports см. в разделе 8.6.1, «Файл конфигурации /etc/exports».

Игнорирует /etc/exports ; только параметры, указанные в командной строке, используются для определения экспортируемых файловых систем.

Отменяет экспорт всех общих каталогов. Команда /usr/sbin/exportfs -ua приостанавливает общий доступ к файлам NFS, сохраняя при этом работу всех демонов NFS.Чтобы снова включить общий доступ NFS, используйте exportfs -r .

Подробная операция, при которой экспортируемые или неэкспортируемые файловые системы отображаются более подробно при выполнении команды exportfs.

Если команде exportfs не переданы никакие параметры, она отображает список экспортируемых в данный момент файловых систем. Дополнительные сведения о команде exportfs см. в man exportfs .

8.6.2.1. Использование exportfs с NFSv4

В Red Hat Enterprise Linux 7 не требуется никаких дополнительных действий для настройки экспорта NFSv4, поскольку любые упомянутые файловые системы автоматически доступны для клиентов NFSv3 и NFSv4, использующих один и тот же путь. В предыдущих версиях этого не было.

Чтобы клиенты не могли использовать NFSv4, отключите его, задав RPCNFSDARGS= -N 4 в /etc/sysconfig/nfs .

8.6.3. Запуск NFS за брандмауэром

NFS требуется rpcbind , который динамически назначает порты для служб RPC и может вызвать проблемы при настройке правил брандмауэра. Чтобы разрешить клиентам доступ к общим ресурсам NFS за брандмауэром, отредактируйте файл /etc/sysconfig/nfs, указав, на каких портах работают службы RPC. Чтобы разрешить клиентам доступ к квоте RPC через брандмауэр, см. Раздел 8.6.4, «Доступ к квоте RPC через брандмауэр».

Файл /etc/sysconfig/nfs не существует по умолчанию во всех системах. Если /etc/sysconfig/nfs не существует, создайте его и укажите следующее:

Чтобы указать порты, которые будут использоваться службой nlockmgr, задайте номер порта для параметров nlm_tcpport и nlm_udpport в файле /etc/modprobe.d/lockd. файл конфигурации.

Если NFS не запускается, проверьте /var/log/messages. Обычно NFS не запускается, если вы указываете номер порта, который уже используется. После редактирования /etc/sysconfig/nfs вам необходимо перезапустить службу nfs-config, чтобы новые значения вступили в силу в Red Hat Enterprise Linux 7.2 и более ранних версиях, выполнив: Затем перезапустите сервер NFS: Запустите rpcinfo -p, чтобы подтвердить изменения вступили в силу.

Примечание

Чтобы разрешить обратным вызовам NFSv4.0 проходить через брандмауэры, установите /proc/sys/fs/nfs/nfs_callback_tcpport и разрешите серверу подключаться к этому порту на клиенте.

Этот процесс не требуется для NFSv4.1 или выше, а другие порты для mountd , statd и lockd не требуются в чистом окружении NFSv4.

Читайте также: