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

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

 

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

Скорость современных жестких дисков часто превышает 200 Мбайт/с, а использование некоторых типов многодисковых массивов позволяет достичь и более высоких скоростей. Использование в сетевых хранилищах единственного гигабитного сетевого порта убивает удовольствие на корню: получить скорость, превышающую 125 Мбайт/с, с единственным гигабитным соединением невозможно. В статье «После гигабита. Выбираем и настраиваем оборудование для суперскоростной домашней сети» я уже успел пожаловаться на проблему, описав и вариант решения — купить и настроить мультигигабитный адаптер. Сейчас же я расскажу о том, как обойтись без него и удвоить скорость гигабитного соединения совершенно бесплатно.

Ряд моделей Synology — например, DS718+, DS220+, DS720+, DS420+ и более продвинутые — оснащены двумя или более гигабитными сетевыми портами. Пользователи QNAP или Asustor пожмут плечами: отлично, делаем агрегацию — скорость удваивается! Однако в NAS от Synology использовать лишний порт для того, чтобы просто удвоить полосу пропускания, у обычного пользователя не получится. Чтобы разобраться в причинах, нужно немного рассказать о том, как работает агрегация сетевых линков в принципе.

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

Единственное исключение из этого правила — агрегация на программном уровне (она не требует какого-то особого коммутатора или настроек) по алгоритму Round Robin (на русский язык иногда переводится как циклический режим). При работе по этому алгоритму сетевые интерфейсы используются строго по очереди, что и позволяет достичь эффекта, которого ожидает обычный домашний пользователь: скорость передачи данных между NAS и любым другим устройством (разумеется, также использующим скоростной линк) будет складываться из суммарной пропускной способности всех агрегированных линков. Таким образом, включение второго порта Ethernet у других производителей — это способ удвоить видимую пользователю скорость работы NAS, вплотную приблизив скорость обмена данными по сети к скорости самих дисков.

А вот в сетевых хранилищах от Synology от агрегации портов обычному пользователю будет мало толка. По какой-то причине разработчики DSM не стали выводить в графический интерфейс возможность использования циклического режима Round Robin. Другие алгоритмы? Пожалуйста! Вот только ни один из них не позволит удвоить скорость передачи данных между NAS и единственным клиентом. Подавляющее большинство покупателей NAS с двумя сетевыми портами не узнает об этой особенности, пока не попробует воспользоваться режимом агрегации.

В DSM доступен выбор одного из нескольких алгоритмов агрегации.

При этом DSM работает поверх сборки Linux, в ядре которой агрегация Round Robin присутствует. Соответственно, можно попробовать ее включить. Для этого достаточно изменить единственный байт в единственном текстовом файле. Итак:

  1. Создаем сетевое соединение, используя агрегацию по методу Adaptive Load Balancing. Внимание: на момент создания соединения оба сетевых порта должны быть уже подключены к коммутатору, причем скорость портов должна совпадать. Кстати, рекомендую сразу же увеличить MTU до 9000.
  2. Заходим через SSH с правами root и открываем файл /etc/sysconfig/network-scripts/ifcfg-bond1 (или bond0, в зависимости от настроек) на редактирование.
  3. Находим строку BONDING_OPTS и меняем значение 6 на 0. Сохраняем файл.
  4. Перезапускаем сеть командой /etc/rc.network restart (если после этого открыть окно настроек агрегации в веб-интерфейсе DSM, в нем не будет выбран ни один из вариантов).

Если все сделано правильно, мы получим удвоенную скорость передачи данных между NAS и… собственно, между NAS и любым другим устройством, которое либо также использует агрегацию Round Robin (проверено на двух экземплярах Synology, подключенных к одному гигабитному коммутатору), либо подключено к тому же коммутатору по скоростному каналу на 2,5, 5 или 10 Гбит/с (проверено с собственным компьютером).

Думаю, очевидно, что в твоем компьютере при этом должен быть установлен либо один скоростной сетевой интерфейс (подключенный к скоростному порту мультигигабитного коммутатора), либо два гигабитных (можно подключить к тому же гигабитному коммутатору, к которому подключен NAS).

 

Еще более быстрый Ethernet

