Как собрать nas сервер своими руками
Перейти к содержимому

Как собрать nas сервер своими руками

  • автор:

Что такое свой NAS и как его начать делать?

Современный и доступный NAS — понятие довольно растяжимое. Для чего он нужен — для дома или офиса, его размеры, мобильность, стоимость, программное обеспечение, все эти и другие вопросы так или иначе определяют конкретную модель и сферу применения. Рассмотрим то, что будет интересно всем — это системы хранения для дома или малых рабочих групп. Причем существуют не только ограничения по стоимости и локальной доступности, но также и простое желание собрать что-то своими руками. Мы постарались разобраться в ситуации, проанализировать существующие решения и, возможно, предложить свой вариант развития, который будет интересен и тем, кто хочет купить готовое решение, и тем, кто смотрит на NAS как на потенциальное устройство для самостоятельной сборки от железа до софта.

Пропустим "Зачем нужен NAS?” и перейдем к требованиям, от которых мы отталкивались:

  • Доступность — тратить на NAS без дисков больше 50 тысяч рублей слишком расточительно;
  • Модернизация — возможность добавить диски, поменять процессор, увеличить память;
  • Начальный уровень — насколько пользователь подготовлен к тому, чтобы поставить софт или элементарно собрать железо;
  • Универсальность — возможность не только хранения данных, но и установки медиа-сервера, продвинутого менеджера фотографий, докера.

Готовый NAS начального уровня

Несмотря на ограничения, NAS начального уровня широко представлены и доступны, в основном это продукция Synology, QNAP, WD и т.д.

Модель

Цена

Диск

Процессор

Память

RAID

Комментарий

руб

шт

Marvell, 800 МГц, 2 ядра

Realtek 1400 МГц, 4 ядра

Celeron 2000 МГц, 2 ядра

Realtek 1400 МГц, 4 ядра

Realtek 1400 МГц, 4 ядра

Realtek 1400 МГц, 4 ядра

Realtek 1400 МГц, 4 ядра

Realtek 1400 МГц, 4 ядра

Annapurna Labs Alpine AL-212, 1700 МГц, 2 ядра

0, 1, 5, 6, 10, JBOD

Celeron 1700 МГц, 2 ядра

ARM v8 quad-core 1.4ГГц

0, 1, 5, 6, 10, JBOD

Realtek 1400 МГц, 4 ядра

Не совсем NAS. В продаже отличается размером дисков и количеством: 1 или 2 диска. Стоимость за границей — $190 на 4 ТБ. В РФ — 25тр

Realtek 1400 МГц, 4 ядра

Realtek 1400 МГц, 4 ядра

0, 1, 5, 6, 10, JBOD

Celeron 2700 МГц, 2 ядра

Marvell, 1300 МГц, 2 ядра

1200 МГц, 2 ядра

Marvell 6281 1,2 ГГц

Цены ориентировочные. Первая версия таблицы была сделана 3 месяца назад, и за это время цены заметно изменились.

Из полученной таблицы можно сделать следующие выводы:

  • Аппаратное обеспечение практически всех устройствах оставляет желать лучшего, если его сравнивать с популярными одноплатными компьютерами.
  • Размер корзины не превышает четырёх дисков.

При этом готовые NAS предлагают достаточно простой вариант установки, что особенно характерно для Synology и Qnap.

Самодельный DIY NAS

Рассмотрим наиболее нетипичный случай, а именно сборка NAS самостоятельно — DIY NAS.

Самый простой вариант — NAS, собранный на основе x86 компьютера

В статье @Cloud4Y, разработчикам удалось собрать NAS за 17 тысяч рублей. Компоненты брали на Авито, на Али и антресолях. Получилась корзина для четырех дисков. При кажущейся простоте решения, существует один недостаток — это повторяемость сборки и порог входа. Найти и закупить компоненты, подобрать аналоги в случае чего, собрать, накатить ОС и желаемые сервисы — всё это требует времени и знаний. Да и стоимость может колебаться, особенно если брать новые компоненты.

Для энтузиастов, которые хотят собрать NAS самостоятельно, на Хабре есть цикл статей от @artiom_n. Там приведено много интересных моментов сборки NAS, а также полезной информации о возможных подводных камнях.

Еще один вариант любителей DIY — решения на базе одноплатных компьютеров, преимущественно с ARM архитектурой

Можно найти большое количество инструкций, шилдов и конструкторов для Raspberry Pi, Orange Pi и других популярных платформ. На Хабре есть неплохой обзор из 2021 года. Как пример такого подхода — NAS PiBox. Без дисков стоит 300$, а тесты показывают достойную производительность. Помимо железа предлагается своя операционка и облачные сервисы. Существенное ограничение — нет поставок в РФ.

Также существует неплохое руководство, как спроектировать NAS на базе практически любого одноплатника и распечатать корпус на 3D принтере

В отсутствии подходящих интерфейсов, таких как SATA и PCIe, в этом примере диски подключаются с помощью SATA-USB2.0 адаптеров. Безусловно вариант очень простой, но непонятно насколько надежный.

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

Тем не менее, всегда интересно оценить те или иные решения. С этой целью мы планируем в будущем опубликовать ряд статей с тестированием и оценкой ряда интерфейсов. Например, мы уже проводим тестирование подключения дисков с помощью мостов между PCIe и SATA, а также подключение дисков с помощью SATA расширителей. Надеемся, что нам удастся в ближайшее время свести результаты в статью.

Облачные хранилища

Может возникнуть резонный вопрос — а зачем мне своё хранилище, если можно использовать облако? Ведь облачное хранилище обладает рядом очевидных преимуществ:

  • Очень простое подключение. Не нужно практически ничего настраивать. Зачастую достаточно просто создать аккаунт, внести плату и поставить приложение.
  • Это удобно! Фотографии и файлы всегда под рукой через приложения или веб-интерфейс. Автозагрузка настраивается в два клика.
  • Стоимость. Не нужно одномоментно выкладывать 30 тысяч рублей. Можно платить помесячно и, в случае чего, легко отказаться от продления подписки.

Но не всё так радужно.

  • Гарантии. Как говорил Мюллер в известном фильме: “Верить никому нельзя! Мне можно.” За последний год мы убедились, что крупные игроки особенно подвержены влиянию международной политической обстановки. И где гарантия, что ваш облачный провайдер завтра не откажет вам в услугах?
  • Надёжность. Безусловно, ведущие компании тратят достаточно сил, что бы защитить свою инфраструктуру от взлома. Однако недавний случай с утечкой исходного кода Яндекса в очередной раз обращает внимание, что подобные инциденты происходят даже у таких крупных игроков на рынке облачных сервисов, вне зависимости от их территориальной или национальной принадлежности.
  • Приватность. Предположим злоумышленники не смогли пробить киберброню облачного сервиса. Но ваши фотографии и документы всё ещё хранятся на удаленных серверах. Использование их для таргетированной рекламы — это самое безобидное, что приходит в голову. Принимая условия сервиса вам полностью приходится полагаться на его гарантии и надеяться, что ваши данные не будут удалены, изменены, доступны третьим лицам без вашего согласия. Это точно не решение для настоящего параноика!
  • Ограниченность. Что не говори, но это всего лишь хранилище файлов, и оно не предоставляет свободы выбора дополнительных сервисов и приложений, которые можно накрутить вокруг своих данных.

Свести данные о ценах на облачные хранилища в одну таблицу оказалось сложно ввиду запутанности тарифов. Мы попробовали и предлагаем оценить результат:

Сервис

Продажи в РФ

Цена 1

Цена 2

Цена 3

Цена 4

Цена 5

Комментарий

500ГБ/год

1ТБ/год

2ТБ/год

3ТБ/год

4ТБ/год

Дешевле при разовой оплате за год или 2. Предлагаются разные возможности подписки.

Довольно гибкие цены.

Можно купить пожизненный план за деньги примерно в 4 раза больше, чем на год

Тарифы отличаются количеством пользователей и опциями

Дополнительно MS Office и др.

Если отбросить в сторону акции, то для России стоимость 2ТБ в год выходит 5-8 тысяч рублей. В нагрузку идут дополнительные преимущества, вроде безлимита для автоматически загружаемых фотографий и видео, удобные приложения. Условия довольно выгодные, но с рядом описанных выше рисков и других проблем.

Хочешь сделать NAS хорошо — разработай его сам

Сведя воедино общую ситуацию в мире, цены на готовые решения и справедливую паранойю, мы пришли к выводу, что в этой сфере есть что улучшить! Тем более опыт разработки подобных устройств у нас есть. Требования к устройству были сформулированы следующим образом:

  1. Простота производства. Нужно подобрать наиболее доступные компоненты, которые с меньшей вероятностью будут подвержены санкциям или проблемам с логистикой.
  2. Модернизация. Хотелось бы иметь возможность улучшить CPU, память, максимальное количество дисков и внешний вид с минимальными затратами.
  3. Доступность софта. В сети есть масса ПО, позволяющего расширить функциональность NAS. Необходимо предоставить возможность легко устанавливать и запускать этот софт.
  4. Удобство. В базовом исполнении наш NAS должен просто быть готов к работе, без дополнительных танцев с бубном и поисков решений в интернете.
  5. Гибкость. Хочется предоставить возможность не только заменить процессор, но и напечатать кастомный корпус, встроить сенсорный дисплей, вывести RGB подсветку и т. д. Другими словами — предоставить свободу творчества при сохранении удобства базовой версии устройства.

С учетом вышеперечисленных требований составили таблицу с техническими характеристиками варианта NAS, который мы планируем довести до серийного продукта в ближайшее время:

Название

Характеристика

Собираем недорогой NAS своими руками для дома и семьи

В отдельном ролике подробно было разобрано, что такое NAS, какие у них бывают характеристики, за что отвечают различные фишки и зачем оно вообще такое надо. Вот видео:

В комментариях резонно замечали, что проще и дешевле собрать NAS самому на базе обычного компьютера. В этом есть смысл как минимум экономический — нынче готовые сетевые хранилища стоят очень даже не мало. Поэтому сейчас будем собирать сетевое хранилище «на минималках»: функциональное, но очень бюджетное.

Главные параметры компьютера под NAS для дома

Если и собирать сетевое хранилище на базе компьютера, то не первого попавшегося, а правильного.

  1. Процессор (или чипсет материнки) со встроенной графикой . Если избавимся от дискретной видеокарты, то избавимся и от лишнего вентилятора на ней вместе с шумом. Да, можно собрать NAS без видеоадаптера вообще, но не факт, что любая старая материнка будет готова запускаться в таком режиме.
  2. Приоритет материнским платам малого формата, желательно mATX или mini-itx. Чем крупнее материнка, тем обычно кучерявее чипсет, чтобы вывести всевозможные разъёмы на мать. В нашем домашне-бюджетном случае это излишне.
  3. Твердотельные конденсаторы на материнской плате. На моей памяти, твердотельники начали ставить со времён DDR3, то есть уже в начале 2010-х. Нет ничего плохого в обычных электролитах, просто твердотельные конденсаторы видятся более надёжными.
  4. Наиболее низкий TDP процессора. Выбирайте самые холодные процессоры из линейки. Селерон вместо пентиума, атлон вместо ряженки и т.д. Производительность процессора в сетевом хранилище не очень-то важна, а вот теплоотдача существенна.
  5. Серверное оборудование идёт нахер! Просто поверьте, серверные решения очень шумные, особенно стоечные, особенно 1U. Пересмотрите видео выше: там практически в самом начале включают стоечный сервер и да — он реально так гудит.
  6. Охлаждение строго 4-pin вентиляторами. Это те самые, что умеют подстраивать скорость автоматически. Не факт, что такие вертушки будут в купленном компьютере, но если материнка не поддерживает 4-pin, это проблема.
  7. Больше SATA-портов! Допустимый минимум — 4 порта (один на системный диск, два под накопители), хотя можно обойтись двумя (если грузить систему с USB-флешки). Идеальный вариант — 6 портов.
  8. Гигабитный ethernet на плате. Это вообще-то не проблема, потому что гигабитные сетевые карты на платах ставятся уже лет пятнадцать.
  9. Больше жёстких дисков разумного объёма. Если есть возможность взять пару одинаковых — хорошо, можно их задействовать под зеркальный RAID-массив для надёжного хранения данных. Но ещё лучше, если дисков будет больше двух. И необязательно одинаковых.

Какие диски выбрать для NAS

Так как мы договорились собирать бюджетное домашнее сетевое хранилище, то и диски должны быть бюджетными и домашними. Не обязательно переплачивать за оптимизацию под RAID или NAS, брать самые вместительные или самые быстрые. В домашнем сетевом хранилище диски не должны быть качественными и дорогими — они должны быть объёмными и бюджетными. А это как раз домашний сегмент, а не SOHO и не энтерпрайз. У каждого производителя дисков есть «домашняя» серия: у Western Digital — blue; у Seagate — Barracuda; у Toshiba — P300. Подробнее про специализацию дисков рассказано в ролике.

Сколько дисков нужно для домашнего сетевого хранилища

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

  • Первый диск может быть не самого большого объёма — на нём должны храниться все данные, которые очень ценные для вас. Большую часть времени этот диск будет простаивать, потому что…
  • Второй диск должен быть среднего объёма — именно на нём будет храниться вообще вся информация, как уникальная и ценная, так и не очень важная. Именно сюда будут качаться торренты, именно здесь будут общие ресурсы на чтение-запись, именно этот диск будет впухать в первую очередь (и, скорее всего, именно он первым выйдет из строя). Но это не страшно, ведь всё самое важное будет периодически архивироваться со второго диска на первый.
  • Третий диск — самый большой по объёму. Главное файлохранилище больших объёмов данных, которые редко нужно изменять. Тут можно держать коллекцию фильмов и музыки, софта и прочего, что вы не планируете удалять. На этот диск придётся меньше операций записи, он будет почти read-only.

RAID или не RAID

С точки зрения домашнего пользования RAID-массив — это расточительство. Вы как бы переплачиваете за большее количество дисков, а пользуетесь меньшим пространством. Конечно, если дисков достаточно много, то можно настроить зеркальный RAID с первым диском, чтобы ещё лучше защитить ценную, уникальную информацию. А можно добавить ещё один диск и настроить зеркало уже со вторым, основным. А дальше — вообще забубенить зеркала на всё, что можно, но это уже не совсем бюджетно и точно не по-домашнему. Так что если выбирать между RAID или не RAID — я предлагаю RAID. Но если дисков мало и душит жаба — можно обойтись периодической архивацией. А если ценных данных нет — можно и не архивировать.

Что лучше для NAS: Windows или Linux

Последний пункт в сборке конфигурации — определиться с системой, на которой всё это будет работать. Linux менее удобен для неподготовленного пользователя, но систему можно установить на флешку и сэкономить на системном накопителе, а ещё освободить один SATA-порт. Windows даст больше возможностей, но и потребует значительно больше вычислительных ресурсов. Можно поднять NAS на системе постарше, хоть на Windows XP, но тогда встаёт вопрос безопасности данных и уязвимости NAS. Специализированные дистрибутивы Linux для создания NAS не имеют графического интерфейса, а вся настройка происходит через web-панель — для таких задач достаточно конфигурации «два ядра, два гига», а то и меньше. С другой стороны, я так и не смог заставить из консоли работать софт для записи оптических дисков и виртуализировать машину на Windows. Для себя я решил вопрос довольно просто: отдельный бюджетный NAS крутится на линуксе, отдельная машинка помощнее круглосуточно гоняет нужный мне софт под виндой. Ну а раз у нас дешёвый NAS, то настраивать будем Linux. Так и требования к железу будут поменьше, сильно поменьше.

Собираем недорогой NAS из компьютера

Материнская плата для сетевого хранилища может быть любой. Но лучше выбирать что-то, на чём никак нельзя собрать «современный мощщный игровой ПК» — такой утиль ценится меньше, комплектухи на него вагон за бесценок, но коллекционеров раритета это оборудование ещё не интересует. То есть это примерно эпоха LGA755 у Intel или AM2 у AMD. Мамки на DDR2 продаются нынче за бесценок, а производительности для домашнего NAS хватит. Можно бы даже рассмотреть времена DDR1, но в таком случае есть вероятность столкнуться с устаревшим поколением SATA-портов и более медленной работой дисков. Впрочем, если есть вариант урвать по дешману DDR3 или даже DDR4 — дерзайте! Это всё же оверкил для таких задач, но почему нет?

В качестве базы для сетевого хранилища я выбрал имеющуюся mini-itx плату от foxconn с несъёмным процессором Intel atom, двумя слотами под оперативную память стандарта DDR2 и двумя же SATA-портами на мамке. Из разъёмов — только самое нужное. Из интересного — один порт PCI и нормальное взрослое питание через колодку ATX, а не собственный проприетарный разъём, как у некоторых.

Процессор для сетевого хранилища должен быть холодным, многоядерным и 64 битным. Мне выбирать не приходится — Intel Atom D425 впаян в мать намертво.

Оперативная память для NAS должна быть набрана модулями одинакового объёма, частоты и таймингов, и занимать все слоты из возможных. В моём случае это пара модулей по 1 Гб. И да, 2 гигабайта для NAS — это нормально. Даже один гигабайт оперативки — для NAS нормально. А вот если бы ставили актуальную Windows — надо бы минимум 4 Гб. Кстати, если на материнке четыре разъёма — ещё лучше: можно взять модули меньшего объёма, чтобы получить нужное количество гигабайт. А это наверняка выйдет дешевле.

Охлаждение для NAS получилось нестандартное. Я не смог подобрать вентилятор подходящего размера под свой радиатор, так что сделал охлаждение из штатного воздуховода, вкорячив туда боксовый кулер от какого-то Intel, точнее вентилятор из этого комплекта — он на 4 контакта и управляется автоматически, что снижает общий уровень шума.

Блок питания для сетевого хранилища подойдёт вообще любой. Вполне хватит на 300 Вт любого офисно-китайского — такие блоки продаются за бесценок. Главное, чтобы БП был относительно свежим, если рассматриваете вторичку. Лучше взять безымянного блестящего китайца, чем потасканный годами бренд. Главное — чтобы вентилятор был побольше — он будет работать на меньших оборотах и издавать меньше шума.

Корпус для NAS тоже может быть любой. Желательно выбирать что-то из старых офисных моделей, где корзина под диски занимает всю переднюю часть и упирается в основание корпуса, а блок питания расположен с верхней стороны, на выдув. Внешние USB и аудиовыходы вам не понадобятся. Безвинтовые крепежи, салазки, корзины и прочее — не нужно. Ну и приличный внешний вид не помешает. Обращайте внимание на кнопки включения и индикацию — светодиоды не должны быть сильно яркими, а кнопка включения желательна побольше.

Тут можно столкнуться с мнением, что корпус для сетевого хранилища должен быть очень компактным, стильным и красивым. Если вы не готовы собирать NAS в обычном корпусе — не выделывайтесь и дуйте в магазин за готовым NAS. Нестандартный корпус будет не самым бюджетным, под него потребуется определённое железо, а если в ходе эксптуатации что-то из электроники сдохнет — будут проблемы. Унификация — наше всё!

SATA-контроллер для NAS я вкорячил ровно по двум причинам. Во-первых, у меня был контроллер. Во-вторых, было желание подключить под хранилище сразу четыре диска (они тоже были), а на мамке было всего два SATA. Сата-контроллер позволит помимо прочего создать аппаратный RAID-массив, который любой системой дальше будет видеться как единое пространство. Я НЕ РЕКОМЕНДУЮ делать аппаратный RAID. Если контроллер сдохнет — придётся искать точно такой же, шансы спасти данные будут ниже. Обычный программный, soft-RAID подойдёт лучше. И да, несмотря на то, что диски нормально определяются и контроллером и в биосе — не желательно грузить систему с диска, который подключён в контроллер — используйте тот, что подключен к материнке.

Жёсткие диски для сетевого хранилища я использовал те, что у меня были. А именно, пара дисков на 2 Тб для важных данных в зеркало, один диск с протухшим смартом (S.M.A.R.T. — self-monitoring, analysis and reporting technology ) на 2 Тб для неважных данных в формате read-only и ещё один на 1 Тб для повседневного использования.

По дискам ещё важный момент — отсутствие вибрации. Решайте этот вопрос как хотите: ставьте уплотнительные резинки, салазки, подвешивайте диски на верёвочке. Или изначально выбирайте такие, которые не гудят при работе.

Последний шаг: настройка материнки для NAS

Перел тем, как приступить к установке системы и настройке NAS, установим в настройках BIOS нужные опции:

  • Halt on errors = NONE — опция Halt on не позволяет плате грузить систему при возникновении некоторых ошибок, типа неподключенной клавиатуры, отсутствующего монитора и прочего. Эта опция обычно включена в режим All, что для нормального компьютера вообще не проблема. Но нам бы надо заставить включаться компьютер только с подключённым кабелем питания и сетью, без всего остального. То есть надо переключить опцию в режим None. Не во всех платах есть возможность отключить проверку на ошибки полностью, так что будьте внимательны.

В моём случае опции NONE не было, но была возможность отключить проверку наличия клавиатуры и мыши. Я отключил проверку, чтобы система грузилась в любом случае.

Внимательно читайте подсказки, название опций может отличаться. Например, у меня в режиме Enabled (Включено) происходит буквально «включать игнор на периферию».

  • Restore on AC power loss = Power on — параметр Restore on AC power loss задаёт поведение компьютера при подаче электропитания после отключения. В нашем случае нужно выставить Power on, чтобы самосборный NAS включался сам после отключения электроэнергии и при её возвращении. Как вариант можно выбрать опцию Laststate, что переводится «делай, как было». Это удобный вариант для редкоиспользуемых сетевых хранилищ: в случае установки значения Last state NAS включится после перебоя с энергией только если и до него он работал, а если был выключен — так выключенным и останется.

Остальные параметры можно менять (или не менять) по необходимости. Например, можно включить для отдельных SATA-разъёмов опцию горячего отключения, чтобы извлекать диск не завершая работу компьютера (сделал так на виндовой машинке). Можно отключить USB-порты, неиспользуемые контроллеры типа COM, Floppy и LPT, жёстко задать загрузочный накопитель и до кучи запаролить вход в биос, чтобы никто ничего не поменял.

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

Всё, мы собрали NAS и базово настроили само железо. Следующий уровень: установка софта, в моём случае — OpenMediaVault или коротко OMV.

Смотрите также

  • Мод платы MSI H410M-A PRO: ставим держатель под батарейку BIOS
  • Что такое RAID 0 и зачем он нужен
  • Внешний SSD Adata SE760 становится внутренним: как разобрать и использовать?
  • Измельчитель пищевых отходов, он же диспоузер: будущее наступило, пора его принять
  • Вторая жизнь старого блока питания ATX — можно ли его использовать в новом компьютере?

Лучше маленький лайк и репост, чем большое спасибо в комментах. По этой причине комментарии выключены, а кнопки репостов — вас ждут. Пользуйтесь, прошу 🙂

Промо

Рубрики

  • Hey, DJ!
  • In English
  • RC-хобби
  • RetroTech
  • Авто-вело-мото
  • Автомобильное
  • Аудиореклама
  • Без рубрики
  • Вернопись
  • Вспомнилось
  • Гад-же-ты
  • Граммар-наци
  • Дорогой дневник
  • Еда и вода
  • Железо
  • Здоровье
  • Игротека
  • Из ненаписанного
  • Информационная безопасность
  • Кino
  • Компьютерное
  • Копирайтинг
  • Копия спасена
  • На е-бизнес
  • Обзор программ
  • Перевод
  • Перчёная ветчинка
  • Полезные советы
  • Полезные ссылки
  • Рекламное
  • Саморазвитие: GTD, TM и пр.
  • Сделай сам
  • Туризм и путешествия
  • Финансы и кредит
  • Хранить вечно
  • Шоппинг

Черный ящик для дома: собираем NAS своими руками, часть 1

Будь я работником макаронной фабрики, то сейчас ломал бы голову над тем, куда девать этак 500 упаковок макарон по полкило штука. К счастью, когда начальство решает премировать сисадмина “натурой”, получение в подарок фургона сухого пайка не грозит, хотя имеются неплохие шансы стать обладателем нескольких десятков килограмм откровенного лома. Однако в этот раз мне повезло – в качестве корпоративного подарка я получил пару новеньких WD Re 2004FBYZ на 2 терабайта каждый, и блок питания Thermaltake Smart DPS G 750W. Вот только что делать с дисками? Ставить в домашний комп – слишком расточительно даже для меня, все-таки Enterprise Class, да и нужды особой нет. Куда практичнее на их основе собрать NAS. Разумеется, не какую-нибудь файлопомойку, а высоконадежное хранилище – эдакий “черный ящик” для критически важных данных. Плюс к этому, можно совместить приятное с полезным – раз уж принято решение целиком перевести инфраструктуру на “умные” БП (а именно так Thermaltake позиционирует линейку Smart DPS), неплохо бы воочию увидеть, как это работает.

Но есть одна загвоздка – на данный момент фирменное приложение существует только под Windows. Для корпоративного ЦОДа эта операционная система хороша, но для домашнего файлового хранилища ужасна и крайне нерентабельна. Посему, я решил сделать два поста. В этом мы поднимем NAS на основе Windows Server 2008 r2 (убедившись, что “окошки” и “домашний NAS” – понятия несовместимые), и посмотрим, на что способна DPS G App 2.0. Во втором же соберем бюджетный NAS на основе NAS4Free, создав по-настоящему надежную систему.

Предисловие

Дабы не быть закиданным помидорами, сразу хочу предупредить – статья рассчитана, прежде всего, на непрофессионалов. Хотя почитать о Smart Power Management от Thermaltake будет интересно даже опытным админам и энтузиастам, основной материал ориентирован на людей, не желающих переплачивать за громкое имя, покупая готовые решения, и при этом далеких от системного администрирования (программистов, дизайнеров, веб-разработчиков и т.д.). Если ваша рука достаточно тверда, чтобы собрать компьютер из комплектующих, но при этом вы не хотите долго и муторно разбираться с серверным ПО, а консоль видели только в страшных снах – этот материал для вас. Если же захотели посмотреть на SPM Cloud, чтобы решить, насколько эта система может оказаться полезной именно вам, крутите пост до подзаголовка “Насколько умен интеллектуальный блок питания?”. Кстати, предупреждаю – под катом много фото и скриншотов.

Простенько, но со вкусом

Сразу оговорюсь – я не стремился собрать домашний NAS только лишь исходя из стоимости. Подбирая комплектующие, я ориентировался на то, насколько компоненты подходят для реализации поставленной задачи, при этом не забывая о качественных характеристиках. Можно ли собрать бюджетный NAS с меньшими затратами? Можно. Но при этом также можно потерять в производительности и удобстве, чего мне бы не хотелось. В итоге, получилось следующее.

Корпус. Роль корпуса для хранилища данных взял на себя Thermaltake Core V1 – симпатичный, цельнометаллический кубик с тихим 200 миллиметровым вентилятором за передней фальш-панелью.

Сзади имеются посадочные места еще под пару вентиляторов на 80 мм, благодаря чему сетевое хранилище можно будет сделать по-настоящему холодным.

Как и в других современных моделях, для блока питания здесь отведен нижний отсек. Защиту от пыли обеспечивает металлический фильтр.

Еще одним преимуществом Core V1 являются 4 съемные стенки (боковые, крыша и дно), что значительно облегчает процедуру сборки. Каждая панель крепится парой винтов, которые легко откручиваются вручную. Также мне весьма понравилась реализация корзин для дисков – каждый из четырех фиксирующих винтов получил собственный резиновый демпфер, неплохо гасящий вибрацию:

Материнская плата. Здесь мой выбор пал на GIGABYTE GA-J1800N-D2H со встроенным Intel Celeron. Мощности двухъядерного процессора с базовыми 2.41 GHz для сетевого накопителя данных хватит за глаза (хотя Windows Server загрузит его на 100%, но ведь “окошки” – не наша целевая платформа), он достаточно экономичен и не требует активного охлаждения (отпадает необходимость покупки кулера).

Несмотря на дешевизну, Gigabyte внедрили в продукт свои фирменные фишки: технологию High ESD, обеспечивающую защиту от электростатики для микросхем и LAN, а также Anti-Surge IC, предотвращающую выход системной платы из строя из-за скачков напряжения – все, что нужно для действительно надежной системы. Единственный спорный момент – расположение внутреннего USB-разъема вплотную к радиатору: с ним попросту неудобно работать.

Оперативная память. Ничего особенного – обычные Transcend 2Gb DDR-III 1333Mhz в форм-факторе SO-DIMM. Если где-то в чулане завалялся старый ноутбук, можете снять модули с него.

Блок питания. Добротный Thermaltake Smart DPS G 750W, рассчитанный на производительные ПК и серверные платформы, сертифицированный по стандарту 80 PLUS Gold. Для полноценного сервера или рабочей станции – в самый раз, для сборки NAS своими руками – слишком мощный, однако на время эксперимента можно себя побаловать, установив нитрос на малолитражку.

Разумеется, в устройстве подобного класса предусмотрено модульное подключение кабелей. Из встроенных – только коннекторы материнской платы и процессора (разделяемый 4+4 pin, что пришлось очень кстати при сборке).

Дополнительное удобство обеспечивают плоские кабели, хотя даже они уместились в компактном Core V1 с трудом – все же корпус на подобное не рассчитан. Среди них оказался и провод для подключения Thermaltake Smart DPS G 750W к внутреннему разъему USB. Очевидно, он обеспечивает взаимодействие бортового 32-битного микроконтроллера с сенсорами материнской платы, и необходим для полноценного функционирования Smart Power Management. Однако о том, насколько система мониторинга оправдывает себя и какие фичи предоставляет, мы поговорим несколько позже.

Охлаждение. Два тихих нерегулируемых TITAN DC FAN. Раз мы хотим собрать тихий NAS без лишних затрат, такой вариант станет оптимальным.

HDD. Хотя дареному коню в зубы не смотрят, считаю нужным все же сказать пару слов о виновниках торжества – сладкой парочке WD Re 2004FBYZ. Ведь, как ни крути, именно от качества жестких дисков зависит сохранность информации.

Если обратиться к спецификациям производителя, выглядит все очень вкусно. Так, винчестеры оборудованы акселерометрами и датчиками давления, на базе которых реализована технология Rotary Acceleration Feed Forward (RAFF), обеспечивающая защиту от линейной и угловой вибрации в реальном времени, что повышает как надежность, так и производительность. Будучи серверным решением, WD Re 2004FBYZ имеют и TLER (Time Limited Error Recovery), ограничивающую время коррекции во избежание ошибочного выпадения диска из RAID-массива. Добавьте к этому заявленное время наработки на отказ в 1.2 миллиона часов, и мы получим практически идеал.

Впрочем, о правдивости красивых слов и мудреных аббревиатур сложно судить, пока не попробуешь продукт самостоятельно. И здесь я могу сказать лишь то, что набираю эту статью на компьютере, внутри которого вот уже 6-ой год трудится пара терабайтных Caviar Black. Да и 2.5-дюймовый малыш в стареньком Dell Inspirion 1501, ныне отданном родителям, чувствует себя ничуть не хуже. Собственно, и перевод инфраструктуры именно на WD на текущем месте работы состоялся именно с моей подачи – с этим брендом у меня сложились давнишние и весьма продуктивные отношения. Я использую их диски уже не первый год, они никогда меня не подводили, и на сегодняшний день я не вижу ровным счетом ни одной причины изменять своим предпочтениям.

Флешка. Любой USB-накопитель объемом 8 Гб. Разумеется, оптимально подойдут компактные “затычки”, корпус которых практически не выступает над разъемом.

Теперь из этого добра нужно собрать сетевое хранилище – здесь все достаточно просто. Если вы хоть раз самостоятельно собирали компьютер, то справитесь без каких-либо затруднений. Отмечу лишь несколько ключевых моментов:

  • Дополнительные кулеры следует ставить на выдув – тогда мы добьемся проточной циркуляции воздуха спереди назад и оптимального охлаждения;
  • Когда будете устанавливать материнскую плату, следите за металлической перемычкой над отверстием USB 3.0 на задней панели – действуя неосторожно, ее можно загнуть и, таким образом, блокировать разъем;
  • Корзины для дисков крепятся одним-единственным винтом, однако установлены они достаточно жестко и сразу могут не податься. Для извлечения корзины ее необходимо потянуть по направлению от корпуса и немного вниз;
  • На материнской плате не предусмотрено подключение для внешних USB 3.0, можете смело прятать этот провод в нижний отсек корпуса.

Занимательная математика

Пожалуй, стоит взять небольшую пазу и посчитать, насколько бюджетной получилась наша сборка. Итак, приступим:

  • Корпус: Thermaltake Core V1 – 3 764 руб.
  • Блок питания: как бы ни был хорош Thermaltake Smart DPS G 750W, для небольшого файлового хранилища он слишком роскошен. В будущем я планирую поставить туда Chieftec HPS-350NS – 1560 руб.
  • Материнская плата: GIGABYTE GA-J1800N-D2H – 4436 руб.
  • Оперативная память: Transcend SO-DIMM 2Gb DDR-III 1333Mhz x 2 – 3040 руб.
  • Охлаждение: TITAN DC FAN (80 мм, 2000 об/мин) x 2 – 404 руб.
  • USB-накопитель: 300 рублей.

Я намеренно не учитывал HDD, чтобы сравнить с продукцией Synology. К примеру, DiskStation DS216+ обойдется вам в 28 173 рубля, при этом под капотом мы увидим весьма скромную начинку: Intel Celeron N3050 1.6 GHz, RAM – 1 Gb, все те же два посадочных места 3.5 мм для дисков. Если бы WD Re 2004FBYZ не достались мне даром, то я заплатил бы еще 17 660 рублей, а конечные затраты приблизились к 31 тысяче – стоимость “голой” платформы популярного бренда. Да, наша сборка менее компактна, зато более производительна и надежна, и это практически за полцены! А если есть разница, затем платить больше? На этом небольшое лирическое отступление завершено – время двигаться дальше и вводить в строй нашу машину!

Windows Server – самое ужасное решение для домашнего NAS

Даже если вы в глаза не видели *nix’ы, даже если при виде командной строки вас бросает в дрожь, даже если “окошки” кажутся привычными и вселяют чувство безопасности, не вздумайте поднимать личное файловое хранилище на основе Windows. Почему? Расскажу по ходу данного материала. Но сперва разберемся с установкой.

Ставить Windows Server 2008 r2 будем, разумеется, с флешки. Для создания загрузочного накопителя можно обратиться к следующей инструкции, или воспользоваться утилитой Windows USB/DVD Download Tool, которую также рекомендуют в официальном блоге Майкрософт. Тоже самое можно осуществить и с помощью Rufus, которая, к тому же, сможет проверить память на битые блоки (одного-двух проходов будет вполне достаточно), либо осуществить установку в режиме Windows To Go, что позволит запускать ОС непосредственно с девайса.

Однако последний вариант – не лучшая идея, учитывая особенности работы операционной системы и требуемое для нее дисковое пространство, поэтому давайте сделаем обычную загрузочную USB-флешку.

Теперь можно приступать к установке, и здесь мы видим первый подводный камень – размер. Хотите поставить редакцию Standart с визуальным интерфейсом? Будьте добры выделить 24 гигабайта. В случае с парой дисков, это – слишком расточительно. В остальном какие-либо нюансы отсутствуют: как и в версии для домашнего использования, все сводится к “Далее-Далее-Готово”.

Войдя в систему, вы увидите следующий довод “против” – необходимость активации. Я не планирую использовать Windows Server в качестве основы для NAS – все это, прежде всего, эксперимент, поэтому ограничусь триалом, который любезно предоставляют сами Microsoft. Запускаем regedit, ищем ключ реестра

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform\Activation\Manual

меняем его значение на единицу и перезагружаем машину. Теперь пробный период увеличился с 3-х до 30 дней. В общей сложности, его можно продлить до полугода при помощи сценария slmgr.vbs. Команда slmgr.vbs -dli поможет узнать, сколько времени осталось до окончания текущей лицензии, а slmgr.vbs –rearm сбросить период оценки (не более трех раз). Процесс можно автоматизировать, создав небольшой XML-файл.

Еще одно “фе” я бы хотел высказать в сторону “Центра обновлений”. К Windows Server 2008 r2 SP1 впоследствии было выпущено более 300 заплаток разного калибра. На установку их всех потребуется несколько часов, при этом патчи конфликтуют с добавлением ролей сервера. То есть, обновляться необходимо либо до, либо после, процесс отнимает уйму времени, и загружает систему по максимуму:

С обновлениями связан еще и прискорбный баг. После установки апдейтов вы можете обнаружить, что место на системном диске стало пропадать само собой. Если подметите утечку, зайдите в папку C:\Windows\Temp. Почти наверняка вы увидите такую картину:

Дело в сбое архивации логов обновлений – система плодит поврежденные архивы со страшной скоростью, после каждой ошибки запуская процедуру заново. Лечится это удалением всех файлов из папки C:\Windows\Logs\CBS, после чего можно спокойно почистить каталог Temp.

Однако двинемся дальше. И первое, что необходимо сделать – настроить автологин, благо NAS все равно будет находиться в домашней сети, а каждый раз вводить пароль – слишком утомительно. Отправляемся в “Пуск” –> “Выполнить”, и вбиваем команду control userpasswords2.

Выбрав группу “Администраторы”, снимаем галочку с “Требовать ввод имени пользователя и пароля”, сохраняем выбор.

Теперь разберемся с удаленным подключением. Проще всего воспользоваться встроенным менеджером рабочего стола. Для его активации пройдите в “Пуск” –> “Панель управления” –> “Система и безопасность” –> “Настройка удаленного доступа”, выберите второй или третий пункт (если планируете вывести NAS в интернет). Также стоит задать более простое и лаконичное имя компьютера на одноименной вкладке.

Альтернативой способен стать LiteManager – многофункциональная и бесплатная для частного пользователя программа, обладающая кучей полезных функций: передача файлов, прямой доступ к консоли, редактору реестра, диспетчеру задач, и рядом других. При установке серверной части на NAS задайте пароль доступа, который будет использоваться при входе:

Если планируете выпускать домашний NAS в интернет, можно дополнительно настроить IP-фильтр:

Убедитесь в том, что LM Server находится в автоматическом режиме запуска:

Также не забудьте задать статический адрес для нашей машины в свойствах адаптера:

где 192.168.1.1 – адрес роутера. Наконец, включите сетевое обнаружение и общий доступ к файлам и папкам в “Панель управления” –> “Сеть и интернет” –> “Центр управления сетями и общим доступом” –> “Изменить дополнительные параметры общего доступа”.

После описанных выше операций, можно со спокойной совестью подключить NAS к домашней сети. Если дальнейшее управление будет осуществляться через LM Viewer, установите приложение на свой компьютер и добавьте новое соединение, нажав на плюс на панели инструментов и заполнив необходимые поля:

где 192.168.1.250 – IP-адрес NAS. Либо воспользуйтесь встроенной в Windows утилитой подключения к удаленному рабочему столу.

Теперь давайте создадим раздел для хранения информации. Идем в “Диспетчер сервера” –> “Хранение” –> “Управление дисками”, щелкаем правой кнопкой мыши по неразмеченному пространству на системном диске, выбираем “Создать простой том” и, следуя подсказкам мастера, создаем основной раздел “Данные”, отформатированный в NTFS.

Можно приступать непосредственно к поднятию файлового сервера. Открываем в диспетчере “Роли” –> “Добавить роли”.

После приветственного окна мастера, появится список доступных. Нас интересуют “Файловые службы”:

В следующем окне ставим галочку напротив “Диспетчер служб файлового сервера”, по желанию можно включить “Службу Windows Search”.

В “Наблюдение за хранилищем” помечаем наш раздел “Данные”:

Здесь же, нажав кнопку “Параметры”, настраиваем наблюдение за томом. Для удобства, можно добавить отчеты о дубликатах и больших файлах.

В “Параметрах отчета” задаем путь для хранения записей:

Если подключили Windows Search, выбираем индексацию тома “Данные”:

Подтверждаем выбор и ждем окончания установки. После этого нам станут доступны возможности диспетчера управления файлами (расположен в “Пуск” –> “Администрирование”). Из всего спектра предлагаемых инструментов, для домашнего использования пригодится управление квотами.

