Поиск по сайту:

Как настроить монтирование NFS в Rocky Linux 8


На этой странице

  1. Предпосылки
  2. Шаг 1. Установите NFS на хосте и клиенте
  3. Шаг 2. Создание общих каталогов на хосте
    1. Работа с креплением общего назначения
    2. Работа с домашним каталогом

    1. Тестирование общей папки общего назначения
    2. Тестирование общего доступа к домашнему каталогу

    Сетевая файловая система или NFS — это протокол распределенной файловой системы, который позволяет удаленным узлам монтировать файловые системы по сети и выполнять над ними файловые операции, как если бы они были смонтированы локально. Это особенно полезно, когда вы хотите совместно использовать ресурсы с одного сервера для нескольких клиентов или разрешить нескольким клиентам записывать в одно пространство хранения.

    В этом руководстве вы узнаете, как установить и настроить сервер NFS и клиенты NFS на основе Rocky Linux 8. Для этого мы настроим хост или сервер для обмена файлами и клиент для доступа к файлам хоста с помощью монтирования NFS. .

    Предпосылки

    • Два сервера Rocky Linux 8. У каждого из них должен быть пользователь без полномочий root с привилегиями sudo.
    • И хост, и клиент должны иметь статический IP-адрес. Вы даже можете настроить оба через частную сеть. В нашем руководстве мы будем использовать host_ip для обозначения IP-адреса хоста и client_ip для обозначения IP-адреса клиента.

    Шаг 1. Установите NFS на хосте и клиенте.

    Хозяин

    Чтобы установить пакеты NFS, вам необходимо установить пакет nfs-utils. Он предоставляет демон для сервера NFS и сопутствующие инструменты.

    Установите пакет.

    $ sudo dnf install nfs-utils
    

    Включите и запустите службу nfs-server. Остальные службы, необходимые для монтирования и совместного использования NFS, такие как nfsd, nfs-idmapd, rpcbind, rpc.mountd, lockd, rpc.statd, rpc.quotad и rpc.idmapd автоматически запускаются вместе с ним.

    $ sudo systemctl enable nfs-server --now
    

    Проверьте версию установки NFS.

    $ sudo cat /proc/fs/nfsd/versions
    -2 +3 +4 +4.1 +4.2
    

    Версии NFS 3 и 4 включены по умолчанию, а версия 2 отключена. NFSv2 довольно старый и устаревший, и поэтому вы можете увидеть знак -ve перед ним.

    NFS хранит свои конфигурации в файлах /etc/nfsmount.conf и /etc/nfs.conf. /etc/nfsmount.conf предназначен для настройки монтирования NFS, а /etc/nfs.conf — для настройки демона NFS и связанных инструментов. Для нашего урока достаточно настроек по умолчанию, и никаких изменений не требуется.

    Клиент

    На клиенте установите пакеты nfs-utils и nfs4-acl-tools.

    $ sudo dnf install nfs-utils nfs4-acl-tools
    

    Шаг 2. Создайте общие каталоги на хосте.

    Мы будем использовать два примера с разными настройками конфигурации — один с монтированием общего назначения и один с общим домашним каталогом hosts.

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

    Работа с креплением общего назначения

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

    Создайте общий каталог.

    host:$ sudo mkdir /var/nfs/share -p
    

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

    host:$ ls -l /var/nfs
    total 0
    drwxr-xr-x. 2 root root 6 Dec 13 07:30 share
    

    NFS преобразует все корневые операции на стороне клиента в учетные данные nobody:nobody из соображений безопасности. Следовательно, нам нужно сопоставить их на стороне хоста.

    host:$ sudo chown nobody:nobody /var/nfs/general
    

    Работа с домашним каталогом

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

    Шаг 3. Настройка экспорта NFS на хосте

    Откройте файл /etc/exports на хост-компьютере для редактирования.

    host:$ sudo nano /etc/exports
    

    Вставьте следующий код в файл.

    /var/nfs/share      client_ip(rw,sync,no_subtree_check)
    /home               client_ip(rw,sync,no_root_squash,no_subtree_check)
    

    Каждый каталог и его конфигурация должны быть в отдельной строке. Замените значение client_ip фактическим IP-адресом клиентского компьютера.

    Давайте рассмотрим все варианты экспорта NFS.

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

    После завершения сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Чтобы экспортировать общие ресурсы, выполните следующую команду.

    host:$ sudo exportfs -arv
    exporting client_ip:/home
    exporting client_ip:/var/nfs/share
    

    • -a — этот параметр приводит к экспорту всех каталогов.
    • -r — этот параметр приводит к экспорту всех каталогов путем создания нового списка в каталоге /var/lib/nfs/etab. Этот параметр используется для обновления списка экспорта с учетом любых изменений, внесенных в файл /etc/exports.
    • -v — включает подробный вывод.

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

    host:$ sudo exportfs -s
    /var/nfs/share  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
    /home  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
    

    Шаг 4 — Настройка брандмауэра на хосте

    Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.

    host:$ sudo firewall-cmd --state
    running
    

    Это указывает на то, что он успешно запущен.

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

    host:$ sudo firewall-cmd --permanent --list-services
    

    Он должен показать следующий вывод.

    cockpit dhcpv6-client ssh
    

    Далее нам нужно разрешить трафик к нужным службам NFS — mountd, nfs и rpc-bind . Также нам необходимо разрешить доступ с клиентского IP. Если ваши клиенты и хост-серверы находятся в одной подсети, вам не нужно добавлять IP-адрес клиентов.

    host:$ sudo firewall-cmd --permanent --add-service=nfs
    host:$ sudo firewall-cmd --permanent --add-service=rpc-bind
    host:$ sudo firewall-cmd --permanent --add-service=mountd
    host:$ sudo firewall-cmd --permanent --add-source=client_IP 
    

    Перезагрузите брандмауэр, чтобы применить изменения.

    host:$ sudo firewall-cmd --reload
    

    Шаг 5 — Создание точек монтирования и каталогов на клиенте

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

    client:$ showmount -e host_ip
    Export list for host_ip:
    /home          host_ip
    /var/nfs/share host_ip
    

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

    Создайте каталоги монтирования.

    client:$ sudo mkdir -p /nfs/share
    client:$ sudo mkdir -p /nfs/home
    

    Смонтируйте общие ресурсы, используя IP-адрес хоста.

    client:$ sudo mount host_ip:/var/nfs/share /nfs/share
    client:$ sudo mount host_ip:/home /nfs/home
    

    Убедитесь, что монтирование прошло успешно.

    client:$ df -h
    Filesystem                 Size  Used Avail Use% Mounted on
    devtmpfs                   370M     0  370M   0% /dev
    tmpfs                      405M     0  405M   0% /dev/shm
    tmpfs                      405M   16M  389M   4% /run
    tmpfs                      405M     0  405M   0% /sys/fs/cgroup
    /dev/vda1                   25G  2.4G   23G  10% /
    tmpfs                       81M     0   81M   0% /run/user/1000
    host_ip:/var/nfs/share      25G  2.4G   23G  10% /nfs/share
    host_ip:/home               25G  2.4G   23G  10% /nfs/home
    

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

    Вы также можете использовать команду mount для проверки.

    client:$ mount | grep nfs
    rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
    host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
    host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
    

    Шаг 6. Проверка доступа к NFS

    Тестирование общей папки общего назначения

    Запишите тестовый файл в общую папку /var/nfs/share.

    client:$ sudo touch /nfs/share/test.txt
    

    Проверьте его право собственности.

    client:$ ls -l /nfs/share/test.txt
    -rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt
    

    Поскольку мы смонтировали этот том, используя настройки NFS по умолчанию, и создали файл на клиенте с помощью sudo, владельцем файла по умолчанию является nobody:nobody. Суперпользователи клиента не могут выполнять какие-либо административные задачи в общем ресурсе.

    Тестирование общего доступа к домашнему каталогу

    Запишите тестовый файл в общую папку /nfs/home.

    client:$ sudo touch /nfs/home/home.txt
    

    Проверьте его право собственности.

    client:$ ls -l /nfs/home/home.txt
    -rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt
    

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

    Шаг 7. Сделайте точки крепления постоянными.

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

    Откройте файл /etc/fstab для редактирования.

    client:$ sudo nano /etc/fstab
    

    Вставьте следующие строки в конец файла.

    . . .
    host_ip:/var/nfs/share      /nfs/share     nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
    host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
    

    Вы можете узнать больше о параметрах, перечисленных выше, выполнив следующие команды.

    client:$ man nfs
    client:$ man mount
    

    Если вы хотите прочитать их в Интернете, вы можете найти в Google фразы man nfs и man mount, чтобы узнать больше об этих параметрах.

    Шаг 8. Размонтируйте общий ресурс NFS

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

    Выйдите из общих креплений и размонтируйте их.

    client:$ cd ~
    client:$ sudo umount /nfs/share
    client:$ sudo umount /nfs/home
    

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

    Заключение

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

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