четверг, 8 марта 2007 г.

Установка и настройка NFS сервера и NFS клиента в [K]Ubuntu.

Network File System (NFS) — это сетевая файловая система, позволяющая пользователям обращаться к файлам и каталогам, расположенным на удалённых компьютерах, как если бы эти файлы и каталоги были локальными. Главным преимуществом такой системы является то, что отдельно взятые рабочие станции могут использовать меньше собственного дискового пространства, так как совместно используемые данные хранятся на отдельной машине и доступны для других машин в сети. NFS - это клиент-серверное приложение. Т.е. в системе пользователя должен быть установлен NFS-клиент, а на компьютерах, которые предоставляют свое дисковое пространство - NFS-сервер. Здесь я хочу показать, как просто установить и настроить эти программы в [K]Ubuntu Linux. (Вся информация рассчитана для новичка в Linux. Если вы имели опыт установки NFS в Linux - ничего нового, вероятно, вы здесь не найдете. Целью статьи является, показать как легко это может быть реализовано.)

Установка и настройка NFS-сервера.

Устанавливаем NFS-сервер:

$sudo apt-get install nfs-kernel-server nfs-common portmap

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

$sudo vi /etc/exports

В приведенном ниже примере я выделил директорию /data (директория с данными на сервере) в совместное пользование всем компьютерам с IP - 192.168.1.1 - 192.168.1.255 с правами чтения и записи:

/data 192.168.1.1/24(rw,no_root_squash,async)

Или еще пример:

/home/serhiy/ 192.168.1.34(ro,async)

домашняя директория пользователя serhiy стала доступной в режиме только чтение для компьютера с IP 192.168.1.34. Все остальные компьютеры сети к этому разделу доступа не имеют.

Опции:
ro - права только на чтение. Можно и не указывать, так как она установлена по умолчанию.
rw - дает клиентам право на запись.
no_root_squash - по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать.
noaccess - запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.
О других опция можно почитать здесь.

Теперь нужно перезапустить nfs-kernel-server:

$sudo /etc/init.d/nfs-kernel-server restart

Если после этого вы захотите поменять что-нибудь в файле /etc/exports, то для того, чтобы изменения вступили в силу, достаточно запустить следующую команду:

$sudo exportfs -a

Все. NFS-сервер установлен и настроен. Можно переходить к настройке NFS клиента.

Установка и настройка NFS-клиента.

Установка:

$sudo apt-get install portmap nfs-common

Монтирование:

Создаем точку монтирования. Допустим, это будет папка в вашей домашней директории с названием data:

$cd ~
$mkdir data

Монтировать можно двумя способами - каждый раз вручную или прописав опции монтирования в файл /etc/fstab. Мне больше нравится второй способ:

$sudo vi /etc/fstab

и в конце дописываем следующую строку:

192.168.1.1:/data ~/data nfs rw,hard,intr 0 0

Вместо 192.168.1.1:/data впишите IP или имя сервера и путь к директории совместного пользования.
Опции монтирования можно изменить.

Записав и сохранив изменения, можно монтировать:

$sudo mount ~/data

Если все прошло успешно, то набрав в терминале

$cd ~/data
$ls

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

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

27 коммент.:

Igor комментирует...

А в Ubuntu hosts.allow настраивать не надо?!
А в Ubuntu надо запускать только один демон? Или просто тема запуска portmap не раскрыта? :)

serhiy комментирует...

В простейшем случае (как описано здесь) hosts.allow настраивать не обязательно. Будет работать и без этого. В случае же настроек с большей защитой, все немного усложняется. Да и вообще, тогда нужно рассматривать и тунелирование NFS через SSH...
В Ubuntu все просто. Запускаешь один демон, а он уже запустит все что надо.

Denis Dzyubenko комментирует...

пользуюсь nfs-kernel-server еще с potato,
после обновления до Etch nfs-kernel-server при старте стал писать предупреждения о том что не указаны опции subtree_check или no_subtree_check - рекомендуется указать первую из них - она активирует дополнительные проверки наличия файла по переданному file handle.

и еще, при монтировании nfs-раздела лучше указать soft-монтирование (опция 'soft' вместо 'hard') - при этом linux не будет так сильно ругаться если nfs-сервер пропадет (например при проблемах с сетью) и позволит отмонтировать его.

serhiy комментирует...

Спасибо. Следуя Вашему совету изменил на 'soft'. Нужно будет лучше разобраться со всеми этими опциями.

Igor комментирует...

Как всё в Ubuntu странно... У меня поскольку в /etc/hosts.deny стоит ALL:ALL, то в allow надо всё-таки отметить IP клиента...
А вот разработчики NFS советуют как раз hard mount... И опцию intr к ней.
Вот оригинальный howto
http://nfs.sourceforge.net/nfs-howto/
А вчера как раз я писал статью в ArchWiki:
http://wiki.archlinux.org/index.php/Nfs_(Russian)

serhiy комментирует...

ALL:ALL стоял по умолчанию? У меня по умолчанию все закомментировано. Поэтому, думаю ничего прописывать не нужно.

Вообще у меня на NFS сервере всетаки файлы не пустые. Я туда добавил в
hosts.deny

portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
nfs:ALL

hosts.allow:

portmap: 10.52.11.*
lockd: 10.52.11.*
mountd: 10.52.11.*
rquotad: 10.52.11.*
statd: 10.52.11.*

Но я не захотел добавлять эту информацию в статью. Если честно, то в моем случае (когда сеть за семью замками с закрытым доступом извне почти ко всему) я думаю это даже не нужно.

Garfeild комментирует...

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

