Файловый сервер FTP и NFS

Помимо файлового сервера SAMBA, установку и настройку которого мы рассмотрели в предыдущей статье, существует ещё несколько альтернативных вариантов организации файлового хранилиша на устройстве под управлением Tiny Core Linux. Но поскольку возможностей SAMBA-сервера более чем достаточно для нужд домашней локальной сети с клиентскими ПК на базе Windows, то о FTP и NFS речь в этой статье пойдет лишь поверхностно.

FTP. Популярный протокол передачи данных. Стабильный, нетребователен к ресурсам сервера, обеспечивает высокую скорость передачи данных. Наивысшую среди остальных протоколов. Единственный его минус - невозможность передачи потоковых данных. Другими словами фильм рамещенный на FTP сервере перед просмотром придется полностью скачать к себе на локальный ПК. Поэтому для медиахранилища FTP мало пригоден, но для нужд обычного файлового архива это идеальный вариант. За организацию FTP-сервера отвечает демон bftpd. Вначале установим его:

tce-load -wi bftpd.tcz

Копируем пример конфигурационного файла /usr/local/etc/bftpd.conf в /home/conf/bftpd.conf и открываем для редактирования. Нам подходит "стоковая" конфигурация bftpd, за исключением определения домашних директорий пользователей. По умолчанию они находятся на системном диске, прямо в RAM мультисервера. Чтобы предотвратить переполнение ОЗУ файлами FTP-пользователей перенесём эти папки на жесткий диск. Сначала создадим директорию /mnt/HDD/ftp/ где будут размещаться домашние папки пользователей. В конфигурационном файле изменим строку:

/home/conf/bftpd.conf

...
  ROOTDIR="/mnt/HDD/ftp/%u"
...

С данной конфигурацией bftpd вполне работоспособен, но FTP-пользователей вам придется создавать в самой системе, и объеденить в одну группу. К примеру ftpusers. Однако есть другой, упрощенный вариант организации доступа к ресурсам FTP-сервера. Для этого необходимо раскоментировать строку

/home/conf/bftpd.conf

...
  FILE_AUTH="/etc/ftpdpassword"
...

и создать файл /etc/ftpdpassword куда будут записаны все аккаунты FTP-сервера. Заносятся они в текстовом формате одной строкой для каждого пользователя в следующем порядке:

/etc/ftpdpassword

...
  [логин] [пароль] [группа] [домашняя папка пользователя]
...

Помимо этого, в базовой конфигурации отключена возможность изменения атрибутов, прав доступа и возможность удаления файлов FTP-пользователем. Чтобы снять эти блокировки замените "no" на "yes" в строках

/home/conf/bftpd.conf

...
  ALLOWCOMMAND_DELE="yes"
  ALLOWCOMMAND_STOR="yes"
  ALLOWCOMMAND_SITE="yes"
...

Осталось теперь внести /etc/ftpdpassword в бэкап-лист и запустить bftpd с нашим конфигурационным файлом:

sudo bftpd -d -c /opt/conf/bftpd.conf

NFS. (Network File System) дословно "Сетевая Файловая Система". Легковесный и нетребовательный к ресурсам протокол сетевого обмена данных популярный в Linux-системах. В противовес SAMBA-серверу, тяжеловесному и перегруженому. Созданому и существующему лишь благодаря распространенности ОС Windows. Хорошим примером может быть мой недавний случай из практики, когда необходимо было скопировать по сети очень много (более 70 000) мелких файлов. SAMBA так и не справилась с задачей, скатившись до скорости в 50 кбит/с на 2/3 пути и загрузив ЦП мультисервера на 100%. Копирование посредством NFS прошло без проблем. Возможно вам NFS придется по душе больше, и вы с легкостью откажетесь от SAMBA. А пока приступим к установке:

tce-load -wi nfs-utils.tcz
tce-load -wi filesystems-4.8.17-tinycore.tcz

Настройка сводится к добавлению директорий которые мы хотим "расшарить" с определенными параметрами доступа в файл /etc/exports. Например чтобы открыть сетевой доступ ко всему жесткому диску достаточно внести строку следующего содержания:

/etc/exports

...
/mnt/HDD 192.168.0.0/24(fsid=0,rw,insecure,nohide,all_squash,anonuid=0,anongid=0,no_subtree_check)
...

Я не буду объяснять смысл этих параметров, поскольку рассматриваю NFS лишь поверхностно. Самой же информации о детальной настройке NFS-сервера в интернете предостаточно. Запускаем:

sudo /usr/local/etc/init.d/nfs-server start