Как видим, раздел “Данные” уже получил по умолчанию “мягкую” квоту. Это означает, что в случае его заполнения более, чем на 85%, нам придет оповещение, однако запись файлов в NAS по-прежнему будет доступна. Квоты можно задавать не только для разделов, но и для отдельных директорий. Давайте создадим на диске “E” папку “Music”, и зададим для нее предельный размер. Нажимаем “Создать квоту” и выбираем путь:

В “Настраиваемых свойствах” укажем лимит в 300 Гб и выберем вариант “Жесткая”, чтобы меломания не привела к ситуации, когда на диске не останется места для регулярных бэкапов и важных документов:

Добавим пороговое значение в 85% и зададим способ оповещения:

В результате получим:

После нажатия кнопки “Создать” система предложит сохранить настройки в шаблон. Впоследствии это позволит нам применять аналогичные правила к другим папкам в один клик.

Чтобы новая квота отобразилась в списке, следует перенастроить фильтр. Кликните по одноименной ссылке и выберите значения “Все”:

Теперь новая квота также видна на главном экране:

Другая опция, которая может оказаться полезной в том случае, если помимо вас файловое хранилище используют жена, дети и любимый кот – управление блокировкой файлов. Она позволяет исключить загрузку файлов определенных расширений в те или иные каталоги.

Давайте создадим директорию Backup и запретим захламлять ее музыкой и видео. Для этого достаточно щелкнуть по “Создать фильтр блокировки файлов”, выбрать нужный каталог и, в нашем случае, предустановленный шаблон “Блокировать файлы аудио и видео”.

В шаблоне указаны практически все наиболее распространенные форматы, однако вы всегда можете добавить новые в соответствующем разделе:

Щелкнув по “Изменить свойства шаблона”, попадаем в меню настройки.

Здесь, нажав кнопку “Изменить”, можно вызвать раздел добавления новых расширений и удаления существующих, а также ознакомиться с предустановленными:

Осталось сделать нашу папку доступной по сети. Для этого отправляемся в “Пуск” –> “Администрирование” –> “Управление компьютером” –> “Общие папки” –> “Общие ресурсы” и создаем новый. Далее просто следуем подсказкам мастера. Сперва указываем путь к папке:

На следующем шаге задаем ее параметры (можно оставить по умолчанию):

Настраиваем разрешения доступа. Для локальной сети можно открыть доступ для всех, для интернета – оставьте только администраторам:

Теперь папка “Music” будет доступна прямо с любого компьютера вашей домашней сети – достаточно набрать адрес \\NAS\Music в проводнике и авторизоваться. Аналогичную процедуру проделаем и для каталога Backup, а заодно проверим, как работает блокировка файлов, попытавшись загрузить в него фильм.

Отказано в доступе – все работает отлично.

Остался последний штрих – создание программного RAID-1. В этом нет ничего сложного: идем в “Диспетчер сервера” –> “Хранение” –> “Управление дисками”, щелкаем правой кнопкой по системному диску (“Диск 1” в нашем примере), и выбираем “Преобразовать в динамический диск”.

Затем поочередно щелкаем по каждому тому, выбирая в меню “Добавить зеркало”. Все разделы “отразятся” на второй диск и начнется ресинхронизация:

И здесь еще один довод “против”. Дело в том, что процесс ресинхронизации для HDD на 2 терабайта будет длиться более 5 часов. Диски будут сверяться полностью, независимо от того, сколько информации записано, а их загрузка будет стремиться к 100%. Конечно, WD Re способны выдержать и не такое испытание, вот только нормально использовать NAS в этот период вы не сможете: скорость записи/чтения значительно упадет.

Кстати о скорости: давайте оценим быстродействие массива в реальных условиях. Вот что получилось у меня при перекидывании дискографии Rammstein в сетевую папку:

Совсем неплохо, но можно реально лучше, в чем нам поможет убедиться NAS4Free. Бесплатная и нетребовательная к ресурсам операционка оптимальна для домашнего NAS и способна работать с файловой системой ZFS, где зеркалирование дисков реализовано куда более разумно и надежно. При этом процесс первичной синхронизации отсутствует в принципе. Именно поэтому я рекомендую NAS4Free для организации домашнего файлового хранилища. Впрочем, о ней мы поговорим в следующем посте, а теперь приступим к самому интересному.

Насколько умен интеллектуальный блок питания?

Вы любите квесты в реальности? Я вспомнил про них потому, что мое знакомство с DPS App и Smart Power Managment началось как раз с этакого миниквеста. Google услужливо подсказал страницу для скачивания приложения, нажав на заветную кнопку я увидел вот такую форму:

Ничего необычного – многие компании просят ваш E-mail для новостной рассылки. Однако введя свой адрес, вместо утилиты я получил:

Даже без переводчика ясно, что запрашиваемая страница не найдена. В чем же может быть дело? Оказывается, все работает немного не так. Сперва необходимо создать аккаунт в системе, подтвердить регистрацию, и лишь затем вы сможете скачать утилиту в разделе “Продукция”.

Еще один важный нюанс – если вы придерживаетесь золотого правила составления паролей, используя в том числе специальные знаки, то здесь от такой практики придется отказаться. Проблем с авторизацией на сайте не возникнет, однако DPS App попросту не примет кодовую фразу, отобразив ошибку:

Поэтому стоит ограничиться комбинацией латинских букв и цифр. Впрочем, не будем судить строго: пока система находится на стадии бета-тестирования, подобные баги вполне закономерны.

Теперь давайте наконец скачаем и установим само приложение. Обращаю внимание, что для его корректной работы требуется Microsoft .NET 4.5, Adobe Flash Player ActiveX, а также актуальная версия Java. После запуска утилита предложит войти в систему для синхронизации с SPM, что мы и сделаем.

Оборудование определяется автоматически (в ранних версиях серийный номер приходилось указывать вручную). После успешной авторизации появится вот такое окно:

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

Теперь посмотрим, а что, собственно, нам предлагает приложение. В ассортименте – целый набор сканеров, позволяющих контролировать следующие параметры:

  1. Общий вольтаж и напряжение по каждой из подключенных линий;
  2. Напряжение на центральном процессоре и видеокарте;
  3. Силу тока;
  4. Общую мощность.

С помощью круглых стрелочек можно включить режим графика, отображающего изменения в реальном времени:

Присутствует и датчик температуры БП, где можно выбрать единицы измерения по вкусу:

Также в DPS App доступно управление вентилятором Thermaltake Smart DPS G 750W. В режиме “Производительность” агрегат подберет оптимальные обороты, практически сравняв температуру компонентов блока питания с температурой окружающей среды. Опция “Zero fan” позволяет отключить вентилятор вовсе – хотя сам по себе блок питания чрезвычайно тихий, если ваши домочадцы так и не привыкли к убаюкивающим звукам исправного сервера, данная функция поможет сделать NAS практически бесшумным. Учитывая экономичность нашей системы, активное охлаждение может не понадобиться вовсе. Если же температура превысит критические 80°C, БП автоматически перейдет в интенсивный режим работы.

Пункт “Расходы” позволяет задать тарификацию на электроэнергию и, таким образом, узнать, во сколько вам обходится эксплуатация оборудования. К сожалению, на данный момент поддерживается только одна тарифная зона и только одна валюта – доллар США. Вследствие этого, инструмент годится лишь для использования в ознакомительных целях, о чем утилита любезно предупреждает.

Довольно занятной функцией является возможность отправки данных в социальные сети. Поддерживаются Фейсбук, Твиттер и его китайский аналог Weibo. При щелчке по соответствующей иконке на аккаунте публикуется скриншот открытого в данный момент счетчика. Также доступна отправка картинки на e-mail, но лишь в том случае, если на компьютере предварительно настроен почтовый клиент.

Вкладка “Рекорд” предоставляет куда более интересные возможности. Здесь можно выгрузить отчеты о работе блока питания по датам в формате CSV.

Показания снимаются с периодичностью в одну минуту. В таблице фиксируются все параметры, отображаемые на индикаторах – очень удобно для оценки эффективности системы.

Впрочем, давайте отвлечемся от приложения (весь доступный функционал мы разобрали, за исключением управления подсветкой, которой данная модель не оснащена), и посмотрим, какие возможности предлагает облачная платформа SPM. Но сперва зайдем в “Мой аккаунт” –> “Настройки”:

Если выставить статус “Публичный”, статистика будет отображаться на вкладке “Все выгрузки”, однако доступ к данным будут иметь только юзеры, добавленные в друзья. При включении же службы геолокации, местоположение вашего компьютера будет отображаться на интерактивной карте.

По замыслу разработчиков, Smart Power Managment должен стать не просто облачным сервисом мониторинга, но полноценной социальной платформой. Используя функции позиционирования, вы сможете заводить знакомства с другими пользователями и обмениваться опытом посредством личных сообщений. Учитывая, что целевая продукции Thermaltake – профессионалы и энтузиасты, в будущем такая система способна послужить прекрасной альтернативой тематическим группам и форумам, позволяя в пару кликов отыскать коллег и единомышленников по всему миру.

Перейдем к вкладке “Мои выгрузки”. Сюда загружаются сформированные приложением отчеты.

Щелкнув по ссылке “Загрузить данные…” попадаем в визуальный интерфейс. Тут представлена вся информация, сохраненная в текстовых отчетах, но уже в виде графиков. Можно просмотреть статистику по самому БП, CPU и видеокарте:

Наиболее же интересной является вкладка “Анализ”. Выбрав БП (а платформа позволяет добавить неограниченное количество устройств), попадаем на вот такую страничку:

Первые три вкладки позволяют узнать суммарное время использования блока питания, стоимость электроэнергии и количество затраченных кВт/ч соответственно. Щелкнув по иконке в виде дерева, мы можем оценить экологичность системы:

К сожалению, NAS проработал всего ничего, так что пока еще я не посадил ни единого дерева. Далее можно получить сводную статистику по расходу электричества и стоимости, а также узнать среднюю мощность за выбранный период:

Вкладка “Анализ потребляемой электроэнергии” подскажет, насколько БП подходит для файлового хранилища:

Как и следовало ожидать, нам удалось собрать домашний NAS, энергопотребление которого сопоставимо с обычной бытовой лампочкой.

Последняя вкладка позволяет сформировать план по энергосбережению на основе выбранных параметров. Здесь же можно настроить оповещения для мобильной версии приложения:

Помимо этого, Smart Power Managment позволяет осуществлять удаленное управление питанием компьютера или сервера. Все необходимые инструменты представлены в разделе Remote.

