Ещё один NAS своими руками, часть 3: XXX приключения в старой башне в черновиках
Интересно, мечтал ли кто-нибудь в детстве затолкать десяток шпиндельных дисков в свой домашний ПК и вообразить себя бравым Командиром Сервера? Что же, после цехов ИКМ, узлов космической связи, жгутов толщиной с баобаб, ЦОДов разных мастей и прочих весьма насыщенных железом помещений детские мечты, наконец, сбываются.
Но просто воткнуть десяток шпинделей в «башню» недостаточно, их ещё надо раскрутить и охладить. Тут мы не станем петь молебны очередному серверному корпусу известной марки СтупорМиксер, а поработаем в жанре рационального минимализма: возьмем дешевую железяку с обдувом, обучив ее тишине. Ещё из этого поста читатель узнает о том, куда пропадает почти половина мощности у обычного блока питания, об отказах на ровном месте, о волшебстве телеметрии, о некоторых приёмах юниксового кунгфу, и к чему приводит использование старых дисков в новых серверах. История XXX в конце поста;-)
Но сперва я хочу рассказать, как деталь стоимостью менее €1 может «испортить» диск за €100.
DISCLAIMER
Информация предоставляется AS-IS без какой-либо ответственности за ее использование кем-либо, где-либо и когда-либо. Все ненароком упомянутые торговые марки являются собственностью соответствующих владельцев. Некоторые из них в рекламе уже настолько не нуждаются, что я придумываю им шуточные названия.
ХERIAL ATA: новое название старой проблемы
Итак, вы только что истратили часть семейного бюджета на новёхонький накопитель неприличной ёмкости, но не успели ещё улетучиться ароматы нового железа, как диск «посыпался». Не спешите паниковать! Если вы нечасто занимаетесь сборкой, не стоит сразу начинать мучительную тяжбу с продавцом (он с большой вероятностью и цинизмом отправит вас обивать пороги сервисных центров). Не исключено, что дело в интерфейсном кабеле ценой пятьдесят европейских копеек. Судите сами: из десятка купленных в разных местах кабелей SATA лично мне пришлось заменять целых три штуки (а это 30%, между прочим). Уж не знаю, вопрос ли это везения, репрезентативности выборки, кривизны рук или ещё чего, но кабели SATA рекомендую брать с запасом.
Если интересна этимология названия ХERIAL ATA, то первую букву следует читать по-русски. Выявив у кабеля экстрасвойства (методику см. ниже), я просто решил пометить его крестиком, который случайно попал на букву S. Прочитав получившееся слово, я даже решил об этом написать.

