Домашний файловый сервер linux

/4te.me

Из-за очередного приступа параноии, я решил сменить Google Drive на собственное решение и хранить свои файлики поближе к телу. Выбор был между: поднимать в каком-нибудь DigitalOcean виртуалку и хранить там, или собрать дома свое хардварное решение. Подсчитав сколько будет стоить виртуалка с нужным объемом диска, выбор был сделан в пользу домашнего NAS-сервера.

Выбор

У меня было примерно 100 ГБ данных на момент съезда из Google Drive. Виртуалка в DigitalOcean на 160ГБ стоит 40$ в месяц, то есть в год будет выходить

500$. Дорого. За эти деньги можно дома собрать NAS на терабайт с SSD дисками. Есть ещё вариант брать маленькую виртуалку, и к нему подключить S3 хранилище, но софт, который я планировал использовать, не умеет работать с S3.

Итак, вариант с виртуалкой в облаке я отмёл и пошел смотреть, что нынче есть на рынке домашних NAS серверов. Так как я живу в маленькой квартире, NAS я планировал ставить в жилой комнате, и, если он будет шуметь вентиляторами и вибрировать HDD-дисками, то житья в комнате не будет. Поэтому я хотел найти NAS с пассивным охлаждением и вставить туда SSD диски. Не самое дешевое решение, но за тишину приходится платить.

Как выяснилось, на рынке практически нет NAS с пассивным охлаждением. Почему так я не понимаю, по опыту использования — максимальная температура дисков за год использования у меня была 47.0 C (наверно когда я переносил все данные), в покое — 36.0 C, крышка NAS-а чуть теплая. 90% времени диски простаивают и зачем им вентилятор я не понимаю.

Вот модели с пассивным охлаждением которые я смог найти — QNAP HS-210 , QNAP HS-251 , QNAP HS-251+ (он же QNAP S2 ), QNAP HS-453 . У всех моделей обычный x64-процессор, не ARM. Получается маленькая такая desktop-тачка с местом для двух HDD.

  • HS-210 — 512 МБ ОЗУ мало.
  • HS-251 — 1ГБ ОЗУ мало
  • HS-251+ — 2ГБ ОЗУ норм
  • HS-453 — 4 или 8 ГБ ОЗУ. Ultimate решение, но не продается в России и стоит космос.

У Synology бесшумных решений я не нашел. Собирать системник тоже не хотелось — он не получится таким же маленьким и бесшумным как QNAP. В общем выбрал золотую середину — QNAP HS-251+ (QNAP S2).

Из дисков я выбрал WD BLUE 3D NAND SATA SSD 1 TB (WDS100T2B0A). Взял две штуки. Они без проблем заходят в NAS. Итого вышло:

Не самое дешевое решение для NAS, но самое дешевое из подходящих под требования. Кроме этого, чтобы создать свое облако потребуется статический “белый” IP-адрес дома. Чтобы подключаться из интернета к домашнему серверу. Обычно такая услуга есть у любого провайдера.

Программная часть

После покупки и установки самого NAS-а, решил попробовать использовать софт от самого QNAP. Стоит сказать, что он очень разнообразный — полностью заменяет публичные облака и даже умеет запускать виртуальные машины. Из себя он представляет некую ОС (на основе Debian, кажется), с веб-интерфейсом а-ля iPad и проприетарными приложениями.

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

Так как это обычный x86_64 ПК, я записал на флешку свежий дистрибутив, зашел в BIOS и загрузился с нее:

В этом NAS-е есть постоянная память размером 512 МБ куда установлена дефолтная прошивка. Ее я не перезаписывал (при желании можно будет вернуться на нее), и поставил Ubuntu 18.04 на software RAID, собранный из двух установленных дисков. На каждом диске создается по партиции одинакового размера, и они объединяются в RAID1. На одном диске также раздел для загузчика и /boot:

Домашнее облако

Для замены Google Drive (Яндекс.Диск, Dropbox и тд.) я выбрал Seafile — https://www.seafile.com/en/home/