Самое занятное, что в Windows-системах поддержка NFS отсутствовала напрочь вплоть до "семерки". Даже не смотря на почтенный "возраст" Network File System (год создания 1984). Создается впечатление, что Microsoft осознано, принципиально и упорно не хотели поддерживать NFS в своих системах. Даже сейчас, после включения поддержки NFS начиная с Win7, по умолчанию она остается отключеной, а GUI отсутствует напрочь. Это значит, чтобы воспользоваться доступом к удаленым ресурсам посредством NFS, сетевой диск придется монтировать вручную через командный терминал Windows. Теперь на минуточку, вы представляете среднестатистического пользователя домашней Windows монтирующего сетевые диски в терминале? Я - нет. То есть по сути поддержка NFS если и реализована в Win7, сделано с полным отсутствием какого-либо удобства для рядового "виндузятника". Более того, такой пользователь даже никогда не узнает про NFS. Увы, как говорится "кто платит, тот и музыку танцует".

Но оставим лирику и эти войны протоколов, вернемся к нашей задаче. Как вы уже поняли, с подключением по NFS на Win7 придется чуть повозиться. Для начала включим поддержку NFS. Далее запускаем "выполнить" в котором вызываем теримнал командой cmd и в привычном терминале монтируем сетевой диск:

mount 192.168.1.1:/mnt/HDD n:

Тут всё просто. Указываем сетевой адрес и букву диска, к которому будет смонтирована сетевая папка. В моём примере содержимое /mnt/HDD мультисервера будет доступно через диск N.

После подключения к сетевому диску посредством NFS скорость чтения/записи у меня составила 80/20 Мбит/с в локальной Гигабитной сети. Вероятно она ограничена размером буфера чтения/записи самого сервера или другим фактором, по крайней мере беглый поиск в интернете не дал мне ответа на этот вопрос.

Не забудьте внести файл /etc/exports в бэкап-лист, а команду запуска NFS-сервера в /opt/bootlocal.sh чтобы он стартовал каждый раз при загрузке системы.

ранее: "Файловый сервер SAMBA"далее: "Торрент-клиент"
17.01.2017 [10:51:39] flex0r

Здравствуйте!
Благодаря Вашему блогу без первоначальных знаний nix систем поднял на тонком клиенте HP t5000 сервер на TCL для домашнего использования.
Первоначальная идея была использовать сервер для хранения медиаресурсов, а на ноут с разбитым дисплеем я навесил Openelec с Kodi на борту.
Свои опыты я начал с самбы. Быстро настроил, расшарил, закинул фильм, открыл через Openelec - всё заработало. Ушел курить, а сервер наглухо отвалился. Путем опытов было выяснено, что при проигрывании файла спустя какое-то время перемонтируется флешка, на которой лежат фильмы, в логах пишется что-то про "free_fat_clusters". Пробовал форматировать в Ext4, пробовал другую флешку - исход один, сервер или валится совсем, или теряет шару
Ладно, решил попробовать NFS. Всё показалось еще проще, но проблема вылезла оттуда, откуда не ждал - у меня стоит Win 7 pro, в которой нет поддержки NFS. Ок, поставил NekoDrive - заработало, диск стал виден из винды, решил закинуть на него файлик размером 2Гб, на половине он споткнулся и пожаловался на нехватку системных ресурсов. Проблема описана тут - https://github.com/nekoni/nekodrive/issues/23
Xcopy не пробовал, но сервачок должен быть максимально простым, чтобы могли пользоваться дети и жена.
Папки и файлы с кириллическими символами также не создаются/не копируются.
Уровень проблем пока не превысил критический, надо еще попробовать Openelec, как он взаимодействует с NFS-шарой, но вот стабильной работы TCL - Windows-клиент я пока обеспечить не смог =(

23.01.2017 [23:28:47] Автор статьи

HP t5000 оснащен собственным HDD? Попробуйте проигрывать фильмы напрямую с него посредством того же VLC. По крайней мере мой ASUS z99h без проблем раздавал шару через самбу на HDD с недельными аптаймами на TCL. Что же касается NFS для win, то такие сетевые диски необходимо монтировать с указанием явно кодировки сервера. Для UNIX-систем это utf-8. Но а в целом, если на вашем сервере более 512Mb RAM я бы советовал переходить на ALPINE LINUX. Он более стабилен и имеет хорошую поддержку разработчиками. Принцип работы схож с TCL и вам не составит особого труда разобраться в ALPINE.


Оставить комментарий

Имя:

Сообщение: