Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  mount_nullfs
  badsect
  clri
  bsdlabel
  dump (rdump)
  dumpfs
  ffsinfo
  fsirand
  mount_nfs
  mount_smbfs
  swapon
  tunefs
  umount
  recovery files
  growfs
  Pax
  clonehdd
  Мониторинг RAID
  gstripe
  fusefs-ntfs
  UFS->ZFS
  RAID5
  freebsd lvm
  root ZFS, GPT
  FreeBSD on flash
  Восстановление ZFS
  Лечим FFS
  gmirror
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Файловая система —> mount_nfs

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

Автор: lissyara.


    Количество серверов выросло - начал задумываться об автоматизации отдельных телодвижений и о дублировании. Конкретно - обновление портов и прочее. Четыре сервера стоят в локалке, на всех 4-х хранится дерево портов и куча дистрибутивов. После обновления на всех 4-х самбы, кламава и ещё чего-то немелкого задумался - всё это обошлось в сотню мегабайт траффика, а можно было сделать вчетверо меньше - если руками всё перетаскивать с одного на другой. Но - руками не хотелось :))) Подумавши, вспомнил про NFS - ибо сеть локальная - т.е. трафик бесплатен, скорость сто мегабит -  местами вообще гигабит. Сойдёт. Решил привернуть на совсем локальную машину - один из серверов занимается архивацией, работает полсуток, и то по ночам. LAN на нём гигабитный (правда на остальных сотка - но это уже мелочи :)) - вообще прекрасно. Тема в хандбуке оказалась хорошо окучена, так что делаем всё по хандбуку. (Кстати, там как вариант применения NFS - расшаривание директории /usr/ports/distfiles, хотя я слышал про использование её на WWW-серверах, когда собран кластер - для расшаривания директории с контентом, но сам такого не пробовал, потому не утверждаю)
   На сервере (на котором и будем расшаривать директорию с деревом портов) в /etc/rc.conf заносим такие строки:
# NFS
# удалённый вызов процедур - необходим для фунциклирования NFS
rpcbind_enable="YES"
# запуск nfsd
nfs_server_enable="YES"
# флаги для nfsd:
# "-u" - используем тока протокол UDP - причина - это не инет, потери пакетов
# весьма малы, а по ресурсоёмкости UDP выгодней. TCP - весьма `дорогой`
# протокол, требует больше ресурсов
# "-t" - использовать протокол TCP (можно использовать и TCP и UDP одновременно
# - выбор, в конечном итоге, за клиентом)
# "-n 5" - максимальное число одновременно подключенных клиентов
# "-h 192.168.20.251" - работать на одном адресе (интерфейсе). Если не указано -
# работате на всех. Может быть указана неоднократно. У меня на этой машине
# всего один интерфейс (не считая lo0 :)) потому её наличие бессмысленно.
nfs_server_flags="-u -n 5"
# демон монтированя - принимает подключения от клиентов. Запускается
# автоматически при опции nfs_server_enable="YES". Ключи:
# "-r" - для обслуживания файлов а не тока каталогов (если я правильно понимаю
# значение - то можно расшарить файл, а не каталог. Может для кого-то и имеет
# смысл...)
# "-l" - регистрация всх запросов на монтирование
# "-n" - для возможности монтированя из-под винды (вернее, никсовую
# шару на форточки)
mountd_flags="-r"

После чего я собрался было править файл /etc/exports - но его не оказалось. Кстати, если его не существует, то nfsd и mountd не запускаются. Ну да ладно, сделал сам - из двух строк:
# То, что расшариваем по NFS
/usr/ports -maproot=root -network 192.168 -mask 255.255.0.0

В данном случае я расшарил каталог /usr/ports для всей частной сети (192.168.0.0/16 - или 192.168.0.0/255.255.0.0 - ибо локалочка-то немаленькая), и дал в нём права root`a для всех root`ов с удалённых машин. Причём можно было это сделать для любого удалённого пользователя - хоть для nobody :)
После чего перезагружаем сервер, и после перезагрузки (в принципе, можно всё находу запустить руками - но в данном случае это некритичная машина и я предпочёл перезагрузиться. Если хотите находу - идите повышеприведённой ссылочке на хандбук) смотрим:
/usr/home/lissyara/>ps -axj | grep nfsd
root       382     1   382   382    0 Is    ??    0:00,01 nfsd: master (nfsd)
root       384   382   382   382    0 I     ??    0:00,00 nfsd: server (nfsd)
lissyara  8450   628  8449   628    2 R+    p0    0:00,00 grep nfsd
/usr/home/lissyara/>
/usr/home/lissyara/>ps -axj | grep mountd
root       380     1   380   380    0 Is    ??    0:00,00 /usr/sbin/mountd -r
lissyara  8762   628  8761   628    2 R+    p0    0:00,00 grep mountd
/usr/home/lissyara/>

Ну а затем, на клиентских машинах прописываем такие строки в /etc/rc.conf:
# Эта опция в-общем-то и не нужна, всё прекрасно монтируется и без неё,
# но с ней подрубается демон nfsiod, позволяющий проводить чтение-запись
# асинхронно, не дожидаясь окончания предыдущей операции.
nfs_client_enable="YES"
# скока демонов запускать (по одному на примонтированный ресурс)
nfs_client_flags="-n 1"

