Страница 1 из 1

NFS и установка мира

Добавлено: 2018-05-21 17:01:53
GiftWind
Всем привет!

Мой вопрос про NFS.

Есть несколько машин в сети под управлением FreeBSD 11. Для обновления организована схема:
одна машина выступает в роли NFS-сервера. На ней всегда свежие версии исходников, собирается мир и ядро.
На остальных машинах /usr/obj/ /usr/src/ /usr/ports/ монтируются по NFS.

После установки мира на одном nfs-клиенте необходимо пересобирать мир на nfs-сервере,
чтобы успешно повторить установку мира на следующем nfs-клиенте и так каждый раз.

Проверили, что меняется.

До установки мира на nfs-клиенте выполняем:

Код: Выделить всё

# find /usr/obj -exec md5 {} \; > /tmp/obj_before.txt
После установки:

Код: Выделить всё

# find /usr/obj -exec md5 {} \; > /tmp/obj_after.txt
Далее сравниваем результат

Код: Выделить всё

diff /tmp/obj_before.txt /tmp/obj_after.txt
В результате получаем длинный список файлов, дайджесты которых отличаются.

Что в данном случае можно предпринять,чтобы не пересобирать мир каждый раз?

С установкой ядра таких проблем не наблюдается.
Пробовали экспортировать файловые системы по nfs с параметром только для чтения, в таком случае установка мира оказывается невозможной.

NFS и установка мира

Добавлено: 2018-05-21 22:09:59
guest
Давно уже не использую Master NFS сервер для сборок, однако не сталкивался
с тем о чем Вы пишите:

1) https://www.freebsd.org/doc/handbook/up ... ading.html
и далее про master nfs сервер:
https://www.freebsd.org/doc/handbook/small-lan.html

или лучше

2) # man development

соответственно nfs настраивается RO и на nfs клиентах, выполняется
только: make installkernel & install world (что-то помню колдовал с mergemaster)

в принципе, при сборке на одном и том же сервере, бинарники могут быть одинаковыми,
но совсем, не обязательно:
https://wiki.freebsd.org/ReproducibleBuilds

NFS и установка мира

Добавлено: 2018-05-22 11:48:21
GiftWind
Вопрос удалось решить, спасибо.
На случай, если кому-то интересно в чём было дело и/или окажется полезным решение этой проблемы, пишу, что было неправильно сконфигурировано.

На nfs-сервере экспортировалась файловая система /usr/BSD, которая содержала /usr/BSD/obj/, /usr/BSD/src/, /usr/BSD/ports/
Выглядело так в /etc/exports/:

Код: Выделить всё

/usr/BSD/                          -alldirs        -maproot=root   -network 10.0.8.0/24
на клиентских машинах в /etc/fstab/:

Код: Выделить всё

10.0.9.10:/usr/BSD/src          /usr/BSD/src    nfs     rw      0       0
10.0.9.10:/usr/BSD/obj          /usr/BSD/obj    nfs     rw      0       0
10.0.9.10:/usr/BSD/ports        /usr/BSD/ports  nfs     rw      0       0
После прочтения статей, настройки скорректировали:

на сервере в /etc/exports/:

Код: Выделить всё

/usr/BSD/ports                          -alldirs        -maproot=root   -network 10.0.8.0/24
/usr/BSD/obj    -ro                     -allsirs        -maproot=root   -network 10.0.8.0/24
/usr/BSD/src    -ro                     -allsirs        -maproot=root   -network 10.0.8.0/24
на клиентских машинах в /etc/fstab/:

Код: Выделить всё

10.0.9.10:/usr/BSD/src          /usr/BSD/src    nfs     ro,bg      0       0
10.0.9.10:/usr/BSD/obj          /usr/BSD/obj    nfs     ro,bg      0       0
10.0.9.10:/usr/BSD/ports        /usr/BSD/ports  nfs     rw,bg      0       0
Настройки в /etc/rc.conf и на клиентах и на сервере были указаны верно, согласно handbook.