воскресенье, 13 ноября 2011 г.

Использование nullfs во FreeBSD

nullfs это псевдо-файловая система, позволяющая смонтировать произвольную директорию в любом другом месте файловой системы. Наиболее часто применяется для монтирования дерева портов внутри jail или chroot, чтобы не копировать его целиком и не обновлять вручную.
Пример использования:
# mount_nullfs /usr/ports /home/jail1/usr/ports
Здесь предпологается, что корень jail это директория /home/jail1
Тоже самое в fstab:
/home/jail1/usr/ports /usr/ports nullfs rw 0 0
Конечно можно достичь того же результата с помощью символических сслыкок, однако при большом количестве джайлов использование nullfs удобнее.
Для работы nullfs ядро должно быть собрано с опцией PSEUDOFS (по умолчанию в GENERIC), кроме того, должен быть загружен модуль ядра:
# echo 'nullfs_load="YES"' >> /boot/loader.conf

4 комментария:

  1. Добрый день.
    пробовал таким образом примонтировать диреторию с нфс сервера на джаил машину на этом же нфс сервере и в пределах того же раздела, но увы путь 1 и путь 2 "are not distinct paths".
    Оъясню попонятнее, есть нфс сервер с разделом расшареным по нфс, на этом же сервере запущена джаил машина, расположенная на том же разделе. Пытаюсь в джайле подключить нфс шару и не получается.
    Может есть идеи как мне это сделать?
    Если подключаю через nullfs , то "are not distinct paths"
    Если через mount_nf , то "Operation not permitted"

    ОтветитьУдалить
    Ответы
    1. Здравствуйте, Вячеслав.
      Дать готовое решение сходу не дам, потому что нужно разбираться в конкретной ситуации, а это делается только для клиентов.
      Подсказать могу: смотрите исходники tinderbox, он использует именно такой подход, т.е. монтирует по nfs/nullfs внутрь джайла.
      По ошибкам могу сказать следующее:
      are not distinct paths - значит пытаетесь смонтировать директорию саму в себя
      Operation not permitted что-то не так в /etc/exports

      Успехов

      Удалить
  2. Если zfs, то обязательна опция "late".

    ОтветитьУдалить
  3. Разве в таком виде делается запись в fstab? Мне кажется надо что монтировать и куда, т.е. запись должна быть - /usr/ports /home/jail1/usr/ports nullfs rw 0 0
    А то при монтировании пишете правильно - mount_nullfs /usr/ports /home/jail1/usr/ports, а потом нет.

    ОтветитьУдалить