Прощай, тормозня; здравствуй, нормальная скорость домашней сетки!
Что для этого нужно?
Железки
Раутеры и свитчи на 10 гигабит стоят конских денег и почти все заточены под оптоволокно.
Оптоволокно не нужно: да, по витой паре будет в 10 раз больше потребление электричества, но для домашних нужд это незначительно. Зато можно использовать те же провода, которые вы уже протянули для гигабитной сетки (надеюсь, это, как минимум, Cat6a, а лучше Cat7).
Переходники с RJ45 на SFP+ это тоже геморно и дорого. Ещё не попадитесь на рекламу, потому что очень часто продают 10-гигабитный свитч, в котором все порты 1-гигабитные, а 10-гигабитный только аплинк. Вам же надо, чтобы 10-гигабитным было всё.
Раутеры и свитчи не нужны: для двух нодов намного дешевле вставить в каждый комп по 10G карте (PCIe x4 lanes) и соединить их напрямую. Самая дешёвая карта с одним RJ45 портом, для которой есть FreeBSD драйвера, и, таким образом, поддержка для FreeNAS - это Rosewill за $130. Драйвера к ней нужны от Tehuti Networks TN40XX с сайта Tehuti Networks. (Не спрашивайте, how many bothans died to bring you this information.) Без требования совместимости с FreeBSD можно найти карты за $60-80, и даже за $80 на два порта. Для трёх нодов всё ещё дешевле и правильнее либо втыкать по две карты в кажый нод, либо по одной двухпортовой, и соединять каждый с каждым. Для четырёх не знаю, не считал. Может, там уже будет выгоднее использовать свитч.
Конфигурация
У меня всего два нода, локальная сетка у меня 192.168.1.XX/24, я просто придумал другую сетку - 192.168.2.XX/24, придумал по айпишнику, прописал, и всё заработало. В Винде в файле /Windows/system32/drivers/hosts прописал новый айпишник сервера и его имя, теперь он резолвится на быструю карту. К сожалению, винда пишет, что это "Unidentified network" и "Public network" - не знаю, как это убрать, провозился полчаса и ничего не нашёл. Чёрт с ним. Единственное, на что это влияет, это на возможность шарить что-то с винды через этот интерфейс (директории и принтеры), а мне это не нужно, у меня, наоборот, FreeNAS всё шарит.
FreeNAS конфигурировать проще простого, а вот драйвера поставить - нет. Для драйверов пришлось поставить самую свежую версию FreeNAS (11.2), в которой новый отвратительный GUI. Предыдущие версии FreeNAS (11, 11.1) идут со слишком старой версией FreeBSD, которая не поддерживает этот волшебный драйвер. Зато бонус: если вы трахались с LSI 9211 SAS card, делали flash to IT mode и ставили P16 firmware потому что более новый не поддерживался драйвером в FreeBSD, а потом вы не хотели апгрейдить FreeNAS, потому что новая версия уже требует P20 и ругается на P16, а заново перепрошивать SAS-карту это геморрой, то в совсем новом FreeNAS-е есть драйвера, которые больше не ругаются на P16. (Для самопроверки: если этот абзац не вызывает у вас лёгкого эротического возбуждения, то FreeNAS - не для вас!)
Бенчмарки
Самое вкусное: насколько стало всё круто?
Я использовал 80GB dataset (zfs recordsize: 128k), не сжимаемый, копировал его туда сюда, внимательно смотрел на метрики. Вначале получилось 180 mb/sec read и 270 mb/sec write. После того, как я как следует поколдовал с метриками, оказалось, что узкое место это SBM shares + TCP. Выставил на обеих картах jumbo frames (16k), и наступило счастье. Конечные характеристики:
Последовательное чтение:
- bandwidth: 335 mb/sec (75 mb/sec per drive),
- drive busy по дискам: 80% (5T), 60% (6T), 70% (5T), 30% (8T), 30% (8T),
- drive ops: 1.5k/sec,
- CPU load (decryption): 30%.
Последовательная запись:
- bandwidth 320 mb/sec (100 mb/sec per drive),
- drive busy по дискам: 90% (5T), 65% (6T), 80% (5T), 75% (8T), 75% (8T),
- drive ops: 1.3k/sec,
- CPU load (encryption): 40%.
Очевидно, можно улучшить запись на 20% и чтение на 33%, если заменить два медленных 5T диска на что-нибудь пошустрее.
Вероятно, SSDs для L2ARC можно тоже заменить (у меня стоят старые Intel 330 Series, у которых скорость порядка 160-180 mb/sec).
Дальше - чёрт его знает. Тесты с кэшем показали, что сетка легко даёт гигабайт в секунду после установки jumbo frames (до установки был 500 mb/sec лимит), так что, скорее всего, что-то другое будет bottleneck'ом раньше, чем network.
Но уже втрое лучше, чем было, это достойно! Разница прекрасно заметна на глаз в обычных юс-кейсах (копировать туда-сюда фильмы, фотки, архивы, открывать файлы). Заодно выяснил, что по умолчанию в FreeNAS L2ARC отключен prefetch. Включил его, сразу значительно улучшился юс-кейс "открыть в explorer'е сетевую папку с фотками", генерация превьюшек многократно ускорилась. Настроил Lightroom, чтобы брать фотки сразу из сетевых директорий (раньше я копировал локально те файлы, с которыми хотел работать).