Выбор был между ним и Nextcloud/ownCloud, но после тестовых установок выбрал Seafile. До 3-х пользователей можно использовать Enterprise версию — её и взял. В ней есть поиск по файлам и еще несколько полезных функций, вот здесь есть сравнение бесплатной и enterprise версий. Разворачивал с помощью Docker — очень просто и быстро, на сайте есть подробный мануал

Читайте также:  Браузер не открывает ссылки windows 10

У Seafile есть веб-интерфейс, desktop-приложение для всех ОС и мобильный клиент.

Nextcloud/ownCloud гораздо богаче по функционалу и хранят файлы в открытом виде, то есть их можно интегрировать в другие серверные приложения, но жуткие тормоза при аплоаде файлов и на веб-интерфейсе делают их неработопригодными.

Seafile тоже не идеален, всё что он умеет — просто хранить файлы. Особенности использования:

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

есть приложение для Android/iOS. Довольно скромное, но заливать фотки с телефона и просматривать файлы умеет.

Домашний NAS и медиа-плеер

Так как в NAS-е есть HDMI выход, я его подключил к телевизору и сделал из него медиа-плеер. В комплекте также есть пульт ДУ:

С помощью очень классной программы Kodi (https://kodi.tv/) можно полностью заменить smartTV, онлайн-кинотеатр и приставку для проигрывания IPTV. Он устанавливается на linux и на экран выводит свой интерфейс. Навигация пультом ДУ или приложением Kore. С пультом были проблемы, не заводился из коробки, пришлось немного потанцевать с бубном.

Вот так выглядит интерфейс Kodi на телевизоре:

Как я использую Kodi:

  • плеер фильмов, которые лежат на NAS-диске
  • плеер IPTV вместо MAG-250. Умеет показывать multicast-потоки
  • проигрыватель YouTube (приложение не очень удобное, но юзабельное)
  • в поездках с помощью приложения Kodi для Android подключаюсь к своему NAS и смотрю с него фильмы. Получается такой self-hosted онлайн-кинотеатр
  • для скачивания новых фильмов на NAS установил Transmission + web-интерфейс

Также на NAS поставил FTP и Samba, чтобы подключаться с девайсов в локальной сети и NFS для монтирования сетевого диска.

Такой схемой я пользуюсь около года и вот какие выводы сделал:

  • приложения Яндекс.Диск/Google Photo удобнее и быстрее. Да, opensource-аналоги не дают такого удобства использования — то тут, то там встречаются мелкие косяки (например в android-приложении seafile фотки при просмотре скачиваются полностью, т.е. не превью сжатое, а фото если весит 5МБ — оно все полетит на телефон, это медленно и занимает место на телефоне; хотя в веб-морде есть превьюхи). Ну и поиск в Гугл.фото по содержанию фотографий (когда в поиске вводишь “горы”, и он показывает все фотографии гор из вашей библиотеки) — это вообще киллер фича, такого в бесплатные аналоги не знаю когда завезут.
  • скорость загрузки файлов в Seafile гораздо выше, чем в публичные облака
  • смотреть фильмы теперь супер удобно. Особенно в поездках. 4G есть практически везде в России, и теперь не надо закачивать кучу фильмов на телефон — смотрю онлайн, подключаясь с телефона к домашнему серверу. В случае отсутствия связи, например в поезде, подключаюсь по FTP и скачиваю перед отправлением.
  • Kodi — супер комбайн, но хотелось бы научиться стримить телевизионный сигнал на телефон, чтобы смотреть ТВ не из дома. Этого еще не понял как сделать.
  • чтобы все это настроить пришлось покурить мануалы и подзаморочиться с установкой и наладкой.

Хочу ли я вернуться в публичные облака (Google Drive, Яндекс.Диск)? Нет, не хочу. На мой взгляд, плюсов в такой схеме все же больше, чем минусов. А внутренний параноик теперь спит сладким сном.

Источник

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

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

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

Читайте также:  Аналог radmin для astra linux

Итак, в один момент я решил собрать 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

Стоит ли говорить, что несмотря на возраст в несколько лет, спецификация этого сервера по-прежнему превосходит большинство вариантов систем 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 в качестве источника загрузки, и при запуске мастер установки проведет вас по всем ее этапам.

Читайте также:  Windows 10 слетают шрифты

Сборка 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.

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

Обратите внимание, что 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

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

Источник

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