Synology nas and linux

Сборка недорогой домашней NAS-системы на Linux

Я, как и многие другие пользователи MacBook Pro, столкнулся с проблемой недостачи внутренней памяти. Если говорить точнее, то используемый мной ежедневно rMBP был оснащен SSD объемом всего 256GB, чего, естественно, надолго не хватало.

А когда я плюс ко всему стал записывать видео во время своих полетов, ситуация только усугубилась. Объем заснятых материалов после таких полетов составлял 50+ GB, и мой несчастный SSD на 256GB очень скоро заполнился, вынудив меня приобрести внешний диск на 1TB. Тем не менее, спустя один год, и он перестал справляться с генерируемыми мной объемами данных, не говоря уже о том, что недостаток избыточности и резервного копирования делали его неподходящим для размещения важной информации.

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

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

Быть может проще купить?

Итак, нам известно, что мы хотим получить, остается вопрос как?

Сначала я ознакомился с коммерческими решениями и рассмотрел, в частности, компанию Synology, которая, как предполагалось, предоставляет лучшие NAS-системы потребительского уровня на рынке. Однако стоимость этого сервиса оказалась достаточно высока. Самая дешевая система с 4-мя отсеками стоит $300+, и при этом жесткие диски в комплект не входят. Кроме того, сама внутренняя начинка такого комплекта не особо впечатляюща, что ставит под вопрос ее реальную производительность.

Тогда я и подумал: а почему бы не собрать NAS-сервер самому?

Поиск подходящего сервера

Если собираешься комплектовать такой сервер, то в первую очередь необходимо найти правильное железо. Для данной сборки должен вполне подойти подержанный сервер, так как для задач хранилища нам не потребуется особой производительности. Из необходимого же нужно отметить большой объем RAM, несколько SATA коннекторов и хорошие сетевые карты. Поскольку мой сервер будет работать в месте моего постоянного проживания, то и уровень шума тоже имеет значение.

Свои поиски я начал с eBay. Несмотря на то, что там я нашел много подержанных Dell PowerEdge R410/R210 стоимостью менее $100, имея опыт работы в серверном помещении, я знал, что эти блоки 1U издают слишком много шума и для домашнего использования не подойдут. Как правило, сервера формата tower чаще менее шумны, но, к сожалению, на eBay их было выставлено немного, и все они были либо дорогие, либо маломощные.

Следующим местом для поиска стал сайт Craiglist, где я нашел человека, продававшего подержанный HP ProLiant N40L всего за $75! Я был знаком с этими серверами, которые даже в подержанном виде обычно стоят в районе $300, так что я отправил продавцу письмо в надежде, что объявление еще актуально. Узнав, что так оно и есть, я, недолго думая, направился в Сан Матео, чтобы забрать этот сервер, который уже с первого взгляда меня однозначно порадовал. У него был минимальный износ и, за исключением небольшого налета пыли, все остальное было отлично.

Фото сервера, сразу после покупки

А вот спецификация приобретенного мной комплекта:

  • CPU: AMD Turion(tm) II Neo N40L Dual-Core Processor (64-bit)
  • RAM: 8 GB non-ECC RAM (установлен предыдущим владельцем)
  • Flash: 4 GB USB Drive
  • SATA Connectors: 4 + 1
  • NIC: 1 Gbps on-board NIC
Читайте также:  Как переустановить драйвера клавиатуры windows 10

Стоит ли говорить, что несмотря на возраст в несколько лет, спецификация этого сервера по-прежнему превосходит большинство вариантов систем NAS, предлагаемых на рынке, особенно по оперативной памяти. Несколько позже я даже сделал апгрейд до 16 GB ECC с увеличенным объемом буфера и повышенной защитой данных.

Выбор жестких дисков

Теперь у нас есть отличная работоспособная система и осталось подобрать для нее жесткие диски. Очевидно, что за те $75 я получил только сам сервер без HDD, что меня не удовлетворило.