Имеется возможность полностью обесточить или перезагрузить систему (не пугайтесь, соответствующий сигнал будет подаваться на материнскую плату), а также планировать отключение по расписанию:

Перечисленный функционал доступен также в DPS G Mobile App, выпущенной для iOS и Android (Windows Phone закономерно обошли вниманием). И если просматривать статистику на экране смартфона не очень удобно, то реализация удаленного управления домашним NAS придется как нельзя кстати. Все внесенные ранее настройки полностью синхронизируются:

Наиболее же полезной функцией является оповещение об остановке вентилятора, либо перегреве блока свыше 60°C, после чего вы сможете тут же отключить систему, предотвратив выход БП домашнего NAS из строя.

Вместо заключения

Подведем итог. Мы выяснили, что использование Windows в домашнем NAS – это долго, дорого и крайне неудобно. Излишняя прожорливость, длительность настройки, обновления и ресинхронизации, наконец, баги и необходимость приобретения лицензии – все это делает “окошки” пожалуй самым худшим решением для файлового хранилища. Поэтому уже в следующем посте я расскажу о том, что такое NAS4Free и с чем ее едят.

Что же касается платформы Smart Power Managment, могу сказать, что решение уже отлично работает, предлагая вполне достаточный набор инструментов для мониторинга и управления электропитанием. Она способна стать неплохим подспорьем в ситуациях, когда использование профессиональных отраслевых решений является нерентабельным (например, в ходе построения IT-инфраструктуры небольших офисов). Умный БП способен пригодиться и частному пользователю: когда ваш компьютер работает в режиме 24/7, возможность отслеживать изменения удаленно придется весьма кстати, как и тревожная кнопка для отключения системы в экстренных случаях. Но лично мне бы хотелось увидеть более продвинутую систему тарификации с поддержкой нескольких зон и валют – это позволило бы с высокой точностью фиксировать затраты на электроэнергию и планировать бюджет без дополнительного ПО. Если же Thermaltake выпустит версию утилиты под Linux и FreeBSD, ей и вовсе не будет цены. Надеюсь, представители компании читают Хабр – быть может, мои идеи им понравятся и утилиту все же перенесут на *nix’ы.

  • nas своими руками
  • бюджетный nas
  • файловое хранилище
  • собираем сами
  • Системное администрирование
  • Серверное администрирование
  • Резервное копирование
  • Хранение данных
  • Хранилища данных

Домашний NAS своими руками. Часть 1: "Железо" ⁠ ⁠

В прошлом посте Ответ на пост «Домашнее облако» мне задали очень много вопросов и попросили рассказать о постройке домашнего хранилища более подробно. Именно этим я и займусь.

Сразу оговорюсь, что писать я буду не для гуру IT (они и так знают, что и как делать), а для обычных людей. К тому же, как мне кажется, проще и лучше, когда весь материал собран в одном месте и изложен по порядку, поэтому в серии будут описаны и простые вещи, например, создание загрузочной флэшки. Также хочу сказать, что не претендую на 100% истинность в этом вопросе, а делюсь тем, что сделал сам.

Как я уже говорил, в качестве «железной» составляющей домашнего NAS будет использоваться:

Домашний NAS своими руками. Часть 1:

Материнская плата Asrock D1800B-ITX и 8 гигабайт оперативной памяти. Волей случая, я разжился двумя «четверками» SO-DDR3L и решил пустить их в дело: чего добру пропадать?

Домашний NAS своими руками. Часть 1:

Контроллер PCI-E SATA Asmedia 1064, с 4 портами SATA3

Домашний NAS своими руками. Часть 1:

120 гиговый SSD Radeon R5SL128G, купленный за недорого на Авито именно для этих целей. Согласен: покупать б/у винты на Авито – не лучшая идея, и для себя, любимого, лучше так никогда не делать, но, в данном случае, я собираю наглядное пособие, поэтому такой вариант вполне оправдан.

Домашний NAS своими руками. Часть 1:

Жесткие диски: 2 по 80 Гб для RAID1 и 750 Гб для торрент-клиента и закачек. Последний — форм-фактора 2,5”. Повторюсь, для наглядного пособия вполне сгодится.

К тому же, я планирую рассмотреть в отдельном посте замену дисков массива на диски большего объема и, как следствие, расширение его размера, а для этого две «восьмидесятки» случились, как нельзя, кстати.

Домашний NAS своими руками. Часть 1:

Корпус mITX InWin BP655 с блоком питания 200W. У этого корпуса есть одна особенность: в него штатно помещаются только два диска 3.5”, при этом, один из дисков должен быть тонким, поэтому SSD и 750 Гб диск были установлены через переходник в отсек 5.25”.

Немного остановлюсь на количестве жестких дисков. Для себя я делал RAID1 (он же «зеркало») для хранения важных данных: семейный фотовидеоархив, документы для работы жены – то есть, то, что в случае потери будет проблематично, а то и невозможно восстановить. Отдельный диск для торрентов отведен именно по тем же причинам: то, что важно и нужно, переедет на массив, а то, что крутится в закачках и раздачах, в случае потери может быть скачано снова. Вы можете использовать любое количество и конфигурацию дисков по своему желанию: это может быть только «зеркало» из двух дисков, только один диск, два отдельных диска и т.д.

Хочу добавить: очень рекомендую подключать NAS в розетку не напрямую, а через источник бесперебойного питания. Для этой конфигурации хватит самого дешевого бесперебойника мощностью 250 — 350W (350-500 VA).

И еще один момент: пункты меню UEFI указаны для именно этой модели материнской платы, у вас они могут отличаться по названию или расположению. Имейте это в виду.

И еще один вопрос: у меня есть мысль создать сообщество по теме для обмена знаниями и опытом. Если это будет интересно, пишите в комментариях.

10 месяцев назад

Да уж. Сколько постов будет на эту тему 5-6? А можно было всё в один уместить. Если всю воду убрать.

10 месяцев назад

Поднял DSM 7.1 на тонком клиенте с процессором J1800, оперативы 4 гб. Покупал его на авито за полтораху вроде. Мне файлопомойка не нужна, использую нас исключительно в качестве облака, для разных сервисов в докере и плюшек операционки DSM, поэтому стоит 1 ссд на 500гб + внешний хард на 1 тб подцепил через юсб для торрентов, всего хватает) У меня сейчас айпи динамический, замутил дднс и привязал домен 2 уровня. Ляпота ) По поводу шума, тишина от слова полная, едва слышно вибрацию внешнего харда)

И да, по поводу сообщества, очень хорошая идея!

раскрыть ветку
10 месяцев назад

У меня под NAS стоит древний системник 5 гигов АМ2+ 4 ядра. 4 тб хранилище. Жужжит уже года 2. С обслуживанием разумеется.

раскрыть ветку
10 месяцев назад

А если взять адаптер на 20 портов.

Иллюстрация к комментарию

раскрыть ветку
10 месяцев назад

А у меня есть олдовый WD MyBookLive на 3Тб
Родная прошивка скомпрометирована да и не поддерживается ужо лет 5.
Снёс, нашел кастомную прошивку OpenWRT, накатил. Но дальше я оказался недостаточно пряморук и даже с подробными гайдами не выходит это дело оживить и запустить. Вот всё думаю к профессионалам обратиться но не могу определиться куда собственно обращаться.

раскрыть ветку
Похожие посты
1 месяц назад

Ставим 5 звёзд за обмен данными и «Долгий аптайм»⁠ ⁠

Ставим 5 звёзд за обмен данными и «Долгий аптайм» IT юмор, IT, Программирование, Картинка с текстом, Программист, Сервер, Такси, Работа

Показать полностью 1
2 месяца назад

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов⁠ ⁠

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках. Интересно? Тогда жду вас под катом!

  • Не J2ME едины
  • Аппаратные ресурсы
  • Кроссплатформенный рантайм
  • Кроссплатформенный рантайм: Win32
  • Кроссплатформенный рантайм: MRE
  • Кроссплатформенный рантайм: VXP
  • Наконец-то пишем игру
  • Тестируем на реальных девайсах
  • Заключение

❯ Не J2ME едины

Думаю, многие мои читатели помнят о такой платформе, как J2ME. Java-приложения стали фактически основной возможностью расширения функционала телефонов в 2000-х годах. API для них был достаточно хорошо стандартизировано, программы не зависели от архитектуры процессора и ОС устройства, а порог вхождения для написания собственных приложений был довольно низкий и даже новички могли за пару дней написать свою игрушку или какое-нибудь GUI-приложение!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Однако не одним J2ME мы были едины: существовало множество платформ, которые так или иначе пытались занять нишу Java на рынке. Некоторые из них я упоминал в своей прошлой статье о написании 3D-игры под Sony Ericsson с нуля: например, была такая платформа на телефонах Sony Ericsson серии T, как Mophun, а CDMA-телефонами с чипсетами Qualcomm использовалась нативная платформа BREW. Пожалуй, я не буду упоминать о .sis и .cab — поскольку это форматы нативных приложений для смартфонов, а не простых «фичефонов».

В какой-то момент, ближе к 2006-2007 году, прилавки российских официальных ритейлеров (по большей части это были телефоны Fly) и неофициальных продавцов на рынках заполонили различные китайские телефоны, которые предлагали какой-то немыслимый функционал для тех лет за копейки, да ещё и визуально напоминали флагманские модели известных брендов. Пожалуй, одним из самых популярных таких телефонов была Nokla TV E71/E72 (да, именно «нокла»), вышедшая примерно в 2008 году и производившаяся аж до 2011 года! За 2-3 тысячи рублей (это менее 100 баксов), пользователь получал здоровый 2.4" дисплей с разрешением 240×320 весьма неплохого качества (когда в те годы многие продолжали ходить с 176×220), да ещё и с тачскрином, гироскоп, огромный громкий динамик (пусть и не очень качественный), поддержку SD-карточек до 32Гб, нередко фронтальную камеру, а также премиальный дизайн с вставками из алюминия. Частенько китайцы заботливо клали в коробку ещё чехольчик и дополнительный аккумулятор 🙂

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Были даже полные копии существующих устройств от Nokia. Особенно китайцы любили подделывать массовые модели на S40: они были очень популярными и китайцы хотели откусить свой кусок рынка у Nokia. Пусть и рынка серого импорта — очевидно, в салонах связи подделки никто не продавал:

