Настройка NFS на Ubuntu.
04 Dec 2022Автомонтирование каталога NFS на Ubuntu при обращении. Клиент не зависает при загрузке, если сервер недоступен.
Сервер
Настраиваем сервер.
sudo apt-get install nfs-kernel-server
Изменяем или создаем настроечный файл на сервере
sudo -e /etc/exports
/media/data 192.168.1.0/24(rw,async,all_squash,no_subtree_check,wdelay,anonuid=1000,anongid=1000,fsid=0,nohide)
- Компьютеры располагаются в сети 192.168.1.0/24 - доверяем всем в домашней сети. Поэтому доступ без авторизации.
rw- изменениеasync- указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежность, если нет бесперебойника.all_squash- подразумевает, что все подключения будут выполнятся от анонимного пользователя.no_subtree_check- не выполнять контроль доступа папок и подпапок.wdelay- указывает серверу задерживать выполнение запросов на запись, если ожидается последующий запрос на запись, записывая данные более большими блокамиanonuid=1000иanongid=1000- Явно задает UID/GID для анонимного пользователя.fsid=0- определение корневого каталога NFS.nohide- NFS автоматически не показывает нелокальные (примонтированные) ресурсы.
Клиент
Устанавливаем клиента NFS и Autofs для монтирования каталогов в момент обращения.
sudo apt-get install autofs nfs-common
Настраиваем
sudo -e /etc/auto.master
/nfs /etc/auto.nfs --timeout=60
/nfs- каталог где будут автоматически создаваться подпапки при монтировании./etc/auto.nfs- файл настроек монтирования.--timeout=60- через 60 сек отмонтировать фс, если не используется.
Теперь настройки для отдельных каталогов.
sudo -e /etc/auto.nfs
nas_data -rw,proto=tcp,rsize=32768,wsize=32768,intr,noatime,hard,retrans=100,bg 192.168.1.5:/media/data
nas_data- каталог куда будет монтироваться внешняя фс. (т.е. полный путь /nfs/nas_data)rw- доступ на записьproto=tcp- определяет транспорт, который используется для связи с сервером NFS.rsize=32768wsize=32768- Обычно, если не заданы опцииrsizeиwsize, то NFS будет читать и писать блоками по4096или по8192байтов. Некоторые комбинации ядер Linux и сетевых карт не могут обрабатывать такие большие блоки, и это может быть не оптимально. Так что нам нужно поэкспериментировать и найти значенияrsizeиwsize, которые работают так быстр,о насколько это возможно. На современных системах как правило оптимальными будут значенияrsize=32768,wsize=32768. Т.е увеличиваем буфера чтения и записи , что уменьшает сетевые издержкиnoatime- не обновлять информацию о времени доступа к файловой системе.hardиintr- Программа осуществляющая доступ к файлу на смонтированной по NFS файловой системе просто приостановит выполнение при разрыве связи с сервером. Процесс не может быть прерван или убит до тех пор, пока вы явно не укажите опциюintr. Когда сервер NFS будет запущен заново, то программа продолжит безмятежно продолжать работу с прерванного места. Это скорее всего то, что вам нужно. Я рекомендую использовать опцииhard,intrна всех файловых системах смонтированных через NFS.retrans=100- Количество раз, когда клиент NFS повторяет запрос, прежде чем он попытается дальнейшие действия по восстановлению. Если параметр повторной передачи не казан, NFS клиент пробует каждый UDP-запрос три раза и каждый TCP-запрос дважды.bg- При потери доступа к серверу, повторять попытки в фоновом режиме, чтобы не блокировать процесс загрузки системы.192.168.1.5:/media/data- СЕРВЕР:/каталог/наСЕРВЕРЕ
и последнее:
sudo -e /etc/default/autofs
Если сеть с сервером NFS недоступна, возможна большая задержка (по умолчанию 3 минуты) при открытии nautilus, в закладках которого находится примонтированная удаленная папка NFS. Для решения этой проблемы необходимо уменьшить время ожидания монтирования autofs, для этого в файле /etc/default/autofs необходимо раскомментировать или добавить следующие строки:
MOUNT_WAIT=10
#время ожидания ответа от mount
NEGATIVE_TIMEOUT=10
#время ожидания при неудачной попытке монтирования