Настройка NFS в Ubuntu 18.04
Талмуд честно скомунизжен с данного ресурса. Основное отличие, в том что установка производится на Debian stretch.
NFS является клиент-серверным приложением. В системе пользователя должен быть установлен NFS-клиент, а на компьютерах, которые предоставляют свое дисковое пространство – NFS-сервер.
Главным преимуществом Network File System является то, что отдельно взятые рабочие станции могут использовать меньше собственного дискового пространства, так как совместно используемые данные хранятся на отдельной машине и доступны для других машин в сети.
Установка
Для установки и сервера, и клиента необходимы одни и те же пакеты nfs-kernel-server и nfs-common
apt-get install nfs-kernel-server nfs-common
Настройка сервера
Все настройки сервера NFS хранятся в файле - /etc/exports
. Давайте ка приведем его в вертикальное положение. По умолчанию, в файле присутствуют только закомментированные примеры. Если в них нет надобности, отчистим файл
:> /etc/exports
Создадим директорию, которой будем делится:
mkdir /data
Ну вот, теперь когда файл конфигурации сервера NFS девственно чист, добавим в него строку (строк может быть любое количество):
/data 10.10.10.0/255.255.255.0(rw,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
Теперь подробнее о том, что из себя представляет эта строка:
- /data –- путь к директории, для которой раздается доступ;
- 10.10.10.0 сеть, для которой раздается доступ, можно указать отдельный IP адрес (в этом случае запись примет вид 10.10.10.14/24)
- (rw,no_root_squash,sync) –- набор опций, рассмотрим подробнее каждую из них:
- rw –чтение запись (может принимать значение ro-только чтение);
- no_root_squash – по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Эта опция снимаем данное ограничение. В целях безопасности этого лучше не делать;
- nohide - NFS автоматически не показывает нелокальные ресурсы (например, примонтированные с помощью mount –bind), эта опция включает отображение таких ресурсов;
- sync – синхронный режим доступа (может принимать обратное значение – async). sync (async) – указывает, что сервер должен отвечать на запросы только после записи на диск изменений, выполненных этими запросами. Опция async указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежность, т.к. в случае обрыва соединения или отказа оборудования возможна потеря данных;
- noaccess – запрещает доступ к указанной директории. Может быть полезной, если перед этим, был задан доступ всем пользователям сети к определенной директории, и теперь нужно ограничить доступ в поддиректории лишь некоторым пользователям.
- all_squash – подразумевает, что все подключения, будут выполниться от анонима.
- subtree_check (no_subtree_check) – в некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выполнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой контроль поддерева (subtree checks) несколько замедляет взаимодействие с клиентами, но если отказаться от него, могут возникнуть проблемы с безопасностью системы. Отменить контроль поддерева можно с помощью опции no_subtree_check. Опция subtree_check, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска;
- anonuid=1000 – привязывает анонимного пользователя к существующему пользователю;
- anongid=1000 – привязывает анонимного пользователя к группе «местного» пользователя.
Для определения uid пользователя воспользуемся командой id
id UserName
Перезапустим демон
systemctl restart nfs-kernel-server.service
В дальнейшем, в случае изменений в файле /etc/exports
, демона можно перезапускать таким макаром:
exportfs -a
Настройка клиента
Для монтирования сетевой папки необходимо определится, куда, мы ее будем монтировать. Создадим для этого директорию:
mkdir ~/common
Монтирование вручную
Чтобы посмотреть точный путь к ресурсу сервера nfs, выполним команду:
showmount -e <NFS server name>
Для монтирования директории, введем своими волосатыми ручищами следующею команду
mount -t nfs -O uid=1000,iocharset=utf-8 10.10.10.1:/data ~/common
Монтирование с записью в fstab
Создадим директорию
mkdir /media/common
В файл /etc/fstab
внесем следующею запись:
10.10.10.1:/data /media/common nfs user,rw,auto 0 0
В случае, если пользователь работает через GUI, и нет надобности монтировать каталог при старте, можно указать опцию noauto
. В дальнейше, пользователь может в Nautilus примонтировать диск одним кликом.
При монтировании удаленных директорий NFS посредством fstab, в ситуации, когда сеть с сервером будет не доступна, ноутбук невозможно выключить или отправить в спящий режим. Для использования удаленных директорий NFS на ноутбуке, лучше воспользоваться монтированием при помощи autofs
Монтирование с помощью autofs
Демон autofs, служит для упрощения монтирования сетевых шар
cd /nfs/server/
Для реализации этой фичи, нужно будет установить вот такой пакет:
apt install autofs
Настройка производится в файле /etc/auto.master
, в который добавим такую строку:
/nfs /etc/auto.nfs --timeout=60
где:
- timeout=60, указывает отмонтировать раздел при отсутствии активности на нём, в течение более чем 60 секунд.
Создадим директории:
touch /etc/auto.nfs && mkdir /nfs
В файл /etc/auto.nfs
добавляем строку:
nfs -fstype=nfs,intr 10.10.10.140:/volume6/storage
где:
- nfs — имя точки монтирования;
- -fstype=nfs,intr — опции монтирования, файловая система nfs, intr (interrupt) означает, что после длительного неиспользования файловая система автоматически отмонтируется;
- 10.10.10.140:/volume6/storage собственно сам сервер и каталог NFS
Перезапустим демон autofs
:
systemctl restart autofs.service
ite, missa est