И пробуем подмонтровать (в хандбуке советуют на клиентах выполнить команду nfsiod -n 4, но у меня и без неё заработало, но, вероятно, оно работало несколько медленней :)))):
/usr/home/lissyara/>mount_nfs 192.168.20.251:/usr/ports /usr/ports
/usr/home/lissyara/>df -h
Filesystem                 Size   Used  Avail Capacity  Mounted on
/dev/ad0s1a                126M    43M    72M    37%    /
/dev/ad0s1h                 85G    65G    14G    83%    /smb
/dev/ad0s1e                756M    15M   681M     2%    /tmp
/dev/ad0s1g                 16G   4.8G   9.7G    33%    /usr
/dev/ad0s1f                7.9G   2.1G   5.1G    29%    /var
procfs                     4.0K   4.0K     0B   100%    /proc
192.168.20.251:/usr/ports    24G    12G   9.9G    56%    /usr/ports
/usr/home/lissyara/>

Всё работает. Строку эту я поместил в такой скрипт:
/usr/local/etc/rc.d/>cat /usr/local/etc/rc.d/mount_nfs.sh
#!/bin/sh

# Скрипт монтирования портов по NFS
case "$1" in
        start)
                /sbin/mount_nfs -i 192.168.20.251:/usr/ports /usr/ports
                echo "/usr/ports mounted"
                ;;
        stop)
                /sbin/umount /usr/ports
                ;;
        *)
                echo ""
                echo "Usage: `basename $0` { start | stop }"
                echo ""
                exit 64
                ;;
esac
/usr/local/etc/rc.d/>

В принципе (и наверно даже более правильно) можно добавить в /etc/fstab такую строчку:
192.168.20.251:/usr/ports   /usr/ports   nfs    rw,-b,-i   0   0

Опция -b нужна для того, чтобы в случае, если не удастся примонтировать ФС сразу, продолжать попытки сделать, а не ждать. Иначе комп может вообще не загрузиться, так и остановившись на этом моменте (у NFS неприлично большой таймаут), а -i нужна чтобы при пропадании удалённого компа из сети не зависнуть по команде ls, например, выполненной на сетевой файловой системе. При её наличии можно будет первать команду с помощью Ctrl+C, иначе - никак :))
Ну, вот и всё. Конечно, по сети оно работает несколько медленней, чем с локальной машиной. Также есть и недостатки - если один клиент что-то собирает то другому лучше это же не делать :) Ничем хорошим не кончится :)))
P.S. Не забудте удалить содержимое /usr/ports на локальной машине - иначе место не освободится. Хотя - я, например, удалил тока distfiles - остальное оставил. На всякий случай. :)))
P.S.2 - бывают проблемы с блокировкой, при сборке чего-либо из портов, тогда надо монтировать с ключиком -L, и всё будет нормально. Как вариант - перенос рабочей директории в локальную ФС (WRKDIRPREFIX=/tmp/port_wrk в файл make.conf)



размещено: 2006-04-16,
последнее обновление: 2006-05-29,
автор: lissyara

оценить статью:

northern, 2006-04-16 в 11:55:10

Статья классная, а главное вовремя:) Тоже несеолько фрях и канал к тому же слабый. Два момента:
1. Фряхи должны быть одной версии?
2.  Цитата: "Не забудте удалить содержимое /usr/ports на локальной машине" -  это на клиентах?

lissyara, 2006-04-16 в 18:45:19

1. У меня 4.11 и 6.0. Честно - на знаю насколько это корректно и правильно, но уже успел поработать со всеми - глюков не было. Обновлял по настроению - то с одной то с другой...
2. Угадай с двух раз :)))

northern, 2006-04-16 в 19:02:20

я-то угадаю:)) Но фраза:"локальной машине" упоминается и в начале статьи. Я к тому, что многие начинающию сначала делают, потом думают.

eugen, 2006-04-22 в 2:14:09

вообсче честно говоря как то после прочтения "передёрнуло", никак не могу отойти от прошлых зависаний, посему предложение - ISCI :) пока удалось поднять на линуке но инициатор есть и на free сам пока под фрей не рыл но должно работать

iSa, 2008-07-06 в 17:25:33

Для тех у кого валиться при чтении файлов больше ~1,5кб:
192.168.20.251:/usr/ports   /usr/ports   nfs    rw,-b,-i,-r=1024,-w=1024   0   0
в опциях монтирования. Связано с некорректной обработкой разделенных пакетов некоторыми сетевухами. Сам столкнулся на VPN'ке.
PS Хотя это есть в Handbook'е... если приглядеться ;)

princeps, 2008-07-16 в 11:27:13

Как только что случайно узнал, самба не собирается по nfs, так что для нее WRKDIRPREFIX=/tmp/port_wrk в файле make.conf - обязательно. Чертова винда, все что с ней связано, работает через зад.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 13 чел.
За последние 30 мин было: 75 человек
За сегодня было
222 показов,
70 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0412 секунд
Из них PHP: 30%; SQL: 70%; Число SQL-запросов: 77 шт.
Исходный размер: 107022; Сжатая: 21186