FreeBSD: прямой доступ к устройствам в сети

Понадобилось мне внезапно настроить экпортирование данных с сервера в сеть. NFS себя не оправдал в этой ситуации. Следующим пришел в голову экспорт при помощи GEOM_GATE,
вот о нем-то и пойдет речь. Итак, настраиваем прямой доступ к устройствам удаленного сервера.

Настройка доступа

На сервере

1. Загрузка модуля ядра (если ядро не содержит вкомпилированного кода)
подгружаем единожды:

ax2m-work# kldload geom_gate.ko

подгружаем всегда:

ax2m-work# echo ‘geom_gate_load=»YES»‘ >> /boot/loader.conf

засовываем в ядро:

ax2m-work# echo ‘options GEOM_GATE’ >> /sys/YOUR_ARCHITECTURE/conf/YOUR_KERNEL_CONFIG
ax2m-work# make kernel
ax2m-work# reboot

2. Конфигурация экспортируемых устройств хранится в файле /etc/gg.exports
пример содержимого конфигурации:

192.168.1.0/24 RW /dev/ad0s1d

устройство /dev/ad0s1d (раздел /tmp на моей машине) мы экспортируем всем клиентам
в сети 192.168.1.0/24 с правами на чтение.

Экспортировать можно как разделы, так и устройства целиком.

3. Запуск демона (нужен в случае подгруженного модуля)

ax2m-work# ggated -v
info: Reading exports file (/etc/gg.exports).
debug: Added 192.168.1.0/24 /dev/ad0s1d RO to exports list.
info: Exporting 1 object(s).
info: Listen on port: 3080.

-v verbose, необязательный ключ, но в первый раз лучше с ним запустить,
во избежание непоняток 🙂

На клиенте

1. Создание локального файла устройства и связывание его с устройством на сервере
(IP адрес машины с запущенным сервером 192.168.1.65):

fs# ggatec create -o ro 192.168.1.65 /dev/ad0s1d
ggate0

ggate0 — ответ при успешном создании устройства

2. Монтируем устройство

fs# mkdir /mnt/tmp_export
fs# mount /dev/ggate0 /mnt/tmp_export/

3. Проверяем «чёкак»

fs# mount


/dev/ggate0 on /mnt/tmp_export (ufs, local, soft-updates)

4. Идентификация импортируемых устройств

fs# ggatec list -v
NAME: ggate0
info: 192.168.1.65:3080 /dev/ad0s1d
access: read-only
timeout: 0
queue_count: 0
queue_size: 1024
references: 2
mediasize: 5368709120 (5.0G)
sectorsize: 512
mode: r1w1e1

5. Восстановление geom_gate (при перезагрузке сервера, например)

% ggatec rescue -o ro -u 0 192.168.1.65 /dev/ad0s1d

где 0 — номер устройства ggate, связь с которым временно прервалась.

Прекращение работы с устройством

На клиенте:

% umount /mnt/tmp_export
% ggatec destroy -u 0

где 0 — номер устройства ggate.

На сервере:

% pkill ggated

Источник вдохновения



08 апреля 2010.   Комментарии: Комментарии к записи FreeBSD: прямой доступ к устройствам в сети отключены.    Размещено в FreeBSD