Показаны сообщения с ярлыком mount. Показать все сообщения
Показаны сообщения с ярлыком mount. Показать все сообщения

суббота, 17 октября 2009 г.

FTPFS или что можно сделать на базе FUSE

Скопирую на будущее. Вдруг пригодится опять.

Владелец одного из серверов, администрированием которого занимается наша компания, поставил такую забавную задачу. На его сервере присутствует громадный ftp-архив (2 storage по 6 ТБ каждый на данный момент). Неподалеку от этого сервера стоит другой сервер, на котором есть тоже интересный архив, причем постоянно обновляемый. Необходимо было сделать так, чтобы архив второго сервера стал как бы частью ftp-архива нашего сервера. При этом копировать данные с сервера на сервер не допускалось (ну там, дублирование информации и все такое).

Задача усложнялась тем, что на втором сервере стоит FreeBSD и ручек от его администрирования нам, естественно, никто не дал. После небольшого гугления было найдено 2 варианта решения данной проблемы:

  1. sshfs. то есть файловая система, работающая поверх ssh через FUSE (Filesystem in USEr space)
  2. ftpfs, то есть то же самое, но только работающее поверх ftp

Выбор был сделан в пользу ftpfs. Во-первых, очевидно что протокол ftp будет работать быстрее чем ssh, т.к. соединение не шифруется. Во-вторых, оба сервера находятся на одном и том же узле связи, никакой особой безопасности тут не требуется, тем более что второй сервер вообще разрешает анонимный доступ по ftp. Да, забыл добавить немаловажный факт: между серверами гигабитная сетка.

Итак, решение выбрано, приступаем к настройке. Первым делом, установим необходимые пакеты:
apt-get install curlftpfs
все, что нужно, debian скачает и установит сам. Дальше нужно создать точку монтирования (куда собственно подключать удаленный ftp):
mkdir /home/ftp/cool-ftp
chown user:group /home/ftp/cool-ftp

Монтируем ftp-шник:
curlftpfs ftp://ftp.host.ru/ /home/ftp/cool-ftp/ -o ro,allow_other,uid=user,gid=gro
Собственно, вот и всё. Почти :) Дело в том, что нормальные админы не занимаются развешиванием соплей, отваливающихся при ребуте сервера, а приколачивают все гвоздиками. В нашем случае, нужно прописать соответствующую строчку в /etc/fstab, чтобы при загрузке нашего сервера, ftp-шник подмонтировался автоматом. Делается это очень просто, путем добавления в /etc/fstab вот такой строчки:
curlftpfs#anonymous:@ftp.host.ru /home/ftp/cool-ftp/ fuse ro,allow_other,uid=user,gid=group 0 0
Разумеется, так же полезно добавить строчку "fuse" в файл /etc/modules, чтобы модуль fuse был автоматом загружен в ядро.
Да, чуть не забыл добавить. Не знаю почему, но uid=user,gid=group у меня на самом деле не работало. Вместо этого я написал uid=1001 (цифровой идентификатор юзера user, который можно получить, выполнив id -u user) и, соответственно, gid=...

Еще, кстати, полезно сделать вот так:
ln -s /usr/bin/curlftpfs /sbin/mount.curlftpfs
чтобы можно было монтировать файловые системы типа curlftpfs обычной командой mount -t curlftpfs

P.S. После некоторого времени эксплуатации выяснилось, что система ведет себя не совсем стабильно: периодически процессы ftpfs зависали на команде LIST. Поэтому в итоге мы таки откатились на sshfs. Делается это не менее просто:

  1. Генерируем rsa-ключ для ssh для того пользователя, которым мы ходим на удаленный хост, то есть в нашем случае это root:
    ssh-keygen -t rsa
  2. Прописываем этот ключ, который лежит в файле ~/.ssh/id_rsa.pub на удаленном хосте в файл ~/.ssh/authorized_keys2
  3. В /etc/fstab добавляем строчку:
    sshfs#ftp.host.ru:/home/ftp/public/ /home/ftp/cool-ftp/ fuse ro,allow_other,uid=user,gid=group 0 0

Полный формат первого аргумента выглядит так: sshfs#user:pass@ftp.host.ru:/home/ftp/public/ но мы, разумеется, логин и пароль сюда не пишем, т.к. пользуемся ключами.
Ну и наконец, монтируем:
mount -a

Оригинал (Халиков Антон)

Dlink DNS - 323

Купил себе новую игрушку. Dlink DNS-323.
По сути это сетевое хранилище.
Внутри линукс.
Хард на 1Тб она форматнула как ext2.

Задача перегона данных усложнилась еще тем, что NTFS не поддерживает в принципе, даже "только на чтение" не хочет.
Ладно.... Что может этот девайс из протоколов FTP, SMB. HTTP (грустно только админка и никакого нормального доступа в файлам).

Для начала, я включил поддержку UTF8. Это избавляет меня от проблем с русскими именами файлов на диске, но дбавило проблем для монтирования.

Для SMB вывел следующую мантру
1. Установить поддержку smbfs
apt-get install smbfs
2. Создать каталог монтирования
sudo mkdir /media/vol1
3. Сам монтаж
mount -t smbfs -o username=admin,password=,iocharset=utf8 //192.168.1.33/Volume_1 /media/vol1

Для FTP нашел готовую мантру и даже больше http://www.e-lug.ru/node/185 оригинал тут Большое спасибо Халикову Антону
1. Fuse обертки
apt-get install curlftpfs
2. Создаем каталог
sudo mkdir /media/vol1_ftp
3. Монтируем
sudo curlftpfs ftp://anonymous:anonymous@192.168.1.33/ /media/vol1_ftp -o ro,allow_other,uid=1001,gid=1001

javascript:void(0)