Кабель ХERIAL ATA
Кстати: в соответствии с философскими практиками Крепсондо, помечать дефектные изделия сразу — привычка, которая не раз экономила мне и время, и деньги. Но если вы считаете, что месть — блюдо, которое надо подавать холодным, тогда храните неисправные кабели, битые диски, глючную память и горелые блоки питания в одной коробке с исправным железом, никак не помечая. Уверяю, что кому-то это будет очень холодным и очень горьким блюдом. Возможно, вам. А слово ХER читается как иксер и может применяться к «человеку, занимающийся Х», что бы это ни значило...
Как выявить дефектный кабель
На регулярных операциях плохой интерфейсный кабель SATA достаточно отчетливо виден в S.M.A.R.T по нарастающему «сырому» значению атрибута UDMA_CRC_Error_Count (надо смотреть на RAW VALUE). Сразу после установки нового диска (но до инициализации файловой системы) очень рекомендую погонять массивные операции чтения и записи, поглядывая на программу-монитор SMART. Если операции идут с ошибками, а системный журнал пестрит сообщениями «ATA Status Error», «Retrying command», возможно, что виноват не дорогой аромат нового диска, а всего лишь дешевый шнурок.
С вашего позволения, дорогие читатели, я дам несколько примеров использования smartctl(8) для *nix*. В других системах надо просто скачать нужную утилиту (см. викисписок) и погонять увесистую группу файлов туда-сюда обычным копированием.
Внимание: первая команда деструктивная, выполнять следует до заселения нового диска ada1 файловой системой!
#dd if=/dev/zero of=/dev/ada1 bs=1M count=1000
#dd if=/dev/ada1 of=/dev/null bs=1M count=1000
#smartctl -x /dev/ada1
...
ID# ATTRIBUTE_NAME FLAG VALUE RAW_VALUE
...
199 UDMA_CRC_Error_Count 0x003e 200 75
Было замечено, что одним лишь чтением спровоцировать ошибку не всегда удается, поэтому добавлена запись. В примере значение RAW_VALUE у диска ada1 достигло 75, а для замены кабеля лично мне достаточно и единицы.Для успокоения можно также запустить внутренний тест поверхности, диск сообщает примерное время его окончания. Пример запуска длинного теста для диска ada1:
# smartctl -t long /dev/ada1
...
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 277 minutes for test to complete.
Test will complete after Mon Aug 31 23:00:14 2013
Use smartctl -X to abort test.
Такой тест не использует интерфейс SATA, а проверяет, грубо говоря, только состояние «блинов».Как можно убедиться, внутри современного диска собран целый арсенал диагностических утилит (а у некоторых экземпляров чуть ли не метеорологическая станция запрятана). Чтобы добраться до всего этого чуда инженерной мысли, достаточно
# smartctl -l selftest /dev/ada1
...
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Self-test routine in progress 90% 123 -
У системы FreeNAS вы сможете включить подобные тесты в пакет автоматизированной самодиагностики и собирать отчеты по расписанию. Можете ввести себе правило раз в месяц или чаще проверять результаты тестов для раннего выявления неполадок. На самом деле, в этом и состоит работа хорошего Командира Сервера.
Так что если проблема действительно с кабелем, немедленно тушите сервер,
Волшебство телеметрии
TBD
Кунгфу с зеркалами
TBD
Старый диск: казнить нельзя помиловать
TBD
Χ* дисков в старой башне
*здесь Χ означает римскую «десять»Столкнувшись с ХERIAL ATA, я лишний раз убедился, что бюджетные изделия — это территория спонтанных отказов на ровном месте. Есть у меня также субъективное предубеждение и против бюджетных корзин SATA с backplane: во-первых, эта дешевая имитация серверных технологий вовсе не дешевая, а во-вторых она способна порой угробить данные гораздо быстрее глючного контроллера или больного блока питания. Но поскольку это провокационное утверждение, я разместил в конце поста опросник, и мне интересно знать мнение хаброкомьюнити.
В моем стареньком башенном корпусе аж шесть отсеков 3.5", из которых более-менее адекватно обдувается только четыре нижних, но зато есть ещё пять отсеков 5.25". В двух из них торчал балласт из оптических приводов, потому что когда-то было модно экономить ресурс лазера RW (никому не нужен для музея настоящий привод CD-ROM? Мало того, что он совсем не умеет писать, но DVD даже и не читает by design).

Нижний ярус на 6 отсеков 3.5"
Хм. Любимый сисадминский биатлон (бег с прижатым к уху телефоном, на ходу обжимая витую пару) — всё это не про меня сейчас. Работая с
Интереснее всего вышло с датчиком оборотов: его просто не было, но для наших Мастеров космической связи это было даже смешнее, чем ежа голым задом пугать. Сложнее всего в этой задаче было оторвать Мастеров от игрушек, напоминающих декорации к фильму Империя наносит ответный удар. Зайдешь иной раз в лабораторию, а в ответ: «молодежь, у вас ещё всё спереди, а ну-ка на выход». Ага, Мастера опять волноводы свои тестируют, ретируемся-ка подальше от всех этих излучений большой частоты и мощности, пока ещё всё спереди…
Помню, как бегал полдня по радиорынку в поисках терморезисторов определенного номинала, и с каким замиранием сердца скручивал и запускал всю эту кунсткамеру. Как ни странно, аппаратная часть заработала, ожил датчик оборотов, да и термометр врал всего на пару градусов. Проблема, как обычно, была в банальном отсутствии адекватного софта для сервера noname, работающего под управлением FreeBSD версии 2...
И вот я уже почти собрался повторять свой подвиг двадцать лет спустя, но тут попалась альтернатива в виде EverCool Armor HDD Cooling Box. В спецификации написано, что этот крашеный кусок железа совместим с Intel Core i7. Ого, ну тогда на моем P4 это будет вообще бомба… нет, маркетологи точно нужны, без их приколов мир был бы скучен.

