Задача
Имеем NFS-доступный каталог с дистфайлами (архивами исходников) портов на сервере (обновляется редко). На одной из сетевых машин также имеется каталог /usr/ports/distfiles, в котором находятся более новые версии дистфайлов. Проблема в том, что в серверном NFS-хранилище находится очень много файлов, нужных для сборки всего и вся, они редко изменяют свои версии. А на сетевой машине только то, что она скачала сама из Сети.
Как бы сделать так, чтобы сетевая машина могла использовать не только свои дистфайлы, но и дистфайлы сервера?
Решение
На сетевой машине делаем:
% mount_nfs -o ro server:/usr/ports/distfiles /mnt/server/distfiles
% mount_unionfs -o below /mnt/server/distfiles /usr/ports/distfiles
Таким образом, на сетевой машине мы получили полное дерево портов со всеми дистфайлами. Новые файлы будут сохранятся локально (удобно, если NFS-каталог для нас read-only). Любые изменившиеся файлы в NFS-каталоге будут скопированы в локальное хранилище (/usr/ports/distfiles сетевой машины) с последующим применением изменений. Эти исключения описаны параграфом в mount_unionfs(8).
Стратегия обработки файлов в unionfs такая: сначала поиск ведётся в upper layer (это первый параметр), затем в lower layer (это второй параметр). При удачном поиске в lower layer идёт "теневое зеркалирование" файла на upper layer (без копирования), затем проведение операций открытия файлов и работы с ними. Ключ -o below приводит к инверсии lower layer и upper layer.
Ссылки
• "Реализация UnionFS под FreeBSD стала более стабильной"
Комментариев нет:
Отправить комментарий