Агрегация сетевых портов — отличная вещь с одним маленьким ограничением: работает только в довольно дорогих моделях, в которых второй сетевой порт присутствует как класс. Большинство же доступных по цене моделей Synology (в том числе исключительно популярная модель DS218+, а также недорогие модели DS118j и DS220j), увы, оборудованы единственным сетевым портом. Как-либо увеличить скорость доступа штатными средствами невозможно — только переходить на более дорогую модель, оборудованную двумя портами Ethernet.

Попробуем очевидный вариант: подключаем гигабитный сетевой адаптер к порту USB в надежде настроить агрегацию. Промах, причем двойной: адаптер системой не опознан, пришлось искать драйвер; и даже после его установки возможности настроить агрегацию в системе так и не появилось. Дополнительный сетевой интерфейс не был пронумерован, оба порта (и встроенный, и USB) показаны в интерфейсе под названием LAN. Что ж, никто и не обещал, что в устройстве с одним портом разработчики DSM оставят настройки агрегации.

Остается другой вариант: использовать внешний сетевой адаптер со скоростью 2,5 или 5 Гбит/с. В продаже есть множество вариантов, все они основаны на одном из двух чипсетов: Marvell (Aquantia) AQtion AQC111U либо Realtek RTL8156 (на котором построен добрый десяток моделей, отличающихся в основном формой корпуса, а иногда и вовсе только названием производителя).

 

Вариант 1: 5 Гбит, адаптер QNA-UC5G1T на чипсете AQtion AQC111U

Пробуем подключить пятигигабитный адаптер от основного конкурента Synology — компании QNAP. Просто взять и подключить адаптер, разумеется, недостаточно: DSM корректно определит устройство, но без драйвера для AQC111U не увидит сетевого линка. На помощь приходит GitHub: драйверы для чипсета AQC111U в формате пакета для DSM можно скачать отсюда.

В список совместимых моделей входят DS918+, DS620slim, DS1019+, DS718+, DS418play, а также DS218+. Впрочем, сборки доступны и для более старых чипсетов, но — без гарантии. При этом поддерживаются в основном устройства с процессорами Intel; модели на чипах Realtek (архитектура ARMv8) не поддерживаются, так что использовать адаптер с DS218, DS218Play, DS220j или DS118j не удастся.

А что насчет современных устройств — DS220+, DS720+, DS420+ и так далее? Для них еще не выложены нужные библиотеки и фреймворки, которые необходимы для компиляции драйверов.

Устанавливается драйвер просто: достаточно использовать команду Manual Install из раздела Packages. После установки драйвер становится доступным в виде установленного пакета; его нужно будет запустить.

Драйвер готов к работе, но рекомендуется его предварительно настроить, изменив в свойствах адаптера MTU = 9000. В настройках адаптер будет выглядеть примерно так:

На этом не все. Пятигигабитный адаптер склонен к нагреву, а где нагрев — там и тротлинг. Соответственно, стоит отключить температурный тротлинг, а чтобы не возникал перегрев — включить EEE (Energy Efficient Ethernet). Это можно сделать двумя командами в терминале (предполагается, что идентификатор подключения — eth1, что верно для систем с единственным встроенным сетевым портом):

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

