21 авг. 2013 г.

Сохранение Unix-прав файлов в Subversion

Решил использовать Subversion для хранения в том числе и системных настроек сервера, папка /etc и неожиданно обнаружил - что после коммита поломались права файлов. Оказывается для Subversion ломание прав на файлы при каждом коммите и выставление их в стандартный вид - нормальное дело. Максимум, что он умеет - сохранять бит выполняемости, возможно вручную.

Первичный поиск решения ничего не дал.

Решил уже писать обертку вокруг SVN чтобы сохранять права файлов в свойства и восстанавливать их оттуда же по мере необходимости и случайно уже наткнулся как раз на такую обертку.
http://www.abmh.de/en/papers/linux/asvn-svn-including-file-permissions.html
Как я понял файл взят из официального дерева и поправлен - так чтобы работал.

18 авг. 2013 г.

lxc - Linux Containers

Задача

На Linux запускать пользовательские приложения максимально изолированно друг от друга, контекст запуска - хостинг (apache, nginx, mysql, php, postgresql, sphinx и что там еще клиентам потребуется).
Обязательно: оградить файлы пользователей друг от друга, возможность ставить любой софт, который потребуется клиенту.
Желательно: ограничить потребление процессора, памяти, изолировать сеть (чтобы по сети к соседнему MySQL не подключались), минимальное падение производительности, простота.

История

Как вариант имел ввиду OpenVZ и создавать каждому клиенту по виртуальной машине. В целом хорошо, но OpenVZ относительно сложно ставится, требует изменений в ядре. Из этого вытекает предполагаемая сложность поддержки и обновлений.
Остановился на варианте созданий chroot-окружений и запуска всех процессов каждого пользователя в этих окружениях в файлово изолированной среде. Проброс общих папок через mount --bind в режиме readonly.
Подход тоже неплохой, проще чем OpenVZ и в целом изоляцию пользователей обеспечивает. Ресурсы можно ограничивать через cgroup.
Из недостатков:
  • огромное количество точек монтирования выводимое по mount
  • сервер не перезагружается (т.е. при попытке выполнения reboot он что-то там пытается отмонтировать и до перезагружки дело не доходит, приходится перезагружать по плохому)
  • оказалось проблемным отправлять почту из chroot (но это решил) 
  • не работает cron (это тоже решается, например можно из хост-системы запускать стандартный крон и каждый раз chroot'иться).
Начал уже думать над объединением пользовательских процессов в cgroup, попробовал на одном из сайтов как это работает и остался доволен.

Решение

В итоге наткнулся на lxc - linux containers. Собственно это примерно то же самое что я сам делал, только в более зрелом состоянии - утилиты для запуска/остановки, монитор состояния, сразу объединение процессов в cgroup. Плюс очень кстати оказалась изоляция сети.
Из недостатков:
Насколько я понял если пользователь внури lxc получает root-а, то у него есть возможность выбраться в хост-систему. Это нужно иметь вводу, но в моём случае неактуально - у конечных клиентов нет root-доступа.

4 авг. 2013 г.

WiFi роутеры Asus RT-N10P и RT-N66U

Режим использования:
Подключение к интернету 30Мбит/сек, постоянно качаются/раздаются торренты (часто занимают весь канал) + хочется беспроблемно смотреть видео из сети и разговаривать по IP-телефонии. Подключение к интернет через VPN-соединение (Beeline). Ресурсами локальной сети провайдера не пользуюсь. Желательна возможность создания гостевой сети (интернет во двор раздавать).

Изначально пошел за Asus RT-N66U - быстрый, положительные отзывы. В магазине продавец рекомендовал RT-N10P, который значительно дешевле. В итоге взял оба для сравнения.

Настройки и возможности в части WiFi почти одинаковые, RT-N10P оказывается тоже умеет делать гостевые сети и есть telnet штатно из коробки и поддержка IPv6 в том числе в качестве шлюза на внешние сети. В обоих есть настройка приоритетов трафика и по итогам первых проб хотел RT-N10P у себя и оставить.

Проблемы начались примерно после получаса качания торрентов - обычные страницы стали открываться с большими задержками, SIP-телефония работала плохо (не проходили звонки). Покрутил приоритеты трафика, ситуация значительно не улучшилась, по top - процессор роутера был занят исключительно обработкой прерываний.

С Asus RT-N66U после настройки приоритетов в QoS связь работает отлично - торренты качаются на полной скорости - чуть больше 3Мбайт/сек в обе стороны. При этом страницы открываются отлично и телефония работает ровно как и должна работать на полностью свободном канале. В итоге этот роутер у себя и оставляю.


P.S. сделал попытку качать роутером торренты, но справляетс роутер с этим плохо. Максимум 1.5Мбайта/сек, обычно 0.6Мбайт/сек, дальше уже процессора нехватает, так что использовать его можно в случае когда нет возможности/желания поставить обычный домашний сервер и скорость тут будет уже вторична.