Сетевая файловая система NFS

Что такое NFS

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

Это также дает возможность нежелательным людям получить доступ к вашему жесткому диску по сети (и, таким образом, возможно, прочитать вашу электронную почту и удалить все ваши файлы, а также взломать вашу систему), если вы настроили его неправильно. Поэтому внимательно прочитайте Раздел 6, «Безопасность и NFS» данного документа, если вы собираетесь реализовать настройку NFS.

Существуют и другие системы, предоставляющие функции, аналогичные NFS.

Samba (http://www.samba.org) предоставляет файловые службы клиентам Windows.

Файловая система Andrew, первоначально разработанная IBM (http://www.openafs.org) и теперь имеющая открытый исходный код, предоставляет механизм обмена файлами с некоторыми дополнительными функциями безопасности и производительности.

Файловая система Coda (http://www.coda.cs.cmu.edu/) сочетает общий доступ к файлам с особым вниманием к отключенным клиентам. Многие функции файловых систем Andrew и Coda планируется включить в следующую версию NFS (версия 4) (http://www.nfsv4.org) .

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

Отличие NFS от других сетевых файловых систем

У NFS есть существенное отличие от других систем: при монтировании не требуется указывать пароль, а авторизация осуществляется по IP-адресу и идентификаторам пользователя и группы (UID/GID). Достоинством такого подхода является то, что монтирование по NFS может быть осуществлено без участия пользователя -- например, при загрузке системы. Недостатком является невысокий уровень security -- отсюда шутливая расшифровка аббревиатуры NFS как "No File Security".

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

Для правильной работы NFS с правами доступа к файлам требуется, чтобы UID и GID пользователей на обоих компьютерах совпадали.

Требования к программному обеспечению: версия ядра и nfs-utils

Различия между NFS версии 2, NFS версии 3 и NFS версии 4 будут объяснены позже; на данный момент вы можете просто принять предложение о том, что вам понадобится NFS версии 3, если вы устанавливаете выделенный файловый сервер большого объема или производственный файловый сервер. NFS версии 2 или 4 должны подойти для повседневного использования.

NFS версии 2 существует уже довольно давно (по крайней мере, начиная с серии ядер 1.2), однако вам потребуется версия ядра не ниже 2.2.18, если вы хотите выполнить любое из следующих действий:

  • Объединить Linux NFS с NFS других операционных систем

  • Использовать блокировку файлов через NFS

  • Использовать NFS версии 3

Для работы версии 3 также потребуется пакет nfs-utils не ниже версии 0.1.6 и монтирование версии 2.10m или новее. Однако, поскольку nfs-utils и mount полностью обратно совместимы, а более новые версии имеют множество исправлений безопасности и ошибок, нет веских причин не устанавливать новейшие пакеты nfs-utils и mount, если вы начинаете настройку NFS.

Все ядра версии 2.4 и выше обладают полной функциональностью NFS версии 3. Все ядра 2.6 и выше имеют разные уровни функциональности NFS версии 4. Это будет обсуждаться более подробно позже.

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

Для обработки файлов размером более 2 ГБ потребуется ядро ​​версии 2.4x или выше и glibc версии 2.2.x или выше.

Все ядра после 2.2.18 поддерживают NFS через TCP на стороне клиента. NFS на стороне сервера через TCP существует только в виде ошибок в качестве экспериментального варианта в серии после 2.2.18; патчи для ядер 2.4 и 2.5 были введены начиная с 2.4.17 и 2.5.6. Использование TCP в NFS в настоящее время является основным и получает широкое распространение.

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

На момент написания этого документа поддержка NFS версии 4 находилась в стадии активной разработки в ядре 2.6.x. Его реализация все еще очень подвижна и меняется, поэтому его не рекомендуется использовать в производственной среде. Конфигурация NFS версии 4 и связанные с ней интегрированные технологии обсуждаются далее в этом документе.

Last updated