Настройка NFS в Ubuntu
Сетевая файловая система NFS или Network File System, это популярный протокол сетевой файловой системы, который позволяет пользователям подключать удаленные сетевые каталоги на своей машине и передавать файлы между серверами. Вы можете использовать дисковое пространство на другой машине для своих файлов и работать с файлами, расположенными на других серверах. По сути, это альтернатива общего доступа Windows для Linux, в отличие от Samba реализована на уровне ядра и работает более стабильно.
В этой статье будет рассмотрена установка NFS в Ubuntu. Мы разберем установку всех необходимых компонентов, настройку общей папки, а также подключение сетевых папок.
Немного теории
Как уже было сказано, NFS, это сетевая файловая система. Для работы необходим сервер, на котором будет размещена общая папка и клиенты, которые могут монтировать сетевую папку как обычный диск в системе. В отличие от других протоколов NFS предоставляет прозрачный доступ к удаленным файлам. Программы будут видеть файлы как в обычной файловой системе и работать с ними как с локальными файлами, nfs возвращает только запрашиваемую часть файла, вместо файла целиком, поэтому эта файловая система будет отлично работать в системах с быстрым интернетом или в локальной сети.
Установка компонентов NFS
Перед тем как мы сможем работать с NFS, нам придется установить несколько программ. На машину, которая будет сервером нужно установить пакет nfs-kernel-server, с помощью которого будет выполнено открытие шары nfs в ubuntu 16.04. Для этого выполните:
sudo apt install nfs-kernel-server
Теперь давайте проверим правильно ли установился сервер. Сервис NFS слушает соединения как для TCP, так и для UDP на порту 2049. Посмотреть действительно ли сейчас используются эти порты можно командой:
rpcinfo -p | grep nfs
Также важно проверить поддерживается ли NFS на уровне ядра:
cat /proc/filesystems | grep nfs
Видим, что работает, но если нет, нужно вручную загрузить модуль ядра nfs:
Давайте еще добавим NFS в автозагрузку:
sudo systemctl enable nfs
На клиентском компьютере вам нужно установить пакет nfs-common, чтобы иметь возможность работать с этой файловой системой. Вам необязательно устанавливать компоненты сервера, достаточно будет только этого пакета:
sudo apt install nfs-common
Вот и все, дальше настройка NFS в Ubuntu.
Настройка сервера NFS в Ubuntu
Мы можем открыть NFS доступ к любой папке, но давайте создадим для этих целей новую:
Дальше нас интересует настройка ubuntu nfs server. Все общие папки и другие настройки nfs находятся в файле /etc/exports. Синтаксис записи папки такой:
адрес_папки клиент (опции)
Адрес папки — это та папка, которую нужно сделать доступной по сети. Клиент — ip адрес или адрес сети, из которой могут получить доступ к этой папке. А вот с опциями немного сложнее. Рассмотрим некоторые из них:
- rw — разрешить чтение и запись в этой папке
- ro — разрешить только чтение
- sync — отвечать на следующие запросы только тогда, когда данные будут сохранены на диск (по умолчанию)
- async — не блокировать подключения пока данные записываются на диск
- secure — использовать для соединения только порты ниже 1024
- insecure — использовать любые порты
- nohide — не скрывать поддиректории при, открытии доступа к нескольким директориям
- root_squash — подменять запросы от root на анонимные
- all_squash — превращать все запросы в анонимные
- anonuid и anongid — указывает uid и gid для анонимного пользователя.
Например, для нашей папки эта строка может выглядеть вот так:
Когда все было настроено, осталось обновить таблицу экспорта NFS:
Вот и все, открытие шары NFS в Ubuntu завершено. Теперь попытаемся настроем клиента и попытаемся ее примонтировать.
Подключение NFS
Мы не будем подробно останавливаться на этом вопросе в сегодняшней статье. Это довольно большая тема, заслуживающая отдельной статьи. Но пару слов я все же скажу. Чтобы подключить сетевую папку вам не нужен никакой nfs клиент ubuntu, достаточно использовать команду mount:
sudo mount 127.0.0.1:/var/nfs/ /mnt/
Теперь вы можете попытаться создать файл в подключенной директории:
Также мы посмотрите подключенные файловые системы с помощью df:
127.0.0.1:/var/nfs 30G 6,7G 22G 24% /mnt
Чтобы отключить эту файловую систему достаточно использовать стандартный umount:
Выводы
В этой статье была рассмотрена настройка NFS в Ubuntu 20.04, как видите, все делается очень просто и прозрачно. Подключение NFS шары выполняется в несколько кликов, с помощью стандартных команд, а открытие шары NFS ненамного сложнее подключения. Если у вас остались вопросы, пишите в комментариях!
Расшаривание папок в линуксе или настройка NFS.
Задача: Сделать общую папку доступную по сети между двумя компьютерами с linux. Проще говоря нам нужно расшарить папку на компьютере с linux чтобы мы могли видеть её по сети на другом компьютере с linux.
Компьютеры имеют адреса:
10.0.0.1 — Сервер (на нем физически находится папка с общим доступом) и
10.0.0.2 — Клиент с него будем осуществлять доступ.
Устанавливаем NFS на компьютер — сервер
- sudo aptitude install nfs-kernel-server nfs-common portmap
- Создаем папку в домашней директории пользователя к которой будем открывать доступ:
mkdir Share - Добавляем в файл /etc/exports строку:
/home/user/Share 10.0.0.0/255.255.255.0(rw,no_root_squash,async,subtree_check)
echo «/home/user/Share 10.0.0.0/255.255.255.0(rw,no_root_squash,async,subtree_check)» | sudo tee -a /etc/exports - Перезагружаем NFS сервер чтобы изменения вступили в силу:
sudo /etc/init.d/nfs-kernel-server restart
можно также использовать команду:
sudo exportfs -a
Настраиваем компьютер — клиент
- sudo aptitude install portmap nfs-common
- Создаем папку в которую будем монтировать сетевую папку компьютера — сервера
mkdir Share - Монтируем сетевую папку:
sudo mount 10.0.0.1:/home/user/Share Share
если нужно чтобы сетевая папка монтировалась автоматически, тогда добавляем в файл /etc/fstab строку: 10.0.0.1:/home/user/Share /home/user/Share nfs timeo=50,hard,intr
echo «10.0.0.1:/home/user/Share /home/user/Share nfs timeo=50,hard,intr» | sudo tee -a /etc/fstab
при загрузке и после обрыва связи сетевая папка будет монтироваться автоматически.
P.S. Если вы используете firewall, то вам потребуется открыть порты: 32771, 111 и 2049
Комментарии (79)
10.0.0.2 — IP адрес компьютера — клиента с которого будет осуществляться доступ. Можно заменить на * тогда папка будет доступна компьютерам с любым IP адресом.
А такой вариант:
192.168.*.* прокатит?
В смысле, нужно нескольким сегментам подсети возможность доступа оставить.
Не пробовал, но думаю что прокатит
А если нужно чтоб видели на компьютере с вендой?
При чём samba-то? Оснастка NFS есть для Win 2003 Server, для XP есть NFS-клиенты, правда почти все платные..
сама винда тоже платная
Акромя самбы — под венду можно поставить пакет для совместимости с NFS (unix. чего-то там, на их сайте нашел штуку, увестстая довольно-таки)
отлична статья и хорошо, что сказано — какое порты открывать, а то у нас был как-то параноик который не мог с сервера документы забирать как раз из-за этого(ладно админы добрые были)
на счет паранои, nfs это не безопасно. Юзать только в локалке стоит. или в шифрованном туннеле
Стоит заметить, что данный вариант с авто-монтированием работает с витой парой, в вай-фай такое не пойдёт, поскольку при загрузке, а именно в момент чтения fstab беспроводная сеть отключена и подключается гораздо позже(уже в DE), поэтому пришлось делать скрипт и запускать по щелчку на иконку.
P.S. Если вы используете firewall, то вам потребуется открыть порты: 32771, 111 и 2049
порт 32771 выбран случайным образом (механизм NFS)
Как настроить фаервол читайте, напрмер, здесь
при загрузке и после обрыва связи сетевая папка будет монтироваться автоматически.
если при загрузке не было сети, смонтрирует ли после того как сеть появится?
Нет, так как инфа читается из fstab и монтирование выполняется при старте системы.
Возможно стоит попробовать после появления сети выполнить команду mount -a.
Вот такая же проблема, только там отсутствие сети связано с wifi.
Спасибо за статью. Только вот монтирование происходит до установления соединения, что делает длительную паузу при загрузке. Можно ли как-нибудь указать, чтобы монтирование происходило только при поднятом определенном интерфейсе?
Мда..в винде попроще шарить папки!
Скажите мне почему не работает такая опция в кубунту?
Захожу в свою /Home/virus, нажимаю правой кнопкой на папке Docs>Свойства>Сделать общим
На приглашение ввести пароль рута — ввожу! Нажимаю ОК. И что дальше? никаких изменений не вижу.
Папка теперь расшарена как НФС ресурс?или САМБА? С другой машины шары не видно!
И еще. Почему не меняется значок папки? если расшаривать через smb.conf, то значок меняется.
хотел бы я всё это попробовать, да только у меня и так всё почему-то работает. Ubuntu видит шары винды (без mount). Винда видит шары Ubuntu — сразу с загрузки последней. Настраивал в графики, окно настройки попросило закачать покеты samba. И всё.
У меня не просит установить сервер самбы. После sudo apt-get install samba ситуация не изменяется.
На двух компьютерах пробовал уже. И до и после обновлений папка не шарится. Kubuntu 8.10.
Может я какую-то элементарную вещь не делаю? Может пользователя в какую-то доп.группу надо внести?
Попробуй расшарить папку с НЕ русским названием.
к сожалению не помогло
sudo apt-get install kdenetwork-filesharing и перезапустись.
О спаситель . Спасибо большое! А то уж я совсем расстроился! Система по умолчанию ставится с пунктом ОБЩИЕ ФАЙЛЫ, а он не работает! Кстати этот косяк не убрался и вплоть до 9.10.
Сейчас все ОК.
не помогло. Жму кнопку, появляется диалог ввода пароля, ввожу. И . ничего не происходит.
UPD: заработало! просто долго запускалось. Но все равно неудобно как-то. Я уже выбрал папку для расшаривания, заперся в свойства, нажал кнопку. И потом опять надо жать add и выбирать папку.
Не забудьте про это:
чтобы можно было шарить для винды необходимо установить samba (по умолчанию в кубунте стоит только клиент для подключения к таким шарам)
чтобы можно было шарить NFS — установить nfs-kernel-server (по умолчанию тоже стоит только клиент)
всё шариться нормально, просто сам процесс не отлажен.
Такая же проблема. Выйдет 9.04 поставлю и никаких больше unsupported updates.
у меня такая ерунда и в 8.10 и в 9.04 alpha*
upd:так же и в 9.04 beta*
upd:так же и в 9.04 🙁
upd:так же и в 9.10 🙁
Извините за вопрос чайника.
Кто-нибудь использовал sshfs ?? Это тоже, что и NFS или ssh + NFS
Уважаемый dm!
По вышеприведённой Вами инструкции можно ли использовать sshfs ?
Руслан
Мне доводилось использовать sshfs. sshfs совсем не nfs, поэтому работает она иначе и инструкция от уважаемого dm к sshfs не применима. Заранее создаем каталог к которому будем монтировать удаленную файловую систему.
http://ru.wikipedia.org/wiki/SSHFS
У меня код типа sudo sshfs [email protected]:/XCopy/ /mnt/remote_folder/ Если все хорошо, то работать становится очень удобно 😉 Вот ещё одна прекрасная статейка: Хитрости ssh
Спасибо за подробное объяснение!А может кто-нибудь подсказать как быть с такой проблемой — есть домашний сервак, на нём рторент, для забора скачанного на ноут примонтировал нфс, но скорость копирования около 1Мб/С, т.е. даже чуть меньше чем просто скачка с инета у меня!У обоих компов внешние ip, т.е. такое впечатление что трафик гонится через как минимум шлюз провайдера. Можно ли это обойти както?
Если у тебя шлюзом указаан шлюз провайдера, то действительно трафик идёт через этот узел. Для того, чтобы трафик ходил локально надо настроить локальную сеть.
Эээ..)Ну это то в общем ясно, вопрос в том как это сделать!)На ноуте и на серваке по одной сетевухе ведь!То же и CS касается — есть ещё одна десктопная машина, тоже с внешним ip — пров выделяет до 3 адресов на один договор — вот и выхоит игра через инет а не по локалке!Все компы воткнуты в свич в квартире, в него же инет вхоит. Тут наверно без роутера никак, чтоб пакетзавернутьна на локаль..
Можно настроить роутер на одной из локальных машин, а остальным скормить локальный адрес в качестве шлюза. Тогда весь трафик будет идти через эту машину. Или купить железный роутер.
Да так раньше и было, всё через сервер, надеялся со сменой прова и появлением внешних айпи на каждую тачку уйду от этой проблемы, а этой хрени со шлюзом то и не учёл)
Если ваши машины с белыми IP общаются с провом через свич — это очень хорошо и дополнительная железка нужна только в плане безопасности. Чтобы никто не лез извне.
Шлюз по умолчанию используется только если в таблице маршрутизации не найден более удачный маршрут. Попробуйте так route add -net 192.57.66.0 netmask 255.255.255.0 dev eth0
Здравствуйте! Сделал всё как написано, но к серверу подключиться не удается, ошибка: «Ошибка доступа, авторизация 192.168.0.1 не поддерживается». На самом сервере расшаренная папка обозначается значком (что, мол, расшарено). Куда дальше глядеть? Где этот доступ разрешать?
Сервер: Kubuntu 8.10, KDE 4.1
Клиент: Debian 5.01, KDE 3.5
Компьютеры пингуются, VNC от Клиента к Серверу работает (немного странно, но все же работает)
3. Убедитесь в том, что процесс /etc/mountd запущен. Он за-
пускается из файла загрузки NFS, имеющего имя /etc/nfs.
У меня нет /etc/nfs и /etc/mountd видемо не запущен
(rw,no_root_squash,async,subtree_check)»
rw — это же значит расшарить на чтение и запись? У меня почемуто не дает записывать с клиента.
subtree_check — что это? такой ответ это он ругается или так и надо?
exportfs: No options for /home/vap/Media 10.106.146.2/255.255.255.0: suggest 10.106.146.2/255.255.255.0(sync) to avoid warning
exportfs: /etc/exports [3]: Neither ‘subtree_check’ or ‘no_subtree_check’ specified for export «10.106.146.2/255.255.255.0:/home/vap/Media».
Assuming default behaviour (‘no_subtree_check’).
NOTE: this default has changed since nfs-utils version 1.0.x
exportfs: No host name given with /home/vap/Media (rw,no_root_squash,async,subtree_check), suggest *(rw,no_root_squash,async,subtree_check) to avoid warning
exportfs: No options for /home/vap/QT 10.106.146.2/255.255.255.0: suggest 10.106.146.2/255.255.255.0(sync) to avoid warning