UNIX
online
pulse
logo
| unixonline.ru | rsync.net | поддержка | fuse |
услуги
   поддержка
   резервирование
   мониторинг
   оптимизация

цены
контакты
 

Монтирование файловой системы rsync.net в FreeBSD

Существует возможность смонтировать файловую систему rsync.net как локальную файловую систему FreeBSD 6.x посредством использования sshfs (FUSE).

FUSE и sshfs недоступны для FreeBSD 4.x и 5.x - вы можете использовать данную функциональность только начиная с FreeBSD 6.x. Кроме того, после установки, FreeBSD 6.0-RELEASE не содержит порта /usr/ports/sysutils/fusefs-sshfs - вам необходимо загрузить порты самостоятельно.

Данный документ детально описывает процесс получения и установки порта fusefs-sshfs для монтирования файловой системы rsync.net как локальной файловой системы FreeBSD.

Шаг 1: Получение порта fusefs-sshfs с использованием cvsup

Если cvsup уже установлен, просто запустите команды ниже:

# cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile \
-h cvsup2.freebsd.org -i ports/sysutils/fusefs-sshfs
# cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile \
-h cvsup2.freebsd.org -i ports/sysutils/fusefs-libs
# cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile \
-h cvsup2.freebsd.org -i ports/sysutils/fusefs-kmod

Если cvsup еще не установлен, то его необходимо установить:

# cd /usr/ports/net/cvsup-without-gui
# make install

Шаг 2: Очистка портов

К сожалению, порт fusefs-libs который устанавливается вместе с fusefs-sshfs, содержит ошибку в Makefile. Данная ошибка содержится в 6.0-RELEASE и 6.1-RELEASE.

Отредактируйте файл /usr/ports/sysutils/fusefs-libs/Makefile, и замените все вхождения ${REINPLACE_CMD} командой sed.

Т.о. следующая часть Makefile:

post-patch:
  ${REINPLACE_CMD} -e 's,-lpthread,${PTHREAD_LIBS},' \
    -e 's,-D_FILE_OFFSET_BITS=64,-D_FILE_OFFSET_BITS=64 ${PTHREAD_CFLAGS},' \
    ${WRKSRC}/fuse.pc.in
  ${REINPLACE_CMD} -e 's,-lpthread,${PTHREAD_LIBS},' \
    ${WRKSRC}/lib/Makefile.in \
    ${WRKSRC}/example/Makefile.in

Должна выглядеть как:

post-patch:
  sed -e 's,-lpthread,${PTHREAD_LIBS},' \
    -e 's,-D_FILE_OFFSET_BITS=64,-D_FILE_OFFSET_BITS=64 ${PTHREAD_CFLAGS},' \
    ${WRKSRC}/fuse.pc.in
  sed -e 's,-lpthread,${PTHREAD_LIBS},' \
    ${WRKSRC}/lib/Makefile.in \
    ${WRKSRC}/example/Makefile.in

Далее, вы должны быть готовы к тому, что первая попытка выполнить `make install` с портом /usr/ports/sysutils/fusefs-sshfs закончится неудачей в самом конце перед регистрацией fusefs-libs.

Далее, вы должны быть готовы к тому, что вторая попытка выполнить `make install` закончится неудачей по той же причине, но при регистрации fusefs-kmod.

Шаг 3: Установка

# cd /usr/ports/sysutils/fusefs-sshfs
# make install

Установка может завершиться неудачей при регистрации fusefs-libs. Если такое произошло, просто запустите `make install` повторно.

Среди предложенных опций установки выберете опцию AUTOSETUP.

Установка может завершиться неудачей при регистрации fusefs-kmod. Если такое произошло, просто запустите `make install` повторно.

Шаг 4: Проверка загрузки модуля ядра

При установке порта загрузится модуль ядра fuse.ko. Для проверки загрузки модуля выполните команду:

# kldstat

и в выводе найдите строку:

3 1 0xc3865000 b000 fuse.ko

В дальнейшем, вы можете загружать и выгружать модуль командами:

# kldload fuse.ko
# kldunload fuse.ko

Шаг 5: Монтирование файловой системы rsync.net

Создайте директорию для точки монтирования:

# mkdir /mnt/rsync.net

После этого выполните команду sshfs:

# sshfs -o idmap=user 1004@usw-s017.rsync.net: /mnt/rsync.net

Помните: команда sshfs должна быть запущена под пользователем root и без использования sudo. После того, как файловая система смонтирована при помощи sshfs, она может быть доступна другим пользователям.

При выполнении команды у вас будет запрошен пароль для доступа к rsync.net. После ввода пароля команда завершится без сообщений. После этого введите команду:

# mount

которая отобразит состояние монтируемой файловой системы:

/dev/fuse0 on /mnt/rsync.net (fusefs, local, synchronous)

По завершению работы вы можете отмонтировать файловую систему выполнив команду:

# umount /dev/fuse0

Шаг 6: Альтернативный вариант

Другой путь для монтирования файловой системы rsync.net состоит в выполнении команды:

# mount_fusefs auto /mnt/rsync.net sshfs -o idmap=user 1004@usw-s017.rsync.net: