2 Опис протоколу NFS при монтуванні віддаленого каталогу
. На сервері і клієнті запускається RPC сервер (зазвичай при завантаженні), обслуговуванням якого займається процес portmapper і реєструється на порту tcp/111 і udp/111.
. Запускаються сервіси (rpc.nfsd, rpc.statd та ін.), Які реєструються на RPC сервері і реєструються на довільних мережевих портах (якщо в настройках сервісу не заданий статичний порт).
. Команда mount на комп'ютері клієнта відправляє ядру запит на монтування мережевого каталогу із зазначенням типу файлової системи, хоста і власне - каталогу, ядро ??відправляє формує RPC-запит процесу portmap на NFS сервері на порт udp/111 (якщо на клієнті не задана опція працювати через tcp )
. Ядро сервера NFS опитує RPC про наявність демона rpc.mountd і повертає ядру клієнта мережевий порт, на якому працює демон.
. mount відправляє RPC запит на порт, на якому працює rpc.mountd. Тепер NFS сервер може перевірити достовірність клієнта грунтуючись на його IP адресу та номер порту, щоб переконатися, чи можна цьому клієнту змонтувати зазначену файлову систему.
. Демон монтування повертає опис запитаної файлової системи.
. Команда mount клієнта видає системний виклик mount, щоб зв'язати описувач файлу, отриманий в кроці 5, з локальною точкою монтування на хості клієнта. Описувач файлу зберігається в коді NFS клієнта, і з цього моменту будь-яке звернення користувача процесів до файлів на файловій системі сервера буде використовувати описувач файлу як стартову точку.
3.3 Обмін даними між клієнтом і сервером NFS
Типовий доступ до віддаленої файлової системи можна описати наступною схемою
3.4 Опис процесу обігу до файлу, розташованому на сервері NFS
Клієнту (користувача процесу) байдуже, чи отримує він доступ до локального файла або до NFS файлу. Ядро займається взаємодією з залізом через модулі ядра або вбудовані системні виклики.
Модуль ядра kernel/fs/nfs/nfs.ko, який виконує функції NFS клієнта, відправляє RPC запити NFS сервера через модуль TCP/IP. NFS зазвичай використовує UDP, однак більш нові реалізації можуть використовувати TCP.сервер отримує запити від клієнта у вигляді UDP датаграм на порт 2049. Незважаючи на те, що NFS може працювати з перетворювачем портів, що дозволяє серверу використовувати динамічно призначення портів, UDP порт +2049 жорстко закріплений за NFS в більшості реалізацій.
Коли NFS сервер отримує запит від клієнта, він передається локальної підпрограмі доступу до файлу, яка забезпечує доступ до локальному диску на сервері.
Результат звернення диску повертається клієнтові.
. 5 Налаштування сервера NFS
Налаштування сервера в цілому полягає в завданні локальних каталогів, дозволених для монтування віддаленими системами у файлі/etc/exports. Ця дія називається експорт ієрархії каталогів. Основними джерелами інформації про експортованих каталогах служать наступні файли:
·/etc/exports - основний конфігураційний файл, що зберігає в собі конфігурацію експортованих каталогов. Використовується при запуску NFS і утилітою exportfs.
·/var/lib/nfs/xtab - містить список каталогів, монтованих віддаленими клієнтами. Використовується демоном rpc.mountd, коли клієнт намагається змонтувати ієрархію (створюється запис про монтування).
·/var/lib/nfs/etab - список каталогів, які можуть бути змонтовані віддаленими системами із зазначенням всіх параметрів експортованих каталогів.
·/var/lib/nfs/rmtab - список каталогів, котрі не разекспортіровани в даний момент.
·/proc/fs/nfsd - спеціальна файлова система (ядро 2.6) для управління NFS сервером.
- exports - список активних експортованих ієрархій і клієнтів, яким їх експортували, а також параметри. Ядро отримує дану інформацію з/var/lib/nfs/xtab.
threads - містить число потоків (також можна змінювати)
за допомогою filehandle можна отримати покажчик на файл
·/proc/net/rpc - містить сиру (raw) статистику, яку можна отримати за допомогою nfsstat, а також різні кеши.
·/var/run/portmap_mapping - інформація про зареєстровані в RPC сервісах
3.6 Налаштування файлу/etc/exports
У найпростішому випадку, файл/etc/exports є єдиним файлом, що вимагає редагування для налаштування NFS-сервера. Даний файл управляє наступними аспектами: