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

понедельник, 18 октября 2010 г.

Мое google-fu сильнее твоего!

Стоит только что-то придумать, выясняется, что кто-то уже сделал это до тебя. Вот придумал я тут одну штуку, а она оказывается уже вроде как и есть - кэширующая файловая система c медленным бэкэндом. Знакомьтесь - mcachefs. Работает над fuse, что-то умеет. Будем изучать. Я ищу пока средства разумно ускорить мою извращенную схему с nas за wi-fi. Но в процессе находится столько всего интересного, вот сейчас смотрю, как писать свои fs под fuse, очень хочется попробовать. Да и наверняка mcachefs будет не совсем тем, что я себе представляю.

четверг, 14 октября 2010 г.

Western Digital My Book World Edition II: настройка, установка rtorrent

На этот раз я разбирался с устройством, которое декларирует себя как NAS. До взрослого NAS-а ему далековато, но кое что все же коробочка может.

Итак, что я сделал для использования этого хозяйства? Работает на linux, архитектура arm, есть сайт, с которого стоит начать знакомство с внутренностями после покупки: http://mybookworld.wikidot.com/.

Первым делом я подключил nfs, в "белой" редакции это делается через веб-интерфейс. Затем включил доступ по ssh. С ssh надо быть осторожным, если ваша сеть не является закрытой. Да и в таком случае лучше быть осторожным ;).

По-умолчанию коробочка запускает одного демона nfsd, в рекомендациях по производительности написано это число поменять на то, что будет лучше для вас. Я решил, что 1 - мало по любому, поэтому поставил сразу 4. Делается это следующим образом:

1. Заходим по ssh на коробочку (root'ом с логином welc0me):

kilork@phoenix ~ $ ssh wdmybookip -l root
root@wdmybookip's password: 

~ # 

2. Редактируем /etc/init.d/S80nfsd:

~ # vi /etc/init.d/S80nfsd

Строку
/usr/sbin/rpc.nfsd

заменяем на
/usr/sbin/rpc.nfsd 4

Вместо 4 можно поставить ваше любимое число. Ну или можно этого не делать, мне кажется лучше, когда демонов больше, но конкретных замеров я не проводил на одновременную работу с коробочкой при разном числе демонов.

Далее, по инструкции ставим на коробочку пакетный менеджер ipkg. Для установки rtorrent достаточно сделать:
/opt/bin/ipkg install rtorrent

Далее, запуск через:
/opt/bin/rtorrent

Настройка в файле .rtorrent.rc. Вот мой:
directory = /shares/Public
session = /shares/Public/session
schedule = watch_directory,5,5,load_start=/shares/Public/torrent/*.torrent
port_range = 40890-40890
#port_random = no
#check_hash = yes
session_save = yes
encryption = allow_incoming,enable_retry,prefer_plaintext
use_udp_trackers = no
dht = auto
dht_port = 6881
encoding_list = UTF-8
bind = wdmybookip
ip = external_ip
scgi_port = localhost:5000
upload_rate = 100
download_rate = 1000
max_peers = 30
max_uploads = 10
max_uploads_global = 20
max_downloads_global = 60
send_buffer_size = 1M
receive_buffer_size = 1M
max_memory_usage = 128M

wdmybookip и external_ip - адрес коробочки в локальной сети и адрес внешний. Порты 40890 и 6881 должны быть проброшены с внешнего адреса на коробочку.

Вот и все, можно скачивать и сохранять пентабайты данных?

К сожалению, все не так просто. Дело в том, что метод соединения по-умолчанию через epoll у меня не заработал, и два - падает на больших торрентах. Обе проблемы известные, первая решается передачей параметра окружения для выбора метода select, вторая - через компиляцию libtorrent. Первое весьма просто:
export RTORRENT_POLL=select
/opt/bin/rtorrent

А вот второе уже сложнее. Для этого нам понадобится на другой машине выкачать репозитории ipkg и самостоятельно все собрать/поправить. Я сделал скрипт, который все делает, главное, на что надо обратить внимание - это удаление define'ов USE_EPOLL и USE_MADVISE:

#!/bin/bash
mkdir wd
cd wd
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware
make cs05q1armel-target
cd cs05q1armel
make directories ipkg-utils toolchain
make libtorrent
cd builds/libtorrent
sed -i '/USE_EPOLL/ d;/USE_MADVISE/ d' config.h
make
cd -
make libtorrent-ipk
mv builds/libtorrent*-1_arm.ipk builds/libtorrent.ipk

Полученый файл wd/optware/cs05q1armel/builds/libtorrent.ipk необходимо скопировать на коробочку, после чего на ней уже запустить команду:
/opt/bin/ipkg install path/to/libtorrent.ipk
.

Теперь все хорошо и запускать можно без всяких переменных окружения: /opt/bin/rtorrent. С чем я всех и поздравляю.

З.Ы. Скачать готовый скрипт и пакет.

среда, 13 октября 2010 г.

Домашняя сеть: когда хочется всего и сразу

Я неоднократно писал о том, как обустраивал свою домашнюю инфраструктуру. Это заметки о Asus O!Play HDP R1: здесь и здесь. Мои приключения с устройствами от D-Link: здесь и здесь. Я достиг желаемого, 15 Гб mkv воспроизводились без проблем. Почти. Стоило на пути следования сигнала оказаться человеку, собаке, или какому-нибудь высокоэнергичному существу - начинались проблемы. Тяжелее всего смириться с мелочами. Это то, что больше всего достает. Как люди, которые давно друг друга знают могут устроить ссору из-за неопущенного сидения унитаза, или другой глупости, точно так же меня бесят мелкие недостатки в работе какого-либо домашнего устройства. Я лучше сломаю его, куплю что-то другое, но не смогу смириться с недостатками, которые не сильно мешают.

Поэтому я начал искать решение. Первое, zero-cost - подключить к O!Play жесткий диск по USB и по сети на него закидывать файлики. O!Play с 1.27 прошивки умеет делать из внешнего жесткого диска NAS - описание. К сожалению, в таком режиме мощностей коробочки совсем не хватает. Однако общая идея была уже ясна - данные должны лежать рядом. Для этого приобрел коробочку от Western Digital: MyBook World II 2Tb. Подключил это к роутеру напрямую. Папочку по nfs расшарил в сети этого роутера. С коробочки 30 Gb mkv играются без проблем. И ходить могут сколько хотят люди, звери и энергетические сущности. Коробочка аналогично O!Play поддается хакам, чем я последние две недели и занимаюсь. Как только доиграюсь до чего-то определенного - напишу подробный отчет.

Еще одно изменение в домашней сети - она перестала быть настолько домашней. Подключил в NetByNet услугу "Коннект", теперь у меня целый пул статических адресов. Заодно приобрел и роутер поприличнее - Linksys WRT610N. Думал сначала поменять их местами с d-link, но последний оказалось проблематично сделать простым маршрутизатором, а в linksys это делается фактически в пару кликов мышкой. Однозначный плюс в копилку.

Даже в текущем варианте я все равно недоволен. Воспроизведение побеждено, но время закачки на NAS по связке через wi-fi все равно никуда не делось (а очевидно, что если даже 15 Gb дергались, то на перекачку 30 Gb фильма уйдет в два раза больше времени, чем на собственно просмотр). Пока компенсирую это тем, что поставил на NAS качалку, получается, что нет задержки на передачу от скачивалки до устройства, идет сразу же закачка информации. В связи с этим разобрался таки с iptables, до этого всегда просто брал готовые мануалы не вдумываясь, а тут реально глубоко погрузился в тему.

Update (2011/09): Проблему скорости закачки я решил без использования Wi-Fi: альтернатива.