serhiy комментирует...

Честно сказать - не знаю. Никогда даже не думал об этом. А зачем?

Garfeild комментирует...
Этот комментарий был удален автором.
Garfeild комментирует...

Дело в том, что мой десктоп приходиться делить с Windows и моим братом младшим, который упорно не хочет менять среду обитания. В мои до "линуксовые" времена был выделен больший раздел в NTFS для хранения всего, начиная от музыки и заканчивая видео и фото.
Недавно приобрел laptop и захотелось иметь доступ к папкам с музыкой. Но с помощью NFS они не монтируются, пишет что не удалось смонтировать по следующей причине: failed, reason given by server: Permission denied.
Потыкав настройки на десктопе и на ноутбуке пришел к выводу, что это из-за того, что хозяином раздела является root.
UPD: домашнюю папку рута спокойно монтирует :/

serhiy комментирует...

Ага. Ну так бы сразу и сказали, раздел то NTFS, вот в нем то и проблема. С чего вы взяли, что виндовс раздел можно примонтировать по NFS? По моему нельзя. Советую воспользоваться Samba.
P.S. рут разделы оказывается можно монтировать, люди монтируют всю корневую систему /.

Garfeild комментирует...

Разделы NTFS монитруются в режим read-only. И только с теми драйверами, которые идут по умолчанию.
До этого, я монтировал раздел, который на сервере монтировался с помощью ntfs-3g для записи на него.

serhiy комментирует...

До этого, я монтировал раздел, который на сервере монтировался с помощью ntfs-3g для записи на него.
Монтировали через NFS или на локальном компьютере?

Garfeild комментирует...

на десктопе (сервере так сказать) раздел ntfs монтируется с помощью ntfs-3g, а потом через NFS я монтирую его на ноутбуке и получаю ошибку, о том, что Permission denied.
Если же использовать ntfs драйвер, который идет в системе изначально, то все хорошо монтируется на ноутбуке в режиме read-only

serhiy комментирует...

Если я Вас правильно понял, то в режиме read only вы всетаки примонтировали ntfs раздел через nfs, а если с драйвером ntfs-3g - выдает ошибку. Вообще странно. Я специально поискал в инете и нашел только то что ntfs разделы по nfs монтироваться вообще не могут. Так что я думаю режим read only это уже хорошо. А как сделать так, чтобы еще и писать можно было, я не знаю :(. Если решите эту задачу, напишите пожалуйста, интересно бы было посмотреть.

Garfeild комментирует...

Почитав readme к ntfs-3g я так же узнал, что можно монитровать разделы ntfs с помощью nfs на удаленном компе, но для этого нужно пересобирать ядро, что мне очень лениво делать :)
а по поводу ntfs в режиме ro я прочитал тут

serhiy комментирует...

Спасибо. Теперь немного разобрался. Нужно еще будет почитать readme к ntfs-3g.

Unknown комментирует...

а у меня вот постоянно это вылезает при попытке загрузить станцию

ADDRCONF(NETDEV_UP):eth0: link is not ready

IP-Config: Complete:
device=eth0, addr=192.168.19.90, mask=255.255.255.0, gw=192.168.19.1,
host=www, domain=, nis-domain=aha.com,

bootserver=192.168.19.17, rootserver=192.168.19.17, rootpath=

Looking up port of RPC 100003/2 on 192.168.19.17
portmap:server 192.168.19.17 not responding, time out
Root-NFS:Unable to get nfsd port number from server, using default

Looking up port of RPC 100005/1 on 192.168.19.17
portmap:server 192.168.19.17 not responding, time out
Root-NFS: unable to get mountd port number from server, using default
mount: server 192.168.19.17 not responding , time out
Root-NFS: server returned error -5 while mounting /boot_from_net/net_root
VFS: Unable to mount root fs via NFS, trying floppy


...Не в курсе в чем проблема??

За ранее спасибо=)

Анонимный комментирует...

Спасибо. Очень доступно написано.

Если не трудно, в чём, всё таки смысл опции "no_root_squash". я правильно понял, что если из сети получить доступ к этому каталогу - права будут как у root'a на сервере?

calibra комментирует...

Это энциклопедия, сборник рефератов.

Анонимный комментирует...

href="http://libedu.ru" title="Скачать книги"> Электронные учебники - книги, скачать бесплатно

Online photoshop комментирует...

Create every day new photo effects,sketches, avatars.

hosting kniga комментирует...

свободный хостинг http://hosting.miheeff.ru хостинг свободный хостинг

Viagra Online комментирует...

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

Анонимный комментирует...

Aside from Microsoft and Nintendo, another top competitor, Sony,
will also be releasing some top-rated games for its own console - the
Playstation. Even recommended system specs had difficulties coping with
the games demands on first launch when flying over
the more substantial town locations. The End of Military Flight Sim Pro
With this program you can take advantage of the military
aspects of the game, landing and takeoff of an airplane
taking includes carrier. If you are running your simulator for commercial purpose and there are people playing with their own
golf clubs, ask them to wipe their clubs with a wet clean piece cloth.
If you want to manage your own virtual airline then you need to visit the main Sim -
Miles website and complete a virtual airline application form.

Анонимный комментирует...

Everyone who is into style depends on a great stylist to
look good and help with hair issues and problems. Before you go for them,
try products at Keranique for hair care. The professional hair merchandise of Loreal are effectively currently being sold all more than the world in about one hundred thirty different countries.


My web site - hair products

Анонимный комментирует...

Отличная статья. Настраивал по этой http://sysadmin.te.ua/linux/nfs-configuration.html там добавили для Windows поддержку.