Но была и ложка дёгтя в этой бочке меда: китайские телефоны очень часто не имели поддержки Java, из-за чего многие пользователи разочаровывались в них из-за отсутствия возможности установить необходимые им приложения. Никакой тебе оперы, аськи, игр… Скорее всего, это связано с необходимостью отчислений Sun, а также разработчикам реализации J2ME-машины (JBed/JBlend) и установки чипа флэш-памяти чуть большего объёма.

Но многие пользователи не знали, что такие девайсы не просто поддерживали сторонние приложения, но и умели выполнять настоящие нативные программы, написанные на полноценном C! Всему помешала китайская костыльность и тотальная закрытость. Платформа предполагалась для работы на внутреннем рынке. Для вызова менеджера нативных приложений необходимо было вводить специальный инженерный код в номеронабирателе, предварительно скопировав приложение в нужную папку, а SDK долгое время было платным и доступно только для компаний из Китая. Кроме того, далеко не все приложения могли запустить на конкретном девайсе — были серьезные проблемы с совместимостью.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Всё как вы любите: HiTech-девайсы на фоне ковра, который старше автора лет на 30 🙂

В ранних китайских телефонах использовалась платформа Mythroad (MRP, MiniJ) от китайской компании SkyWorks, которая лицензировала свою технологию производителям чипсетов. Поддержку MRP можно было встретить на телефонах с чипсетами MediaTek, Spreadtrum, а также MStar (и возможно Coolsand). Mythroad предоставлял некоторое API для работы с железом телефона и разработки как UI-приложений, так и игр, кроме того, Mythroad позволял хранить ресурсы в одном бинарнике с основной программой и даже имел какой-то интерпретируемый язык помимо возможности запуска нативного кода. Для работы таких приложений необходимо было скопировать менеджер приложений dsm_gm.mrp и игру в папку mythroad во внутренней памяти устройства или на флэшке, а затем набрать в номеронабирателе код *#220807#, иногда при отключенной первой SIM-карте. Костыльно? Костыльно! Откуда об этом знать среднестатистическому пользователю? Не откуда! Но работало!

Эта платформа поддерживалась на большинстве подделок под брендовые устройства Nokia, Sony Ericsson и Samsung, а также iPhone и на многих китайских кнопочных телефонах 2008-2010 годов.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Ближе к 2010 году MediaTek разработала свою собственную платформу, которая должна была заменить MRP — WRE (VXP). Эта платформа была гораздо шире с точки зрения функционала (например, был доступ к UART) и её API был вполне удобно читаем для программиста, а SDK свободно доступен для всех. Один нюанс всё портил — приложения без подписи привязывались к IMSI (даже не IMEI) симки в девайсе и на некоторых девайсах требовали переподписания под каждую конкретную SIM или патчинг дампа оригинальной прошивки телефона на отключение проверки подписи. Эта платформа поддерживалась на многих кнопочниках и смарт-часиках 2010-2020 годов: к ним относятся новодельные телефоны Nokia, телефоны DNS и DEXP, Explay и т. п. Для запуска приложений достаточно было выбрать файл с разрешением VXP в проводнике и просто запустить его. Но с совместимостью всё равно имелись проблемы: если запустить VXP для версии 2.0 и выше, мы получим лишь белый экран. Ну хоть не софтресет, и на том спасибо!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Далеко не все такие часы поддерживают MRE, смотреть нужно от устройства к устройству

❯ Аппаратные ресурсы

Большинство китайских кнопочных телефонов работает на базе одних и тех же чипсетов. В конце нулевых чаще всего использовались чипсеты MT6225, SC6520 и некоторые чипы от Coolsand. Средние хар-ки девайса были следующими:

  • Процессор: ARMv5 ядро на частоте ~104МГц, ARM926EJ-S. Нет FPU, есть Thumb. Большую часть процессорного времени программа могла забрать себе.
  • ОЗУ: ~4Мб SDRAM. Программам было доступно 512Кб-1Мб Heap’а. Это, в целом, довольно немало для большинства применений.
  • Флэш-память: ~32Мб, пользователю доступно пару сотен килобайт. Да, вы не ослышались, килобайт! Однако можно без проблем использовать MicroSD-флэшки до 32Гб.
  • Дисплей: от 128×128 до 320×480, почти всегда есть 18-битный цвет (262.000 цветов), в случае TV E71/E72 используется очень неплохая TN-матрица с хорошими углами обзора и яркой подсветкой. Иногда есть тачскрин.
  • Звук: громкий динамик, наушники.
  • Аккумулятор: ~800мАч, на некоторых девайсах может быть и 2.000мАч, а то и больше!
  • Ввод: клавиатура, иногда была поддержка QWERTY.
  • Внешние шины: почти всегда был доступен UART, причём его можно было свободно взять прямо с платы — он был явно подмечен! Взять GPIO с проца не выйдет (кроме, возможно, вибромотора), SPI и I2C также напрямую недоступны. Внешние шины можно реализовать с помощью UART через GPIO-мост из микроконтроллера.

В итоге мы получаем очень неплохие характеристики для устройства, которое сочетает в себе сразу всё. На базе такого девайса можно сделать и сигнализацию, и HMI-дисплей с интерфейсом для управления каким-нибудь устройством, и игровую консоль с эмуляторами… да на что фантазии хватает! И это за какие-то 200-300 рублей, если мы говорим о б/у устройстве или 600 рублей, если говорим о новом. Это дешевле, чем собирать девайс с подобным функционалом самому из готового МК (например, RP2040) и отдельных модулей. Кстати, дешевые 2.4" дисплеи на алике — это ни что иное, как невостребованные остатки дисплеев для подобных китайских телефонов на складах! А вы думали, откуда там значки на тачскрине снизу?

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Однако в рамках данной статьи мы не будем ограничиваться лишь теорией и на практике напишем примитивную 2D-игрушку, которая будет работать сразу на трех платформах без каких-либо изменений в коде самой игры: Windows, MRP (Mythroad) и VXP. Но для того, чтобы достигнуть такого уровня абстракции от платформы, нам необходимо написать рантайм, который оборачивает все необходимые платформозависимые функции для нашей игры.

Игрушка будет простой: 2D скролл-шутер с видом сверху, а-ля Asteroids. Летаем по космосу, и стреляем по враждебным корабликам, стараясь не попасть под вражеские лазеры. Всё просто и понятно 🙂

❯ Практическая часть: Кроссплатформенный рантайм

Итак, что нам необходимо от абстракции для такой простой игры? Давайте посмотрим:

  • Графика: очистка экрана, отрисовка спрайтов с прозрачностью (без альфа-блендинга, только колоркей), отрисовка текста. При возможности, желательно использовать нативное API системы для рисования графики, а не городить собственный блиттер. Формат пикселя фиксирован: RGB565 (65к цветов).
  • Ресурсы: хранятся в одном образе с основной игрой. Фактически, все ресурсы упакованы в виде обычных массивов байт в заголовочных файлах. Я пользуюсь вот этой тулзой для конвертации спрайтов в массивы байтов.
  • Звук: воспроизведение хотя-бы одного WAV-потока. Почему одного? Потому что далеко не на всех платформах есть доступ к аппаратному микшеру… да и вообще не везде есть прямой доступ к PCM (привет MRP), иногда разработчики ограничиваются лишь одним каналом для WAV-звука без возможности воспроизведения нескольких аудиофайлов одновременно.
  • Ввод: абстракция от клавиатуры классического моноблока: стрелки, OK, левый и правые софткеи.
  • Стандартная библиотека: не на всех платформах можно вызывать функции напрямую из stdlib. Как минимум в MRP и, например, «эльфах» для Motorola, нет возможности вызывать аллокатор, rand и некоторые другие функции из обычных заголовочников стандартной библиотеки. На таких платформах, системные инклуды дефайнами подменяют стандартные функции на своих реализации:

#define malloc system_alloc #define free system_free

Выглядит всё достаточно просто, верно? Примерно такого набора функций хватит для нашей игры:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

❯ Win32

Давайте же перейдем к реализации рантайма на каждой платформе по отдельности. Начнём с Win32, поскольку адекватно отлаживать игру можно только на ПК.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

На десктопе у нас будет фиксированное окно 240×320, в качестве GAPI будет использоваться аппаратно-ускоренный OpenGL, а для обработки ввода будет использоваться классически GetAsyncKeyState. Реализация точки входа, создания окна и инициализации контекста GL и главного цикла приложения у нас такая:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Реализация отрисовки спрайтов очень примитивная — OGL 1.0, полностью FFP, вся отрисовка — это 2 треугольника, формирующие квад. Спрайт заливается при первом использовании в текстуру, последующие кадры реюзается уже готовая текстура. Фактическая реализация всего рендерера — т. е. функций для рисования «просто картинок», без поддержки атласов, блендинга цветов (З.Ы — длинные листинги будут на пастбине, на Пикабу нет нормального тега для кода):

С вводом тоже всё просто. Есть биндинг кнопок клавиатуры к кнопкам на кейпаде телефона. inGetKeyState предполагается вызывать один раз за кадр, поэтому функция опрашивает ОС о состоянии нажатых кнопок на клавиатуре и назначает состояние виртуальных кнопок относительно состояния физических кнопок на клавиатуре.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

❯ MiniJ

Переходим к реализации рантайма для первой китайской платформы — MRP. Обратите внимание — я использую нативное API платформы для рисования спрайтов. Связано это с тем, что софтварный блиттер работает невероятно медленно даже с прямым доступом к скринбуферу устройства, а в чипсете предусмотрена отдельная графическая подсистема с командбуфером для быстрой отрисовки примитивов и графики:

SDK для MRE можно найти здесь (SKYSDK.zip): оно уже пропатчено от необходимости покупки лицензии. MRP не развивается более 10 лет, поэтому, думаю, его можно считать Abandonware. Компилятор находится в compiler/mrpbuilder.NET1.exe. За китайские SDK в публичном доступе нужно поблагодарить пользователя 4pda AjlekcaHgp MejlbHukoB, который раздобыл их на всяких csdn и выложил в свободный доступ 🙂