EverCool Armor HDD Cooling Box
Эта штука превращает два 5.25" в три 3.5", что даст возможность посадить в мою «башню» ещё шесть шпинделей и оставить один отсек 5.25" под что-нибудь эдакое. Да, вентилятор тут поменьше и погромче, чем на Cooler Master STB-3T4-E3-GP, но я его заменю на какой-нибудь
Посмотрим, что здесь у нас. Ага, разбирается Armor HDD довольно легко:

Несущая рама из крашеного железа


Сменные вставки на 3.5" или 2.5" (на выбор)

Нужная вставка садится на раму через виброгасящие резиновые втулки

Пластиковая «морда» с откидной крышкой и легкосъемным пылевым фильтром

Кондовый шариковый вентилятор на 26dBa


«Родные»
Кстати: NF-R8 управляется напряжением и имеет три традиционных контакта: земля, датчик оборотов и питание DC 4..13В. У NF-R8 есть более технологичный брат NF-R8 PWM, управляемый уже ШИМ, а напряжением (оно в таких случаях фиксируется на 12В). Так что если у вас есть соответствующее железо, либо если вы самостоятельно разрабатываете схемы на микроконтроллерах, выбирайте правильное изделие.

Закрепляем NF-R8 собственными резиновыми вставками

Рыжий австриец смотрится в Armor HDD совершенно естественно
Итак, взяв свой сисадминский чемоданчик и переделанные заблаговременно корзины, заявляемся зимним субботним утром в офис на регламентные работы. Открываем компьютер, оставляем на столе дисковые внутренности и выходим на улицу подышать. Корпус без дисков непривычно легкий, как кастрюля без супа. С удовольствием и под внимательными взглядами прохожих, набрав полные легкие морозного воздуха, выдуваем пылищу к чертовой бабушке из всех щелочек и радиаторов. Эх, бодра-весела наша русская зимушка-зима! Вспоминается что-то от Николая Алексеевича Некрасова про здоровый и ядреный воздух, который усталые силы бодрит. Провентилировав вместе с сервером заодно и системного администратора, с порозовевшим лицом и небольшим головокружением возвращаемся в уютное тепло офиса. Собираем. Ровняем, нумеруем и подбираем сразу все десять кабелей SATA разборными стяжками.

Макаронные изделия — прочь из серверных корпусов!
Как раскрутить десяток шпинделей
Не секрет, что шпиндельный диск потребляет совершенно различную мощность при раскрутке (старте) и в установившемся режиме. Если рассчитывать на экономичный поочередный старт (staggered spin up), требуется поддержка в контроллере, либо активная дисковая корзина с backplane (которую я не хочу использовать). Поддержка софтом управляемого поочередного старта пока под большим вопросом, хотя APM (Advanced Power Management) на дисках имеется.
Пусковой ток современного шпинделя составляет порядка 2А по линии 12В (у ST2000DM001 даже 2.5А и их не стоит использовать в RAID, но не из-за большей мощности, а по причине отсутствия ERC; читайте habrahabr.ru/post/92701/). Четыре стартующих диска в сочетании с холодной архитектурой P4 без графики уже поместились в 250Вт и проблем не обнаруживали. Ещё шесть дисков — это плюс 6 x 2.0А x 12В = 144Вт. Итого мы целимся на десять дисков и почти 400Вт стартовой мощности с блоком питания номиналом 450Вт. Отработать на пиковом потреблении надо менее полуминуты.
400Вт: много это или мало? По меркам 2005 года столько потреблял настоящий сервер известной торговой марки Ӽарлампий-Панкрат. Сейчас же я вижу в продаже киловаттные потребительские блоки питания, правда, продавцы не подсказали способов истратить более 60% их мощности. Ладно, в сторону маркетинг, мы же делаем очень бюджетную конструкцию, почти из хлама.