Проведя небольшое исследование, я выяснил, что для работы с NAS-системами в круглосуточном режиме 24/7 лучше всего подходят HDD WD Red. Для их покупки я обратился на Amazon, где приобрел 4 экземпляра объемом по 3 TB. По сути, вы можете подключить любой предпочтительный HDD, но обратите внимание, чтобы они были одинакового объема и скорости. Это поможет вам избежать возможных проблем с производительности RAID в перспективе.

Настройка системы

Думаю, что многие будут использовать для своих NAS-сборок систему FreeNAS, и в этом нет ничего плохого. Однако, несмотря на возможность установки этой системы на своем сервере, я предпочел использовать CentOS, поскольку система ZFS on Linux изначально подготовлена к продакшен-среде, и вообще управление Linux-сервером мне более знакомо. Кроме того, меня не интересовал модный интерфейс и функции, предоставляемые FreeNAS – мне было достаточно массива RAIDZ и совместного использования AFP.

Установить CentOS на USB достаточно просто – достаточно указать USB в качестве источника загрузки, и при запуске мастер установки проведет вас по всем ее этапам.

Сборка RAID

После успешной установки CentOS я также установил ZFS on Linux, следуя перечисленным здесь шагам.

По завершении этого процесса я загрузил модуль ZFS Kernel:

И создал массив RAIDZ1 при помощи команды zpool :

Обратите внимание, что здесь я использую ID жестких дисков вместо их отображенных имен ( sdx ), чтобы уменьшить шанс сбоя их монтирования после загрузки из-за смены буквенного обозначения.

Я также добавил ZIL и кэш L2ARC, выполняющиеся на отдельном SSD, разбив этот SSD на два раздела: 5GB под ZIL и остаток под L2ARC.

Что касается RAIDZ1, то он может выдержать отказ 1 диска. Многие утверждают, что данный вариант пула не следует использовать из-за вероятности выхода из строя второго диска в процессе пересборки RAID, что чревато потерей данных. Я же пренебрег этой рекомендацией, поскольку регулярно делал резервные копии важных данных на удаленном устройстве, и выход из строя даже всего массива может повлиять лишь на доступность данных, но не их сохранность. Если у вас нет возможности делать резервные копии, то лучше будет использовать решения, наподобие RAIDZ2 или RAID10.

Убедиться в успешности создания пула можно, выполнив:

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

Отсюда вы можете выбрать создать один или несколько датасетов для хранения данных. Я создал два, один для бэкапа Time Machine и второй для общего хранилища файлов. Объем датасета Time Machine я ограничил квотой в 512 GB, чтобы предупредить его бесконечный рост.

Оптимизация

Эта команда включает поддержку сжатия ZFS. Сжатие задействует минимум мощности CPU, но может существенно улучшить пропускную способность I/O, поэтому всегда рекомендуется к использованию.

С помощью этой команды мы уменьшаем количество обновлений до atime , чтобы уменьшить генерацию IOPS при обращении к файлам.

По умолчанию ZFS on Linux использует для ARC 50% физической памяти. В моем случае, когда общее число файлов невелико, этот объем можно безопасно увеличить до 90%, так как другие приложения на сервере выполняться не будут.

Затем при помощи arc_summary.py можно убедиться, что изменения вступили в силу:

Настройка повторяющихся задач

Я использовал systemd-zpool-scrub для настройки systemd-таймеров на выполнение очистки раз в неделю и zfs-auto-snapshot для автоматического создания снимков состояния каждые 15 минут, 1 час и 1 день.

Установка Netatalk

Netatalk – это открытая реализация AFP (Apple Filing Protocol). Следуя официальной инструкции по установке для CentOS, я буквально за пару минут получил собранный и установленный пакет RPM.

Читайте также:  Формат микрофона windows 10

Настройка конфигурации

Обратите внимание, что vol dbnest является в моем случае серьезным улучшением, так как по умолчанию Netatalk пишет базу данных CNID в корень файловой системы, что было совсем нежелательно, поскольку моя основная файловая система выполняется на USB, в связи с чем работает относительно медленно. Включение же vol dbnest приводит к сохранению базы данных в корне Volume, который в этом случае относится к пулу ZFS и уже на порядок производительнее.

Включение портов в Firewall

sudo firewall-cmd —permanent —zone=public —add-port=afpovertcp/tcp
Если все было настроено верно, то ваша машина должна отображаться в Finder, и Time Machine тоже должна работать.

Дополнительные установки
S.M.A.R.T мониторинг

Рекомендуется отслеживать статус ваших дисков с целью предупреждения их отказа.

Демон для ИБП

Мониторит заряд ИБП APC и выключает систему, когда заряд становится критически мал.

Аппаратный апгрейд

Спустя неделю после настройки системы, я начал все больше беспокоиться о том, что в сервере установлена память без ECC. К тому же в случае с ZFS дополнительная память для буферизации будет весьма кстати. Поэтому я снова обратился к Amazon, где приобрел 2x Kingston DDR3 8GB ECC RAM за $80 каждый и заменил десктопный RAM, установленный предыдущим владельцем. Система с первого раза загрузилась без каких-либо проблем, и я убедился в том, что поддержка ECC была активирована:

Результат

Результат меня очень порадовал. Теперь я могу постоянно загружать 1Gbps LAN соединение сервера копированием файлов, и Time Machine работает безупречно. Так что, в общем и целом, настройкой я доволен.

  1. 1 * HP ProLiant N40L = $75
  2. 2 * 8 GB ECC RAM = $174
  3. 4 * WD Red 3 TB HDD = $440

Итого = $689

Вот теперь я могу сказать, что цена того стоила.

Источник

Превращение Synology NAS в игровой сервер

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

Как уже ясно из названия этой статьи, речь пойдет о настройке Synology NAS в роли игрового сервера.

Achtung — в статье много скриншотов (скриншоты кликабельны)!

Перед тем как приступить, вот список инструментов которые нам понадобятся:

Synology NAS — тут ограничений я не вижу, думаю подойдёт любой, если нет планов держать сервер на 10к игроков.

Docker — особых навыков не требуется, достаточно образно понимать принцип работы.

На данный момент (апрель 2020) на LinuxGSM доступно 105 игровых серверов.
Весь список можно посмотреть тут https://linuxgsm.com/servers.

Steam — маркет с играми.

Игровой сервер LinuxGSM имеет интеграцию с SteamCMD, то есть игровой сервер LinuxGSM можно будет использовать только для игр из Steam.

Установка Docker на Synology NAS

На этом этапе все просто, переходим в админ панель Synology, дальше в «Package centre», находим и устанавливаем Docker.

Запускаем и видим примерно такую картину (у меня уже установлен этот контейнер)

Далее переходим в вкладку «Registry», вбиваем в поиск «gameservermanagers», выбираем образ «gameservermanagers/linuxgsm-docker» и жмём на кнопку «Download».

После переходим в вкладку «Image», ждём окончание загрузки образа и жмём на кнопку «Launch».

В открывшемся окне нужно перейти в «Advanced Settings», дальше в вкладку «Network» и отметить галочку «Use the same network as Docker Host».

Остальные настройки, например, такие как «Container Name», меняем на свое усмотрение.
Container Name — как не трудно догадаться, это имя контейнера, оно дальше пригодится. Рекомендую назвать как-то лаконично, для примера пусть будет «test».

Далее жмём кнопку «Apply» или «Next» несколько раз до завершения настройки.

Переходим в вкладку «Container» и видим новый запущенный (если нет, запускаем) контейнер.
Тут его можно останавливать, запускать, удалять и проводить другие действия.

Настройка Docker контейнера LinuxGSM

Перед тем как подключиться к Synology NAS через SSH, надо активировать сам SSH доступ в админ панели.

Дальше необходимо использовать внутренней IP адрес Synology NAS сервера для подключения через SSH.

Читайте также:  Лучшая windows для lenovo

Переходим в терминал (или другой любой аналог, например под Windows это PuTTY) и используем следующую команду:

В моём случае это выглядит так

После авторизации надо выполнить команду для перехода в сам контейнер «test» (поле «Container Name» в настройках Docker) под пользователем «root»

Перед самой установкой «LinuxGSM» нужно провести некоторые действия.

Установим пароль для пользователя «root»

Далее обновим все пакеты

Ожидаем окончание процесса…

Далее установим нужные утилиты

Поскольку, под «root» выполнять разные действия не самая лучшая идея, добавим нового пользователя «test».

И разрешим новому пользователю использовать «sudo»

Переключаемся на нового пользователя «test»

Установка и настройка LinuxGSM

Рассмотрим пример настройки LinuxGSM на примере «Counter-Strike» он же «CS 1.6» https://linuxgsm.com/lgsm/csserver

Переходим на страницу инструкцией «Counter-Strike» linuxgsm.com/lgsm/csserver.

Во вкладке «Dependencies» копируем код под «Ubuntu 64-bit».

На момент написания статьи этот код выглядит так:

В процессе установки нужно согласится с «Steam License»:

Переходим в вкладку «Install» копируем код c 2-го шага (1-й шаг пропускаем, пользователь «test» уже есть):

И запускаем установку:

Если все прошло в штатном режиме, увидим заветное «Install Complete!»

Запускаем… и видим ошибку «Multiple IP addresses found.»

Дальше надо явно указать серверу какой IP ему использовать.

В моём случае это:

Переходим в папку, путь к которой был в сообщении как «location»:

И смотри какие фалы есть в этой папке:

Копируем содержимое файла «_default.cfg» в файл «csserver.cfg»:

И переходим в режим редактирования файла «csserver.cfg»:

И заменяем IP адрес, который был предложен, в моём случае это «192.168.0.166».

Получится как-то так:

Зажимаем сочетание клавиш:

И после предложения сохранить жмём:

Возвращаемся в папку пользователя «test»:

И снова пробуем запустить сервер. Теперь сервер должен запуститься без проблем:

Для просмотра более детальной информации воспользуемся командой:

Из важных параметров стоит отметить:

  • Server IP: 192.168.0.166:27015
  • Internet IP: xxx.xx.xxx.xx:27015
  • Config file: /home/test/serverfiles/cstrike/csserver.cfg

На этом этапе игровой сервер уже доступен в локальной сети.

Настройка переадресации IP адреса

Играть по локальной сети хорошо, но играть с друзьями через интернет — лучше!

Для переадресации IP адреса, который получил роутер от провайдера, используем механизм NAT .

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

Для удобства и стабильности работы желательно заполучить статический IP адрес.

Поскольку у меня роутер «TP-Link Archer C60», то я привожу пример настройки переадресации, так как это реализовано в моём роутере.

Для других роутеров, я предполагаю, настройка переадресации устроена похожим образом.

Тут всё просто — необходимо указать переадресацию с внешнего IP адреса на внутренний IP адрес сервера для двух портов:

В админ панели моего роутера это выглядит так

Вот и всё, после сохранения настроек роутера, игровой сервер будет доступен в сети по внешнему IP адресу для указаных портов!

Дополнительные настройки на примере CS 1.6

На примере CS 1.6 хотел бы дать несколько полезных советов.

Есть два файла для конфигурации сервера

Первый находится тут:

Второй находится тут:

Первый файл содержит общие настройки, такие как IP адрес, карта для первой загрузки сервера и т.д.

Второй файл содержит настройки команд который можно выполнять через консоль «Counter-Strike», например «rcon_password» или «sv_password».

Во втором файле я рекомендую установить пароль на подключение к серверу через CVar «sv_password» и установить пароль для управления с консоли самого сервера через CVar «rcon_password».

Список всех CVar переменных можно посмотреть тут http://txdv.github.io/cstrike-cvarlist

Так же скорее всего будет необходимость установить дополнительные карты, например «fy_pool_day».

Все карты для CS 1.6 находятся тут:

Находим нужную карту, загружаем прямо на сервер (если в архиве, разархивируем), перемещаем файл с расширением «.bsp» в папку с файлами «

/serverfiles/cstrike/maps» и перегружаем сервер.

Кстати, все доступные команды сервера можно посмотреть так

Я доволен результатом. Все работает быстро и не лагает.

LinuxGSM имеет много дополнительных настроек, например, интеграцию c Telegram и Slack для оповещений, но некоторый функционал ещё требует доработок.

Источник

Оцените статью