11 комментарий

  1. Аватар

    FantomGuard

    02.09.2020 в 20:30

  2. Аватар

    jackxb

    03.09.2020 в 11:19

    Да, Synology удобная штука, спасибо за статью.
    Может кому-нибудь пригодиться, еще есть WireGuard пакет на гитхабе, работает стабильно на DS218+, правда у WireGuard есть особенность, если сеть вдруг отвалилась у провайдера, а потом вернулась, или произошло переключение на резервный канал интернета в роутере, весь исходящий трафик ставится на паузу, пока не перетолкнешь соединение с сервером. В Synology я решил эту проблему написав Bash скриптик, который раз в минуту пингует сервер, если он не ответил, перезапускаем соединение, работает как часы теперь все 24/7.

  3. Аватар

    bulgar

    03.09.2020 в 15:45

    У меня девайс постарше, но жаловаться не на что — DS1812+
    DSM 6.2.3-25426 upd2, в вебморде выбор настроек Link Aggregation выглядит по-другому и Adaptive Load Balancing там нет. важно именно эту настройку поставить или просто в конфиге найти нужную строку и переключить на Round Robin?

    • Аватар

      bulgar

      03.09.2020 в 16:14

      открыл указанный файл, в строке BONDING_OPTS ни одной цифры, только текст.
      возвращаться на старую DSM?

      • Олег Афонин

        Олег Афонин

        04.09.2020 в 00:52

        Даже не подскажу, но не думаю, что откат поможет. Агрегация, насколько мне известно, работает на уровне ядра Linux. Если Synology для DS1812+ использовали старое ядро, то в нём может просто не поддерживаться тот или иной режим. Ну и настройки могут выглядеть иначе. Я не думаю, что дело в DSM — скорее, просто версия Linux стоит старая. Может, тут что-то полезное?
        https://www.kernel.org/doc/Documentation/networking/bonding.txt

        • Аватар

          bulgar

          04.09.2020 в 09:13

          спасибо за подсказку, ядро 3.10.105 (не четвёртой ветки, но уже и не второй) и опции из дока с kernel.org…
          нет там таких опций)
          в моём конфиге
          BOND_MODE=balance-tcp
          BOND_OPTS=»bond_mode=balance-tcp lacp=active»

          страшно туда руками лезть — если я исправлю на balance-rr и режим, и опции, после перезапуска служб интерфейс поднимется? если б комп, то проще, здесь же всё по сети
          ладно, оставим это всё как риторический вопрос, попробую сам разобраться — направление есть, спасибо

          • Олег Афонин

            Олег Афонин

            04.09.2020 в 11:07

            Тут такое дело: может, поднимется, а может, и нет. Но «короткий» сброс кнопкой reset тут должен помочь, он как раз сбрасывает настройки сетевых интерфейсов, но не трогает данные. Судя по тому, что я вижу, у вас сейчас LACP. Для этого типа агрегации нужна поддержка со стороны коммутатора. После того, как измените на balance-rr, LACP для этих портов в свитче нужно будет отключить, иначе не заработает или заработает неправильно.

          • Олег Афонин

            Олег Афонин

            04.09.2020 в 11:08

            Кстати, ещё один неочевидный момент: у Synology при включении агрегации LACP должен отрубаться Wake On LAN. Это так и должно быть, но жутко неудобно.

            • Аватар

              bulgar

              04.09.2020 в 19:35

              свитч, да, умеет LACP — Cisco SG200-08. меня смущает неописанная в доках опция balance-tcp — это, видимо, synology где-то прослоечку с алиасами заложили, если не пересобрали ядро, обозвав опции по-своему. если второе, balance-rr может и «не сработать», но это получится выяснить только методом тыка. WOL мне не нужен, NAS работает 24/7)))

            • Аватар

              bulgar

              06.09.2020 в 23:56

              вот до чего я докопался
              для начала конфиг бриджа полностью:

              DEVICE=ovs_bond0
              BOOTPROTO=dhcp
              ONBOOT=yes
              IPV6INIT=auto
              IPV6_ACCEPT_RA=1
              IPV6ROUTER=no
              PRIMARY=eth0
              TYPE=OVS
              BOND_MODE=balance-tcp
              BONDING_OPTS=»bond_mode=balance-tcp lacp=active»
              SLAVE_LIST=»eth0 eth1 »

              type=ovs, если я правильно понял, говорит про Open vSwitch, но ни в доках к нему («Most of the ovs-vswitchd implementation is in vswitchd/bridge.c, so code references below should be assumed to refer to that file except as otherwise specified», https://docs.openvswitch.org/en/latest/topics/bonding/), ни в исходниках vv2.5.10, 2.14.0 (том самом bridge.c) нет balance-tcp. synology, похоже, «допилили» сорцы под свои нужды. сколько я ни бился, а даже до 125Мбит/с не добрался.

              хрен с ним, буду жить как есть.

              • Аватар

                Hartwell

                26.09.2020 в 01:43

                Отключите open vswitch через dsm (убрав галку), после чего будет выбор агрегации из 4 пунктов в том. числе как в статье описано, пересоздаст конфиг и появится цифра 6. Отключается на лету open vswitch

Оставить мнение