Итак, присмотревшись внимательнее к шильдику на блоке ATX-450PNR, видим две независимых линии 12В: +12V1 на 14А (мать, «молексы» и SATA), и дополнительная +12V2 16А (4-контактный разъем mini-fit для питания современных мощных комплектующих). Суммарная мощность по линиям 12В ограничена 360Вт. Но мощную линию с разъемом mini-fit почти на 200Вт нам пока решительно не к чему подключить в нашем архаичном наборе железа, и блок питания 450Вт снова превратился в 250Вт. Делаем беглый взгляд по просторам Интернета на более мощные блоки питания и видим схожую картину: добавленная мощность распределяется порциями по таким же линиям с разъемами mini-fit, только их становится больше (для процессора, видеокарты и других нагревательных элементов современного компьютера).
Настало время для инженерной смекалки.
Как же вынуть эти 200Вт и подать их на диски? По идее, ничто не мешает взять линию на 5В 16А, но вместо общей +12V1 на 14А скрестить в стандартном «молексе» с мощной линией +12V2 на 16А, добавив «земли» туда же. Конечно, можно перекусить плоскогубцами провода, зачистить их своими (или чужими) зубами, переплести жилы пальцами и замотать чем-нибудь поверх, но это идет вразрез с философскими практиками Крепсондо: (1) блок питания на гарантии, (2) короткие замыкания не нужны и (3) надо обеспечить максимальную ремонтопригодность изделия, чтобы быстро заменять отказавший агрегат. Поэтому снова идем за покупками и берем 4-контактный ответный разъем mini-fit, а также Y-образный разветвитель низковольтного питания с «молексами». Клещи-кримпер для mini-fit и «молексов» по странному стечению обстоятельств давно соседствует в моем ящике инструментов с обжимкой для витой пары, машинкой для забивки кроссов и прочими любимыми игрушками сисадмина.
Итак, уединившись как-то вечером на кухне, извлекаем наши покупки для игры wirecraft. Чтобы скрафтить нужный Ҳ-образный разветвитель низковольтного питания, нужно соединить на столе пустой разъем mini-fit, Y-образный разветвитель и кримпер (не путать с крипером).



Через два часа крафта и нескольких испорченных контактов нужный переходник в виде буквы Ҳ всё-таки появляется на столе, а кримпер теряет порядка 0,01% durability.


Полученный в итоге Ҳ-переходник встретился с блоком питания, как Ромео с Джульеттой, образовав надежное разборное соединение с защелкой. Если надо будет срочно заменить блок питания, всё разбирается и собирается обратно без всякой пайки, изоленты и матюков.

Переставляем шесть дисков в корзины верхнего яруса 5.25", спрятав их за пылевые фильтры. Нижний ярус пока свободен, поэтому отсоединяем нижний вентилятор, чтобы не тянул пыль зазря. Подключаем питание шести верхних дисков на отдельную линию через только что собранный переходник. Собираем, включаем, тестируем тракты SATA. Выбрасываем очередной выявленный ХERIAL ATA кабель. Берем припасенный специально на такой случай запасной кабель (клянусь, правда), ещё раз включаем, снова проверяем тракт SATA. Работает.
Посмотрим, какой бравый красавец получился из старины Зевса.

Корпус с двумя корзинами теперь вмещает Χ дисков
О пользе пылевых фильтров
Так уж совпало, что незадолго до установки корзин в нижнем дисковом ярусе сработала тревога по перегреву, о чем я тут же прочитал уведомление на смартфоне благодаря smartd(8) и FreeNAS Email Alert: в этом и состоит главная польза от телеметрии. Оказалось, что самый верхний диск в группе разогрелся аж до 45°C, и это при том, что на улице мороз где-то -25°C. Вот так номер! Других уведомлений не приходило, значит, зеркала не бились, и реконструкций массивов не было. Заглянем по SSH. Вся четверка шпинделей уютно пригрелась друг к другу, выполняя какое-то там обычное копирование с пары на пару. По мере продвижения по четверке сверху вниз температура падает на 2..3°C с каждым диском. Поставив по-быстрому mbmon(1), видим, что тот самый вентилятор в труднодоступном месте (см. начало истории) крутится себе с вполне нормальной скоростью (это рассказал установленный на материнской плате Winbond W83627). Что за чертовщина? Вспоминаем, что площадка — это далеко не зал ЦОД с классом чистоты Ẋ, а довольно стандартный офис с обычной пылью, которую наш ящик пылесосит уже почти полгода. Представив себе, как это инженерное проклятие набилось в весьма жадные зазоры между дисками, я подумал, что надо как-то решать проблему фильтрации и переставил все имеющиеся шесть дисков в верхний ярус 5.25".
Так что не пренебрегайте пылевыми фильтрами в нафаршированных корпусах: иначе это либо тепловая мина замедленного действия (на малых оборотах), либо звонкий аэродром (на высоких оборотах вентиляторов). Обслуживание штатных пылевых фильтров элементарно: раз в месяц открываем крышку на «морде», достаем фильтр, стираем в раковине обычным мылом, отжимаем руками, обстукиваем слегка от капель и вставляем обратно. Идеальной сухости не надо, чай не насос высокого давления, в корпус воды не натянет. Вместо горячей замены дисков — горячая замена фильтров, тоже неплохо.


Фильтр после месяца работы в офисе на самых нижних оборотах
Выводы
- Потребительские блоки питания плохо предназначены для серверных задач (спасибо, Капитан Очевидность).
- Для поочередного запуска (staggered spin-up) нужна активная дисковая корзина с backplane (дороже и не всегда надежнее), либо APM на дисках и поддержка софтом (не нашел таковую).
- У бытового блока питания хватает мощности на старт десяти дисков, но эту мощность нужно брать с отдельной линии через переходник низковольтного питания.
Четыре ночи подряд доставал сисадмина проклятый мужик, являясь во сне при тех же обстоятельствах и с теми же перспективами. И все четыре раза сисадмин в самый неудачный момент просыпался от избытка чувств (весна, молодой растущий организм и всё такое).
На пятую ночь молодой человек, наконец, овладел техникой управления сном. И хоть был он совершенно традиционной ориентации, но от накопленной злости успел таки засадить свой нефритовый йенг мужику промеж зубов ровно до того момента, как проснулся. Потому что молодым сисадминам тоже нужны любовь и ласка.
Ссылки
www.coolermaster.com/case/case-accessories/4-in-3-device-module/
www.evercool.com.tw/products/hd-ar.htm
www.noctua.at/main.php?show=productview&setlng=en&products_id=9
www.fsp-power.ru/product/atx_450pnr
www.fsp-group.com.tw
www.wikipedia.org/wiki/Spin-up
www.brownbear.ru
www.freebsd.org/cgi/man.cgi?query=smartd&manpath=ports&sektion=8
www.freebsd.org/cgi/man.cgi?query=mbmon&manpath=ports&sektion=1
doc.freenas.org/index.php/Settings#Email_Tab
Другие части истории про ещё один NAS своими руками:
часть 1: из того, что было
часть 2: хорошие воспоминания
часть 3: приключения в старой башне
часть 4: призрак Чернобыля
комментарии (0)