У меня давно зрела идея создания домашнего сервера, осуществляющего функции NAS и HTPC. Т.е. сервера, работающего в качестве сетевого хранилища и медиаплеера. Но собрать его не доходили руки и бюджет. А тут так получилось, что эту идею я неожижанно реализовал. Хочу поделиться успешным опытом.
Итак, мне нужен был компактный сервер для надежного хранения данных и просмотра медиа-контента. На основании этого мини-ТЗ я и начал искать возможности для реализации.
Итого, вот список требований, которым должна была удовлетворять система:
- Компактный симпатичный корпус. Максимально тихий. Должно помещаться минимум 2х3.5'' диска. Желательно на салазках. Недорогой.
- Бэкапирование. RAID 1 (с зеркалированием) поднимать не хотелось, т.к. жако места. RAID 0 не подходил, т.к. некоторый контент весьма важен для меня и мне бы не хотелось его потерять в случае смерти одного из дисков. Кроме этого, скорости стандартных SATA-дисков мне вполне достаточно. Да и решения на подобных встроенных RAID-контроллерах традиционно считаются весьма ненадежными. Исходя из этого, я решил собирать систему на двух отдельных дисках с зеркалированием отдельных каталогов.
- Доступ к контенту на ХД через виндовые шары(SMB) с ноутов.
- Требования к мультимедиа ограничивались поддержкой HDMI. Девайс должен был проигрывать любой, в том числе FullHD, медиа-контент. Ну и здорово было бы, если бы все это было собрано в симпатичную оболочку.
- Torrent’ы. Девайс должен был быть основным устройством для закачки торрентов. Соответственно должен быть хороший интерфейс удаленной закачки торрентов. Т.е. чтобы можно было ставить файл на скачивание с ноута или с любого другого компа.
- Поддержка пульта. От девайса планировалось отключить клаву с мышкой и управлять пультом с дивана.
- Все это должно укладываться в адекватные деньги и продаваться в воскресенье вечером не очень далеко от дома :). Ну, решение собрать систему пришло в воскресенье днем, поэтому конфигурация была выбрана только к вечеру.
Вот, в общем-то, и все. Требования, кстати, весьма стандартные. Ничего выдающегося. Немного про выбор оборудования.
Платформу выбрал mini-ITX, как наиболее компактную. Кроме этого, у меня не было серьезных требований по производительности, так что я спокойно начал искать плату со встроенным процессором. Почитав форумы, выбор остановился на чипсете ION от NVIDIA. Платы со встроенными atom’ами на этих чипсетах успешно справляются с воспроизведением FullHD видео. Кроме этого сейчас реализована их нормальная поддержка в Linux, что для меня критично.
Корпус я искал долго. В очень компактные корпуса не влезали необходимые мне 2х3.5'' HDD и у них всегда проблемы с охлаждением. Большие корпуса, кроме того, что занимают много места, еще и стоят внушительно. Еще в выбранном корпусе порадовал вентилятор на передней панели, охлаждающий жесткие диски, установленные на салазках. После того, как я потерял два жестких диска из-за перегрева, наличие вентилятора показалось большим плюсом, несмотря на спорный дизайн. Корпус, конечно великоват, да много места в нем отведено под 5'' привод, который мне не нужен. Но в 5’’ отсек можно будет поставить еще один HDD, а объем корпуса позволяет рассчитывать на минимум проблем с охлаждением. В целом дизайн оказался очень даже ничего, гораздо лучше, чем на картинке. Итого насчитал в корпусе 4 вентилятора. Один на блоке питания, два небольших сзади на выдув и один на передней панели на вдув. С температурой все хорошо, но вот шумят они сильно. Так что теперь думаю на что бы их поменять, чтобы корпус стал немного потише.
Над выбором винтов думал не очень долго. Нужны были не столько быстрые, сколько тихие, надежные и холодные диски. После беглого прочтения форумов на ixbt выбрал двухтерабайтники EARS-серии от WD. Они позиционировались как довольно тихие и холодные. Скорость шпинделя составляет 5400 и энергопотребление их весьма низкое. После неудачного опыта с Seagate идея показалась мне хорошей. Кстати, в итоге я остался доволен.
С точки зрения общей архитектуры системы размещать систему стоит на отдельном быстром диске. В данном случае идеально подходят твердотельные SSD диски. Так что под систему я купил простейший 30 Гб SSD от Kingston.
Выбранная мать максимально поддерживает 4Гб ОЗУ. На текущем этапе поставил 2Гб. Впрочем, сейчас я периодически мониторю состояние памяти и возможно буду расширять ее до 4-х. Но пока я еще не до конца проанализировал ее расход.
После покупки, выяснилось, что дома у нас остались только ноутбуки, а для установки нужна клавиатура. Кроме этого, под рукой не было подходящей флешки, с которой можно было бы произвести установку. Так что полный список того, что мне пришлось, купить выглядел так:
Конфигурация системыНазваниеКоличествоСтоимость2000Gb Western Digital (WD20EARS) 64Mb 5400-7200rpm SATAII Caviar Green2448030Gb Kingston SNV125-S2/30GB SATA 2.5" V -Series12090DIMM 2Gb DDR3 PC10660 1333Mhz Hynix1530MiniITX CFI GROUP CFI-A9849 220W Black11835Zotac IONITX-K-E, Nvidia ION, Intel Atom N330, Mini-ITX, RTL137304GB Transcend JetFlash 300 (TS4GJF300)1250Genius KB-120 (USB), black1245Кабель SATA 50см191Патч-корд UTP 10м1100Итого 13351
Т.е. всего мне система обошлась приблизительно в 13 тыр. С одной стороны не дешево, с другой стороны столько будет стоить NAS среднего уровня, причем без дисков. Также важным для меня было то, что я купил это все в одном магазине, а не носился по всей Москве в поисках компонентов.
При выборе ОС я изначально думал об установке Windows т.к. мои крайние опыты с торрентами в Linux были не очень успешными. Более того, там где я живу сейчас выход в инет осуществляется через NAT и перевестись на PPPoE не представляется возможным. Соответственно, торрент-клиент должен очень хорошо поддерживать UPnP и очень бережно относиться к пирам. Известно, что у uTorrent с этим все в порядке. А вот Линуксовые клиенты у меня такого доверия не вызывали. Тем не менее, я решился на установку Linux. Вообще, я всегда работал с Gentoo и искренне уважаю и люблю этот дистрибутив. Именно благодаря тому, что я устанавливал Gentoo первых версий, я понял идеологию и архитектуру Linux. Однако сейчас мне был нужен быстрый результат без пересборок ядра и веселых ночных марафонов по тонкому конфигурированию. Поэтому я выбрал Ubuntu. Точнее ее разновидность Kubuntu, где вместо Gnome используется KDE. Уже давно мне хотелось посмотреть на четвертые ”кеды”. Однако сразу после установки на меня посыпались глюки в виде проблем с нечитаемыми шрифтами. Немного покурил форумы и пришел к выводу, что простая Ubuntu более стабильная. Тут же качнул свежую версию и запустил установку. Что примечательно, установка Ubuntu заняла в несколько раз больше времени, чем Kubuntu. Однако после установки система сама обновилась, я простым выбором из списка установил нормальные драйвера NVidia, и все заработало. Ну, почти. Чтобы включить звук по HDMI мне пришлось сначала включить канал через alsamixer. Для новичков в Linux это может быть неочевидным.
В качестве торрент-клиента был выбран Transmission. Основная задача была в том, чтобы торрент работал в режиме демона на сервере, а с ноута была возможность подключиться к нему через симпатичный GUI. Transmission этому требованию полностью удовлетворял, поэтому я на нем и остановился, о чем в последствии не пожалел. Он смог пробиться через NAT по UPnP и вполне успешно качать и раздавать контент. При этом раздача идет на таких скоростях, что uTorrent нервно курит в сторонке. Кроме этого, под windows (которая установлена у нас на ноутбуках) существует замечательная GUI, сильно напоминающая привычный uTorrent. Работать с ней очень удобно. А выставление размера кеша в 256 Мб позволяет торренту писать на диск большими порциями, не терзая его постоянно. В общем сейчас я полностью доволен этой конфигурацией.
Теперь что касается системы резервирования. Как я уже писал, я не стал заморачиваться со сложными системами, с рейдами и прочей фигней. Как говорил мой бывший босс, в линуксе уже все есть. Если там чего-то нет, то Вам это не нужно. Кстати, я в значительной степени поддерживаю это утверждение :). Итак, я создал нового пользователя bkp и создал на втором диске папку Backup, куда будут резервироваться необходимы данные. Доступ к этой папке на запись оставил только этому пользователю, чтобы ничего оттуда случайно не потереть. После этого создал простенький скрипт, состоящий из одной строчки, запускающей rsync, и добавил этот скрипт в cron на выполнение раз в 10 минут. Все. Если мне надо добавить новые источники в бекап, то я просто добавляю в скрипт еще одну строчку с путем источника. Cron каждые 10 минут запускает этот скрипт, который очень быстро при помощи rsync синхронизирует папки. Очень удобно, что в случае удаления файлов на источнике, rsync можно настроить не на удаление этих файлов в бекапе, а на их перенос в специально предназначенную для этого папку. И все это делается за пять минут написанием буквально двух строчек. Очень удобно. Кстати, если кому интересно, весь скрипт выглядит вот так:
rsync -rtb --delete --backup-dir deleted /mnt/TB1/Photo /mnt/TB2/Backup
Теперь что касается проигрывания медиафайлов. Совершенно случайно я узнал о таком проекте как XBMC. Мне он показался практически идеальным ПО для создания медиацентра. Там есть все, что мне нужно, и еще столько же прикручивается сверху при необходимости. Итак, XBMC - это по сути специализированный медиапроигрыватель, поддерживающий безумное количество форматов и с интерфейсом, заточенным под медиацентры и управление с пульта. Кроме этого туда спокойно приделываются онлайн интернет-каналы. И очень классной фичей, с которой я пока что до конца не разобрался, называемой скраппером. Скраппер - это модуль, который на основании названия файлов, папок и тэгов обращается на специализированные сайты вроде last.fm или kinopoisk.ru и получает оттуда информацию о фильмах, музыке, артистах и т.д. В итоге вы просто закачиваете файл «Кофе и сигареты.avi», а в режиме медиатеки у Вас отображается фильм с обложкой, информацией о режиссере и т.п. Очень впечатляет.
Для XBMC я создал отдельный аккаунт, который загружается автоматически и не требует пароля при входе. В домашней папке пользователя xbmc я создал файл .xsession, где прописал строку запуска “xbmc --standalone”. Теперь после загрузки сервера можно в течение 3-х секунд выбрать пользователя, если необходимо войти под полноценным аккаунтом. Если пользователя не выбрать, то автоматически загружается xbmc. При этом загружается быстро и без всего лишнего.
Что же касается пульта, то говорят, что xbmc легко приделываются почти любые пульты. Я обратил внимание на пульт от PlayStation 3 и пульт Microsoft MCE Remote. Однако пока что решил не покупать, т.к. под андройд существует отличная программа для XBMC, которая позволяет, находясь в домашней WiFi сети управлять медиацентром с телефона. Большое преимущество такого подхода в том, что, наконец, то сбудется мечта многих людей - на пульт от телевизора можно будет позвонить :)
И пару слов про настройку прав. Знаю, что у многих возникают трудности с пониманием того как это работает в Linux. На самом деле все очень просто. Сейчас я расскажу как я настроил права у себя. В общем концепция следующая. В системе существует несколько пользователей. Есть основной пользователь egor. Он входит в sudoers и имеет возможность выполнять команды через sudo c правами суперпользователя. Все операции выполняются через него. Есть пользователь bkp, единственная задача которого - делать бэкап. Соответственно, из-под него запускается скрипт бэкапирования. Директория, куда делается бекап и все ее содержимое принадлежит ему. Umask данного пользователя 022, соответственно, кроме него изменять файлы и папки в директории с бекапом не может никто. Следующий пользователь - tbdsk. Основное назначение данного пользователя - быть владельцем файлов, находящихся на медиадисках. Так как оба диска расшарены через SAMBA и настроены в режиме доступа guest only, т.е. для доступа к ним не требуется вводить пароль, то все изменения, сделанные через SMB, также производятся под этим пользователем. Т.е. guest account = tbdsk в конфигурации smb.conf. Umask данного пользователя через /etc/profile настроен в 002. И в группу tbdsk включены пользователи egor и debian-transmission. Т.е. все файлы, созданные пользователем tbdsk, будут доступны для изменения пользователям egor и debian-transmission. Теперь про пользователя debian-transmission. Этот пользователь был создан автоматически при установке торрент-клиента transmission. Соответственно, все файлы, закачанные при помощи transmission принадлежат этому пользователю. Чтобы их можно было изменять через шару из-под винды, я включил в группу debian-transmission пользователей egor и tbdsk. А также настроил umask 002. Вот в общем-то и все, что я делал с правами.
Вся настройка заняла у меня пару дней включая курение мануалов, чтение форумов и учитывая почти полное отсутствие свободного времени. Системой очень доволен. Думаю, что если нет желания переплачивать за дорогие готовые системы, собрать свою систему с нуля будет отличным вариантом для любого, кто хоть немного представляет себе как работает компьютер.