|
|
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
|
|
|
|
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 и способов аутентификации.
|
Комментарии пользователей [6 шт.]