У MRP собственная система сборки, основанная на конфигурациях. Поскольку MRP может работать на устройствах с разными платформами и размерами дисплеев, под каждую можно настроить свой конфиг, который пережмет ресурсы в нужный формат. Дабы ничего не ломать, я заюзал абсолютные пути:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Начинаем с функций обработки событий и инициализации, которые вызывает рантайм при старте приложения: mrc_init вызывается при старте приложения, а mrc_event при возникновении события. Вся инициализация очень простая: создаём таймер для обновления и перерисовки состояния игры и вызываем инициализацию игры:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

С вводом тоже никаких проблем нет, нажатия кнопок прилетают как события в mrc_event. Переводим кейкоды MRE в наши кейкоды и сохраняем их состояние:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Опять же, отлаживать MRP-приложение под реальным устройством проблематично, поэтому платформозависимый код должен быть минимальным. Кроме того, обратите внимание, что некоторые функции в MRP зависят от библиотек-плагинов. Линкер слинкует вашу программу, но на реальном устройстве их вызов вывалится в SIGSEGV и софтресет устройства. Также нельзя использовать ничего из стандартной библиотеки именно в стандартных заголовочниках (т. е. stdlib.h, string.h и т. д.), часть стандартной библиотеки реализовывается MRP и дефайнится в mrc_base.h

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Что интересно, защиты памяти толком нет. Если приложение падает в SIGSEGV или портит память — систему, судя по всему, ребутит Watchdog. Защиты памяти никакой, можно напрямую читать и писать в память ядра, а также писать в регистры периферии чипсета. jpegqs, покумекаем над этим? 🙂

Переходим к рендереру. Тут буквально две функции, gClearScreen очищает экран, а gDrawBitmap рисует произвольный спрайт с форматом пикселя RGB565. В качестве ROP используется BM_TRANSPARENT — таким образом, mrc_bitmapShowEx будет использовать левый верхний пиксель в качестве референсного цвета для реализации прозрачности без альфа-блендинга.

void gDrawBitmap(CBitmap* bmp, int x, int y)

mrc_bitmapShowEx((uint16*)bmp->pixels, x, y, bmp->width, bmp->width, bmp->height, BM_TRANSPARENT, 0, 0);

Да, всё вот так просто. Рантайм теперь запускается на реальных китайских девайсах и работает стабильно.

❯ VXP

Теперь переходим к VXP — платформе не менее неоднозначной, чем MRP. Пожалуй, начать стоит с того, что VXP существует аж в трёх версиях: MRE 1.0, MRE 2.0 и MRE 3.0. В MRE 2.0 и выше появилась поддержка плюсов (в MRE 1.0 только Plain C) и довольно интересного GUI-фреймворка, MRE 1.0 же предлагает реализовывать гуй самому. Платформа распространена на большинстве кнопочных телефонов и смарт-часиков на чипсетах MediaTek, примерно начиная с 6235 и заканчивания 6261D. SDK можно скачать вот здесь (см MRE_SDK_3.0).

VXP сам по себе более функционален чем MRE, поскольку ориентирован исключительно на телефоны с чипсетами MediaTek. Но что самое приятное — есть доступ к уарту без каких либо костылей! То есть, если сделать GPIO-мост на условной ESP32, то мы можем получить готовый мощный МК с клавиатурой, кнопками, дисплеем, звуком и т. д. Звучит не хило, да? Кроме того, у нас есть доступ и к BT, и к GPRS, и к SMS без каких либо ограничений.

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Однако в бочке мёда нашлась и ложка дёгтя: для компиляции MRE-приложений необходимо накатывать и крякать довольно старый компилятор ADS, который сам по себе поддерживает только C89 (например, нет возможности объявить переменную в объявлении цикла или середине функции, только в начале, как в Pascal). ADS уже вроде как Abandonware, так что это вроде не наказуемо… но всё равно неприятно.

Кроме того, на некоторых девайсах (в основном, фирменных Nokia а-ля 225), прошивка требует подписи у всех бинарников, либо если бинарник отладочный, то должна быть привязка к конкретному IMSI.

К тому же, каждая программа должна фиксированно указывать в заголовке, сколько Heap-памяти ей необходимо выделить. Оптимальный вариант — ~500Кб, тогда приложение запустится вообще на всех MRE-телефонах.

Зато у VXP есть адекватный симулятор под Windows. Но зачем он нам, если у нас порт игры под Win32 есть? 🙂

Начинаем с инициализации приложения. В процессе вызова точки входа, приложение должно назначить обработчики системных событий, коих бывает несколько. Для обработки ввода и базовых событий хватает всего три: sysevt (события окна), keyboard (физическая клавиатура. Есть полная поддержка QWERTY-клавиатур), pen (тачскрин).

vm_reg_sysevt_callback(handle_sysevt); vm_reg_keyboard_callback(handle_keyevt); vm_reg_pen_callback(handle_penevt);

Переходим к обработчику системных событий. Обратите внимание, что MRE-приложения могут работать в фоне, из-за чего необходимо ответственно подходить к созданию и освобождению объектов. Что важно усвоить с самого начала — в MRE нет понятия процессов и защиты памяти, как на ПК и полноценных смартфонах. Любая программа может попортить память или стек ОС, более того, программа использует аллокатор остальной системы, поэтому если ваша программа не «убирает» после себя, данные останутся в памяти со временем приведут к зависанию. Впрочем, WatchDog делает свою работу быстро и приводит телефон в чувство (софтресетом) за 1-2 секунды. Но как и в случае с MRE, есть приятный бонус: прямой доступ к регистрам чипсета 🙂

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Переходим к обработке событий с кнопок. Тут всё абсолютно также, как и на MRE, лишь имена дейфанов поменялись 🙂

И наконец-то, к графике! Пожалуй, стоит сразу отметить, что более 20-30 FPS на большинстве устройств вы не получите даже с прямым доступом к фреймбуферу. Похоже, это связано с тем, что в MRE довольно замороченная графическая подсистема с поддержкой альфа-канала (только фиксированного во время вызова функции отрисовки картинки/примитивов, сам пиксельформат всегда RGB565) и нескольких слоев. Кроме того, похоже есть ограничения со стороны контроллера дисплея.

Изначально, MRE предполагает то, что все картинки в программе хранятся в формате… GIF. Да, весьма необычный выбор. Однако для работы с пользовательской графикой, есть возможность блиттить произвольные картинки напрямую из RAM. Вот только один нюанс — посмотрите внимательно не объявление следующей функции:

void vm_graphic_blt( VMBYTE * dst_disp_buf, VMINT x_dest, VMINT y_dest, VMBYTE * src_disp_buf, VMINT x_src, VMINT y_src, VMINT width, VMINT height, VMINT frame_index );

dst_disp_buf — это целевой RGB565-буфер. Логично предположить, что и src_disp_buf — тоже обычный RGB565-буфер! Но как бы не так. Документация крайне скудная, пришлось посидеть и покумекать, откуда в обычном 565 буфере возьмется индекс кадра. С подсказкой пришёл пользователь 4pda Ximik_Boda — он скинул структуру-заголовок, которая идёт перед началом каждого кадра. В документации об этом не сказано ровным счетом ничего!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Сначала я реализовал софтовый блиттинг, но он безбожно лагал. Мне стало интересно, почему нативный blt быстрее и… вопросы отпали после того, как я поглядел в ДШ чипсета: тут есть аппаратный блиттинг. И даже с ним девайс не может выдать более 20FPS!

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Для реализации более-менее шустрого вывода графики, необходимо сначала создать канвас (фактически, Bitmap в MRE), создать и привязать к нему layer, получить указатель на буфер слоя и только потом скопировать туда нашу картинку. Да, вот так вот замороченно:

И только после этого всё заработало достаточно шустро 🙂
В остальном же платформа довольно неплохая. Да, без болячек не обошлось, но всё же перспективы вполне себе есть.

На данный момент, этого достаточно для нашей игры.

❯ Пишем геймплей

Рантайм у нас есть, а значит, можно начинать писать игрушку. Хоть пишем мы на Plain-C, я всё равно из проекта в проект использую +- одну и ту же архитектуру относительно системы сущностей, стейтов и т. п. Поэтому центральным объектом у нас станет CWorld, который хранит в себе на пулы с указателями на другие объектами в сцене, а также игрока и его состояние:

typedef struct

int nextSpawn; // In ticks

Система стейтов простая и понятная — фактически, между состояниями передавать ничего не нужно. При нажатии в главном меню на «старт», нам просто необходимо проинициализировать мир заново и начать геймплей, при смерти игрока — закинуть его обратно в состояние меню. Стейты представляют из себя три указателя на функции: переход (инициализация), обновление и отрисовка.

typedef void(CGameStateCallback)();

Поскольку мы хотим некоторой гибкости при создании новых классов противников, то вводим структуру CEnemyClass, которая описывает визуальную составляющую врагов и их флаги — могут ли они стрелять по игроку или просто летят вниз (астероиды), как они передвигаются (зигзагами например) и т. п.

А также описываем игрока:

typedef struct

int health;

int nextAttack;

Всё! Для текущего уровня реализации игры этого достаточно 🙂
Переходим к реализации игровой логики. Вообще, динамический аллокатор в играх для китайских платформ лучше использовать как можно меньше. Heap’а довольно мало (~600Кб), да и не совсем понятно, как этот аллокатор реализован, есть вероятность, что используется аллокатор и куча основной ОС.

Начинаем с реализации полёта кораблика. Для этого он должен реагировать на стрелки и не улетать за границы экрана, а ещё для красоты он должен «вылетать» из нижней границы экрана при старте игры:

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов Опрос, Программирование, Покупка, Китайские товары, Китайцы, Китай, Подделка, Копия, Реплики, Своими руками, C++, 2D, Телефон, Смартфон, Гаджеты, IT, Gamedev, Видео, Без звука, Вертикальное видео, YouTube, Длиннопост

Переходим к динамическим пулам с объектами. Как вы уже заметили, их всего два — враги и летящие снаряды. Реализация спавна врагов/снарядов простая и понятная: мы обходим каждый элемент пула, если указатель на объект не-нулевой, значит объект всё ещё жив и используется на сцене. Если нулевой — значит ячейка свободна и можно заспавнить новый объект:

При обходе пула во время обновления кадра, мы обновляем состояние каждого объекта и если его функция Think вернула true, значит объект больше не нужен и его нужно удалить:

if (enemyThink(world.enemyPool[i]))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *