Решил собрать свой домашний сервер для виртуализации, чтобы изучать и тестировать разные интересные штуки. Причем захотелось собрать самостоятельно вникая во все нюансы сборки сервера. Это было увлекательное путешествие в hardware мир!
В этой статье поделюсь тем что у меня получилось, с какими трудностями я столкнулся на всем пути самостоятельной сборки сервера и как их решал (правильно или неправильно), поделюсь личными выводами. А в конце посчитаем все это дело в цифрах (на начало 2023 года).
Мотивация
Со школьных лет меня интересовала hardware тема, нравилось чинить принтеры, но как-то не было ресурсов для получения желаемого, а потом пришел умирающий PHP приносящий деньги продакшен в вебе и уже было далеко не до этих увлечений.
Но в один весенний вечер, под гнетом дедлайнов и личного кризиса, я решил исполнить свою детскую мечту и самостоятельно собрать домашний сервер.
На самом деле здесь есть детали более весомые, и одно детское желание не могло склонить формальную логику к столь серьезным действиям.
Проработав на новой работе уже более трех месяцев (март 2023), на позиции DevOps инженера, я понял что мне нужно осваивать смежные специализации чтобы успешно коммуницировать не только с продуктовой разработкой, но и с суровой эксплуатацией. И так удачно совпало, что и работа неявно подталкивала меня к тому чтобы не только осваивать новые сервисы, но и обслуживать их самостоятельно. А как по другому понять рутину не имея собственных ресурсов?)
Но как собрать? Купить готовую сборку б/у как-то слишком легко, а вот «собрать полностью самостоятельно» звучало как увлекательное путешествие!
Здесь я еще не понимал сложность вопроса, потому что никогда не занимался такими делами на столько серьезно, чтобы взять и собрать сервер.
А теперь ближе к сути. Речь пойдет про миниатюрный «черный ящик» справа (слева белый это уже второй домашний сервер).
А вот так он выглядит в разрезе:
А так разобранный на этапе поставки первых комплектующих:
Итак, начнем 🙂
На первый взгляд ничего сложного
Когда я начинал эту затею, то мне казалось что последовательность действий примерно такая:
-
находим материнскую плату
-
к ней процессоры
-
накидываем охлаждение
-
затем ОЗУ
-
вставляем все это дело в корпус
-
покупаем блок питания
-
радуемся
Но так ли это на самом деле?
Компоненты
Перечисляю в порядке возникновения вопросов и поступления товаров:
Материнская плата
Так как это первый сервер в моей жизни, то я еще ничего не понимал в материнских платах, но осознавал что это фундаментальная часть сервера. От этого зависит выбор процессора, охлаждение, ОЗУ, дисков и прочее.
Мне нужна была плата с поддержкой процессоров только от Intel, потому что только с ними я работал как пользователь, с AMD не доводилось. И так как я собираю сервер, то мне нужна поддержка двух процессоров, true-сервер
все-таки.
За пару дней нашел объявление на Авито о продаже Supermicro X9DBL-i с двумя 6-ти ядерными Xeon E5-2420 за 4250р. Посоветовался с другом, который имеет опыт работы с серверами — получил одобрение: не слишком старая и не дорогая.
Тогда я еще не знал, но есть 3 экзистентных вопроса при выборе материнской платы, как минимум позже для меня это стало важным.
Сокет процессора
Первый вопрос: какой выбрать сокет? А точнее: что это вообще такое?
Сокет это разъем для установки процессора.
Когда впервые с этим сталкиваешься то глаза разбегаются: LGA
1151
/1366
/1356
/2011
/2011v3
и это только малая часть и только для процессоров Intel, у AMD свои сокеты. Фото из поиска Яндекс:
Как выяснилось каждый вид сокета процессора поддерживает только ограниченные модели процессоров. Новый сокет — новые процессоры, но и цена выше. Например, материнские платы с сокетами 1356
/1366
старше, но дешевле сокетов 2011
/2011v3
, а значит и менее актуальны.
Сейчас, после изучения этого вопроса, я пришел к выводу что нужно брать не старше чем LGA 2011. Но на тот момент я взял плату с LGA 1356
. Здесь есть краткое описание истории сокетов Intel, на википедии есть информация по сокетам, а там много материала по мейнстриму LGA 2011v3
и статьи по сборкам хуананов (к слову сейчас (ноябрь 2024) я себе взял двухсокетный хуанан на пробу).
Сокет LGA 1356
был не массовым и предшествовал LGA 2011
, который близится к закату своего мейнстрима на б/у рынке (субъективно). Но сейчас я понимаю что за свою цену это приемлемое предложение. Если говорить про апгрейд до LGA 2011
где еще DDR3
, то на выброс пойдут только материнская плата с процессорами, а охлаждение (если речь про quad
сокет) и ОЗУ пойдут на новую плату.
IPMI
Раз уж речь идет о сервере, то по канонам нужен IPMI. Но на момент покупки платы я еще не знал про это.
Здесь есть интересная статья про IPMI
, а если коротко то:
IPMI
реализуетBMC
контроллер на плате, на котором тоже скорее всего стоит Linux, этот контроллер работает от дежурного питания материнской платы и позволяет управлять питанием сервера (вкл/выкл/перезагрузка), а также реализует KVM (удаленный доступ с поддержкой клавиатуры, видео и мыши). Кроме того, этот же контроллер осуществляет роль видеокарты.
Проще говоря: IPMI
позволяет удаленно через веб-интерфейс управлять питанием процессора и через KVM
подключаться к серверу.
На моей плате был контроллер, но не было IPMI
, видимо он выполнял роль только видеоконтроллера. Это побудило меня к исследованию вопроса что в конечном итоге вылилось в статью о поисках IPMI.
Самый простой способ понять есть ли IPMI
на плате это посмотреть на LAN
порты:
Если бы не история с ОЗУ (см. ниже) то наверное я бы не упомянул IPMI
.
Форм-фактор
И здесь стоит еще познакомится с существующими форм-факторами материнских плат, потому что это будет влиять на выбор корпуса.
К слову, у меня возникли некоторые трудности в поисках корпуса для размера SSI-EEB
, который E-ATX
, но тут нужно уточнять в каждом конкретном случае, потому что трактовки этих форм-факторов разные у разных продавцов.
Для самОй материнской платы форма-фактор может влиять на количество и плотность компонентов:
Процессоры
Материнская плата с сокетом LGA 1356
есть, теперь под этот сокет нужно подобрать процессор.
В документации к плате сказано, что она поддерживает всю линейку процессоров Xeon E5-2400 v2
, а топовый в этой линейке это Xeon E5-2470v2 с 10-ю ядрами. Поискав на Авито, удалось найти объявления по 1000р за штуку, беру два.
Здесь мало что скажешь, мы ограничены небольшой линейкой моделей, но в LGA 2011v3
выбор будет больше (списки для v3 и v4).
Охлаждение процессоров
Подобрать материнскую плату было не просто, но с охлаждением оказалось труднее из-за отсутствия понимания как оно вообще там должно быть и как организовать воздушный поток.
Есть радиаторы, стоковые кулеры, башенные кулеры. У них есть различные крепления и есть даже переходники с одних сокетов на другие. Что выбрать?
Радиаторы маленькие и это больше про сервера в стоечных корпусах, где мощные/шумные вентиляторы образуют поток воздуха в направлении радиаторов.
Кулеры (радиаторы вместе с вентиляторами) большие но тихие, подходят для десктопов, они вполне умещаются в домашней обстановке. На фото ниже показан воздушный поток внутри корпуса, организуемый вентиляторами с кулерами:
Ладно, кулеры так кулеры, а что с креплениями?
Опытным путем и гуглением было выяснено что крепления для сокетов 1356 1366 и 2011 одинаковые. Значит нужны кулеры для одного из эти сокетов.
Если присмотреть к площадкам для процессоров на материнской плате, то можно увидеть 4 отверстия, вот туда то и должны вкручиваться ножки кулера.
В интернет-магазинах можно найти переходные варианты в виде пластиковых креплений для кулеров под AMD сокеты. Я взял, померил, но пока не стал использовать, субъективно — ненадежно. Сразу фото в цвете:
Поиски в интернете навели меня на башенные кулеры Deepcool GAMMAXX S40 за 1108р за штуку, а их надо 2, итого: 2216р
А вот так они стоят на плате:
Кулеры поддерживают сокеты LGA 1156
, LGA 1366
, LGA 2066
, винты крепления имеют регулируемую удаленность, есть также переходники для AM3
, AM3+
.
Из-за регулируемых (нефиксированных) винтов монтаж на сокет оказался проблематичным, через несколько итераций монтажа резьба на одном из винтов была сорвана.
Кулерами доволен, дуют мощно, работают тихо. Однако, они большие, а потому неудобны для маленького корпуса и ATX
форм фактора материнской платы: снять кулеры без демонтажа платы из корпуса не получится, а учитывая что питание платы и процессоров на верху то их подключение превращается в испытание. Смена плашек ОЗУ на верхней части платы не представляется возможной, а одна из плашек прямо упирается в радиатор.
Для сравнения фото внутренностей моего второго сервера, здесь видно что расстояние между кулерами и верхней стенкой корпуса большое (в корпусе предусмотрена установка водяного охлаждения на верхней части):
К слову, необязательно было брать такие высокие и широкие, можно было чуть ниже и легче, возможно монтаж был бы проще. На фото видно что одну плашку ОЗУ не снять без демонтажа кулера:
Позже я обнаружил существования маленьких, аккуратных и работоспособных стоковых кулеров. Двухнедельный мониторинг Авито навел меня на Intel E47159-001 2U за 1000р каждый (итого 2000р):
А вот так они выглядят в корпусе:
Монтаж/демонтаж таких кулеров одно удовольствие, все максимально удобно. Особенно было заметно заточенность только под один сокет (группу похожих по размерам креплений): здесь не надо куда-то подгонять винты все уже выставлено ровно на том расстоянии, на котором должно быть.
Но, конечно же они не так мощно охлаждают процессоры как башенные кулеры, поэтому они были отложены в коробку на долгое хранение.
Кроме того следует упомянуть про управляемость вентиляторов, как на кулере процессора так и на обычных внутрикорпусных вентиляторах. Под управляемостью вентиляторов подразумевается изменение скорости вращения лопастей, чем сильнее вращение тем быстрее охлаждение и наоборот. Это нужно в случаях высокой нагрузки на CPU
для эффективного рассеивания тепла, материнская плата/ОС сама будет управление скоростью вентиляторов.
Для управления вентилятором используется коннектор 4pin
(4 контакта) как на самом вентиляторе, так и на плате:
3pin
(3 контакта) это неуправляемые вентиляторы, они будут крутиться с одинаковой скоростью все время. Следуя логике, кулеры должны быть 4pin
и подключать их нужно тоже к 4pin
, чтобы регулировка оборотов вентиляторов охлаждающих процессоры регулировалась в зависимости от нагрузки процессора.
ОЗУ
Вариантов плашек ОЗУ оказалось тоже много и возникают разные непонятные термины: UDIMM
, RDIMM
, LRDIMM
, ECC
, ранки, частота, многоканальность. Здесь есть некоторые ответы.
Немного правил выявленных в ходе изучения:
-
в один и тот же сервер нужно ставить одинаковые типы памяти (все
RDIMM
или всеLRDIMM
), смешивать нельзя -
в большинстве случаев серверные материнские платы поддерживают ОЗУ только с
ECC
-
желательно занимать все разъемы на плате чтобы включалась многоканальность и как следствие увеличивалась скорость (как минимум так говорят интернеты)
-
детали нужно уточнять в документации к материнской плате, там будет достаточное описание для сужения поиска
Так как это изначально был эксперимент, который должен был вырасти во что-то большее, то я решил взять что-то простое: Klisre DDR3 ECC REG
, 4 плашки на 8гб за 2600р комплект.
А позже, мне очень захотелось прокачать до максимума. Зная что DDR3
максимум 32гб, а у меня всего 6 разъемов, значит нужно искать 6 плашек. В тот момент, мой друг, который во многом способствовал, подкинул мне мысль о том, что нужно брать LRDIMM
. И судя по документации к плате 32гб LRDIMM
плашка выигрывает в частоте и может работать на 1333:
Но чего я тогда не знал, так это то что LRDIMM греется и ее нормальная системная температура 75-85C. И с тех пор начались мои приключения с мониторингом температуры ОЗУ при отсутствующем IPMI
, про это была серия постов в моем телеграм канале. История завершилась моим смирением с отсутствующим IPMI
и после некоторого времени я замерял температуру при помощи usb-термометров.
На данный момент в моем первом домашнем сервере стоит 6 плашек ОЗУ по 32гб, итого 192гб. Взял я их на Авито, комплектом за 16800р
Блок питания
Теперь определимся что нам нужно питать:
-
плату —
24pin
-
2 процессора — на каждый по
8pin
-
диски — желательно несколько
SATA
Посчитав энергопотребление каждого компонента послушав советы интернетных экспертов я приобрел Deepcool PK500D
на 500Вт за 3630р:
Питание 24pin
на плату и 2 по 8pin
на каждый процессор. Сертификация 80 plus Bronze
(рекомендуют брать не ниже Bronze чтобы КПД был не низкий).
Большую ясность характеристик блока питания при выборе внесло это видео.
При установке возникло 2 проблемы:
-
кабель питания платы не дотягивался до разъема, пришлось взять удлинитель
-
кабель питания одного
CPU
не дотягивался до разъема, купил удлинитель, но он оказался не дляCPU
, а дляGPU
, поэтому с ним плата не стартовала, пришлось переделать провода:
А вот так все это выглядит внутри:
Позже я узнал что есть модульные блоки питания, где кабели отстегиваются, оказывается это удобно. На свой второй сервер поставил такой модульный блок питания:
Диски
Изначально я хотел виртуализацию на базе Proxmox, значит именно под это дело нужно планировать хранилище.
Сначала я поставил один SSD
WD Blue
на 500гб, но позже я подумал что нужна отказоустойчивость дисков и решил сделать RAID1
, отдельно для системы, отдельно для хранения данных. Но я тогда еще не знал что старые платы от Supermicro не полностью поддерживают NVMe даже после прошивки модифицированного BIOS.
Как бы там ни было, загружаться можно с SSD
дисков по SATA
, а после загрузки подключатся диски по NVMe
, меня это устраивало.
Для организации этого я купил:
-
для системы
Digma SSD RUN S9
на 256гб 2шт по 1400р -
для хранения данных:
адаптер NVMe для SSD m.2 в слот PCI-e
2шт по 340р +Apacer SSD-диск AS2280P4U PRO
2шт по 5400р
Так выглядит конструкция:
А так диски стоят внутри сервера:
Корпус
Для первого сервера я решил экономить и взял Ginzzu SL180
за 2900р. С ним все хорошо только на картинке, и последствия экономии вылезли по ходу эксплуатации (а чего я ждал когда экономил?).
Самое печальное это отсутствие нормальных съемных пылевых фильтров на передней панели, и как следствие через несколько месяцев все внутренности в пыли.
Для сравнения можно посмотреть на XPG DEFENDER
(в 2 раза дороже) со съемной передней панелью и съемным пылевым фильтром:
Для установки вентиляторов пришлось снимать переднюю панель, а так как она внутри связана проводами с самим корпусом, то это было крайне неудобно. Для себя я сделал вывод: передняя панель корпуса не должна быть связана с фронтальным управлением (кнопка питания и usb). Для сравнения корпус Cougar Airface
где фронтальное управление вынесено в боковую часть корпуса, а значит передняя панель корпуса не обременена проводами:
Более того на переднюю панель корпуса во внутреннюю часть крышки (как и должно быть) встали только средний и нижний вентиляторы (потом убрал нижний), а верхний пришлось размещать уже внутри корпуса, что выглядит криво, вентиляторы 120мм:
Кабель-менеджмент в боковой части корпуса сносный:
Охлаждение внутри корпуса
Перед тем как брать вентиляторы для внутреннего обдува нужно определиться с мощностью, которую подает материнская плата. Техподдержка утверждает что все платы Supermicro выдают по 3А на каждый разъем вентилятора. В других источниках была цифра не более 1А
.
Я взял Delta AFB1212SH 120x120х25мм 0.8А
(в пределах нормы), 46.5дБ (не слишком шумный) 4 pin(управляемый). Взял 3шт по 440р.
В добавок к вентиляторам понадобилось 2 комплекта винтов M5x10 16 шт
за 160р за комплект, и комплект защитных решеток Fan Grill 120x120мм
за 400р (5шт):
Позже, опытным путем выяснилось что на моей плате только один нижний разъем вентиляторов может регулировать обороты, поэтому пришлось взять разветвитель питания за 250р:
Расходники и инструменты
Термопаста (большой шприц за 300р):
Набор отверток за 655р:
Еще нужны SATA
кабели. Сильно не вникал, взял самые дешевые.
Какова цена?
Подведем итог, сколько все это вышло (цены первой половины 2023 года):
Наименование |
Модель |
Количество |
Цена за ед. |
Общая сумма |
---|---|---|---|---|
Материнская плата |
Supermicro X9DBL-I |
1 |
4250 |
4250 |
CPU |
E5-2470v2 |
2 |
1000 |
2000 |
ОЗУ |
DDR3 ECC Reg 32Gb LRDIMM SK Hynix |
6 |
2800 |
16800 |
Кулер |
Deepcool GAMMAXX S40 |
2 |
1108 |
2216 |
Блок питания |
Deepcool PK500D |
1 |
3630 |
3630 |
Вентиляторы |
Delta AFB1212SH 120×120х25мм 0.8А |
3 |
440 |
1320 |
Комплект винтов |
M5x10 (16шт) |
2 |
160 |
320 |
Комплект защитных решеток |
Fan Grill 120×120мм |
1 |
400 |
400 |
Разветвитель для вентиляторов |
|
1 |
250 |
250 |
Desktop корпус |
Ginzzu SL180 |
1 |
2900 |
2900 |
Итого |
|
|
|
34086 |
И это только то, что в итоге оказалось в сервере. Кроме этого было куплено еще много всяких мелочей, который оказались лежащими на полке.
Что теперь?
Оказалось сборка сервера с нуля без опыта это не простая затея и требует много времени на изучение чтобы купить все совместимые друг с другом компоненты. Для первого опыта норм, но можно было сделать лучше. В совокупности у меня это заняло примерно 2 месяца.
После сборки я развернул несколько виртуалок и установил нужное мне ПО. А спустя некоторое время этот сервер продал по цене сборки, на подходе был второй домашний сервер, лучше и мощнее.
За все время сборки я получил интересный опыт и стал ближе к коллегам сисадминам.
Кроме одного домашнего сервера, в моем арсенале инфраструктуры появился блейд сервер и несколько неуправляемых коммутаторов (справа десктопный сервер, слева внизу блейд-сервер на 8 материнских плат, а на нем коммутатор):
Дальше я хочу организовать свою домашнюю инфраструктуру для работы, разработки и хранения данных. Нужно до собрать второй сервер и запустить на нем виртуализацию, а затем доделать инфраструктуру с защищенным сетевым периметром и возможностью прокидывать порты виртуалок наружу.
Возможно, продолжение следует …