Ещё один NAS своими руками, часть 3: приключения XXX в старой башне

Интересно, мечтал ли кто-нибудь в детстве затолкать десяток шпиндельных дисков в свой домашний ПК и вообразить себя бравым Командиром Сервера? Что же, после цехов ИКМ, узлов космической связи, кабельных жгутов толщиной с баобаб, ЦОДов разных мастей и прочих весьма насыщенных железом помещений детские мечты, наконец, сбываются.Но просто воткнуть десяток шпинделей в «башню» недостаточно, их ещё надо раскрутить и обдуть. Тут мы не станем петь молебны очередному серверному корпусу известной марки СтупорМиксер, а выступим в жанре рационального минимализма с железякой за $30. Ещё из этого поста читатель узнает о том, куда пропадает почти половина мощности у обычного блока питания, об отказах на ровном месте, о волшебстве телеметрии, о некоторых стилях юниксового кунгфу, о правах доступа без ACL и к чему приводит использование старых дисков в новых серверах. Пасхальные яйца и обещанная история XXX рассеяны по посту;-)Но сперва я хочу рассказать, как деталь стоимостью менее $1 может «испортить» диск за $100.

DISCLAIMER Информация предоставляется AS-IS без какой-либо ответственности за ее использование кем-либо, где-либо и когда-либо. Все ненароком упомянутые торговые марки являются собственностью соответствующих владельцев. Некоторые из них в рекламе уже настолько не нуждаются, что я придумываю им шуточные названия.Пасхальные яйца Прочитав недавно пост про святого Исидора Севильского, я тоже решил порадовать любителей квестов нехитрым развлечением. В обычном шрифте Arial я насчитал почти десяток различных символов, более-менее похожих на «икс», и раскидал их по тексту. Найдете? +1 хабракармы первым 30 нашедшим восемь уникальных заглавных «иксов». Если хотите участвовать, присылайте (лично мне!) в течение 10080 минут после публикации поста восемь кодов символов и само слово/контекст, где нашли. Результаты будут в комментариях. ХERIAL ATA: новое название старой проблемы Итак, вы только что истратили часть семейного (или фирменного) бюджета на новёхонький накопитель неприличной ёмкости, но не успели ещё улетучиться ароматы нового железа, как диск «посыпался». Не спешите паниковать! Если вы нечасто занимаетесь сборкой, продавец с большой вероятностью и цинизмом отправит вас обивать пороги сервисных центров, а дело может быть в интерфейсном кабеле ценой пятьдесят европейских копеек. Судите сами: из десятка купленных в разных местах кабелей SATA лично мне пришлось заменять целых три штуки (а это 30%, между прочим). Уж не знаю, вопрос ли это везения, репрезентативности выборки, кривизны рук или ещё чего, но первый же попавшийся тематический пост Three key strategies to prevent RAID failure лишь укрепил меня в уверенности: According to the study, array failures result from disruptions in the protocols used to transfer data from application software to disk; failures of interconnect devices (including controllers, power supplies, fans and cabling); and failures in the disk drives themselves. In high-end storage systems, disk drive failures are the leading cause of array failures, followed closely by interconnect failures. Midrange arrays demonstrate roughly the same failure rates, while low-end storage systems exhibit higher failure rates in the interconnect category — presumably because devices do not ship with or support redundancies in interconnect components.

Если даже не вырывать фразы из контекста, интерфейсные кабели — это просто дешёвый расходный материал, поэтому относитесь к ним, как к туалетной бумаге.Если интересна этимология названия ХERIAL ATA, то первую букву следует читать по-русски. Выявив описанной далее методикой экстрасвойства у кабеля, я просто решил пометить его крестиком, который случайно попал на букву S. Прочитав получившееся слово, я даже решил сложить об этом пост.

82f48f8aa3ef3bf258b1525db94ce4cf.jpgКабель ХERIAL ATA

Кстати: философские практики Крепсондо учат помечать дефектные изделия сразу — это привычка, которая не раз экономила мне и время, и деньги. Но если вы считаете, что месть — блюдо, которое надо подавать холодным, тогда храните дефектные кабели, битые диски, глючную память и горелые блоки питания в одной коробке с исправным железом, никак не помечая. Уверяю, что кому-то это будет очень холодным и очень горьким блюдом. Возможно, вам. А слово ХER читается как иксер и может применяться к «человеку, занимающийся Х», что бы это ни значило…

Как выявить дефектный кабель На регулярных операциях плохой интерфейсный кабель SATA можно распознать в S.M. A.R.T по ненулевому «сырому» значению атрибута UDMA_CRC_Error_Count (см. RAW VALUE). Этот атрибут характеризует только качество тракта SATA, независимо от состояния магнитных поверхностей. Сразу же после установки нового диска (но лучше до инициализации файловой системы) рекомендую погонять массивные (порядка Гб) операции чтения и записи, поглядывая на программу-монитор SMART. Если операции идут с ошибками, а системный журнал пестрит сообщениями «ATA Status Error», «Retrying command», возможно, что виноват не дорогой аромат нового диска, а всего лишь дешёвый запах шнурка.С вашего позволения, дорогие читатели, я дам несколько примеров использования утилиты dd (1) в сочетании со smartctl (8). В других системах надо просто скачать нужную утилиту (см. викисписок) и погонять небольшую, но увесистую группу файлов туда-сюда обычным копированием, чтобы хорошенько загрузить интерфейс. Любимая коллекция порнофильмов подойдет в самый раз.Внимание: первая команда деструктивная, выполнять следует до заселения нового диска 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 0×003e 200 75 Было замечено, что одним лишь чтением спровоцировать ошибку не всегда удается, поэтому добавлена запись. В примере счётчик ошибок у диска ada1 достиг 75, а для замены кабеля лично мне достаточно и единицы.Для успокоения можно также запустить и внутренний тест поверхности. Внутри современного диска собран целый арсенал диагностических утилит (а у некоторых экземпляров там чуть ли не метеорологическая станция запрятана). Чтобы добраться до всего этого чуда инженерной мысли, достаточно открывалки простого швейцарского ножа: запуск, проверку хода и получение результатов теста делаем той же утилитой smartctl (8), в описании можно найти и другие варианты тестов (быстрый, длинный, селективный и т.д.).

Пример запуска длинной проверки для диска 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, а проверяет, грубо говоря, только состояние «блинов».Проверим ход и результаты всех тестов диска ada1:

# 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 - Здесь тест прошел 10% (осталось 90%), пока ошибок не выявлено (прочерк в LBA_of_first_error), и в момент начала проверки диск отработал суммарно 123 часа. Всё это хранится в энергонезависимой памяти.У системы FreeNAS вы сможете включить подобные тесты в пакет автоматизированной самодиагностики и собирать отчёты по расписанию (см. телеметрические примеры далее). Можете взять себе за правило раз в месяц (или чаще) проверять отчёты для раннего выявления неполадок. На самом деле, в этом и состоит работа хорошего Командира Сервера.

Выводы Если проблема действительно с подключением, немедленно тушите сервер, сливайте масло, вынимайте кабель и ставьте на нём крест. Или выкидывайте сразу к чёртовой бабушке (а лучше всё вышеперечисленное). С победным ликом доставайте припасенный заранее новый кабель и ставьте его взамен выброшенного. Хотя снаряд бьёт в ту же воронку крайне редко, обязательно проверяйте и новый кабель. Ведите свой учет ошибок по каждому серийному номера диска: после каждой замены кабеля записывайте значение RAW_VALUE атрибута UDMA_CRC_Error_Count, а если кто-то знает универсальный способ сбрасывать только этот атрибут, напишите мне в личку, пожалуйста.Волшебство телеметрии Уверен, все согласятся, что отказавший диск в массиве необходимо заменить как можно скорее. Если для кого-то это неочевидно, я рекомендую почитать тематические статьи, хотя бы эту: A failed RAID drive needs immediate attention.Мне кажется, что несмотря на полный инженерный консенсус, теория с практикой сильнее всего расходятся именно в этом месте: отказавшие диски продолжают тихо сидеть в серверах, как мыши под вениками мины замедленного действия. И это касается не только малых офисов, за которыми следят молодые и неопытные сисадмины. Я где-то читал статистику потерь данных на крупных предприятиях, и одной из весомых причин был именно недосмотр за массивами. Отказавшие диски ухитрялись месяцами сидеть в своих корзинах горячей замены, незамеченные никем. Обычно это заканчивалось отказом второго диска, когда рассыпался уже том, и срабатывала совсем другая сигнализация в виде рассерженного Бизнеса. Поэтому предлагаю быть мудрее и заняться этой проблемой, не откладывая.Самая доступная телеметрия Братцы, если вы используете FreeNAS, включите хотя бы уведомления по email, благо Интернет есть практически везде, да и смартфоном сейчас можно удивить разве что большого жирафа. Не любите смартфоны (бывает и такое) — заведите себе, наконец, планшет, 21-ый век на дворе. Даю пример для Gmail, без порта 25: Создать отдельный системный ящик на Gmail (бесплатно же! не мешайте личную почту с мониторингом системного здоровья). Задать в настройках (Email Tab) имя сервера: smtp.gmail.com, порт 587, включить режим TLS и SMTP-аутентификацию (использовать адрес отправителя, username и пароль от вновь созданного ящика — еще одна причина создать отдельный). Добавить сбор почты с вновь созданного ящика Gmail на смартфоне; приложение Почта Gmail позволяет быстро и удобно переключаться между ящиками. Дополнительно проработать раскладывание скучной периодики регулярных отчётов по папкам так, чтобы телефон «брынькал» только от аварийных событий. Кстати: начиная с релиза 9.2, во FreeNAS отключили ежедневные отчёты «ни о чем», чтобы не отвлекать наше драгоценное внимание. И я очень рекомендую всем действовать в том же ключе: система должна кричать «волки!» только тогда, когда они действительно собираются сожрать вас вместе с вашими данными. И первым должен узнавать о проблеме не пользователь, а Командир Сервера. В этом и есть его основная задача.

Но это не все, дорогие читатели. Вся соль в том, что alias пользователя root теперь тоже завернут на созданный ящик Gmail. Поэтому те из вас, кто владеет юниксовым кунгфу, теперь смогут отправлять простые отчёты по почте обычной командой mail (1) без всяких выкрутасов. Например, вот так я отправляю отчёты SMART по Cron Jobs: #!/bin/bash

for i in 0 1 2 3 4 5 6 7 8 9; do smartctl -x /dev/ada$i | mail -s »$HOSTNAME SMART report ada$i `date '+%Y-%m-%d'`» root done Между прочим, smartctl в таком виде затягивает и упомянутый выше журнал самодиагностики, так что я могу при желании оценить состояние дисков буквально на бегу, не подключаясь к серверу. Согласитесь, оно того стоит.Вещи позаковырестее (наподобие резервной копии настроек), конечно, придется одеть в base64 и обуть в правильные MIME-заголовки, либо хотя бы завернуть в uuencode (1).

Как S.M. A.R.T подрался с APM FreeNAS использует подсистему smartd (8) для мониторинга температуры дисков и критических отказов. Дополнительные настройки (S.M. A.R.T. extra options) задаются по формату smartd.conf (5).Интересная коллизия происходит при попытке одновременного использования мониторинга S.M. A.R.T. и функции HDD STANDBY из раздела управления дисками. Если задать интервал опроса Check interval короче, чем время «ухода» диска в STANDBY, то SMART своими опросами будет все время перезаряжать таймер обратного отсчёта диску, и он никогда не «заснёт». Если действительно надо усыпить диск, ставим интервал опроса SMART больше, чем тайм-аут STANDBY, а smartd (8) уже обучен деликатному обращению со спящими дисками. Профессионалы, правда, не рекомендуют тушить диски, т.к. они на циклах старт-стоп шпинделя стареют быстрее, чем от регулярной половой жизни постоянной работы.Память и процессы Система FreeNAS версии 9 использует collectd для сбора и отображения исторической статистики в своём графическом интерфейсе. Вы можете посмотреть, например, расход ОЗУ за месяц. Как я уже писал в предыдущей части, статистика накапливается на RAM-диске и один раз в час сохраняется целиком в разделе /data на системной флэшке, благодаря чему вся информация выживает между перезагрузками. Это одно из отличий нового FreeNAS от NAS4free: возможности последнего в плане сбора полезной статистики достаточно рудиментарны.Добрый старый syslog Если есть возможность, рекомендую завести себе где-нибудь сервер под *nix* (можно виртуальный) и построить до него туннель для приема syslog. Со стороны FreeNAS есть тривиальная настройка Syslog server. На принимающей стороне надо не забыть открыть нужный порт (обычно 514/udp), хорошо также раскидать сообщения от разных хостов по файлам. Например, для rsyslog версии 5.6 можно добавить близко к началу rsyslog.conf такую конструкцию: $ModLoad imudp $UDPServerRun 514 $template FILENAME,»/var/log/%fromhost-ip%/messages.log» *.* ? FILENAME Этот вариант телеметрии можно усилить, заставив S.M. A.R.T регистрировать изменения всех атрибутов. Для этого достаточно зайти в раздел управления дисками и добавить простой флажок ``-a'' в поле S.M. A.R.T extra options.Не забывайте о ротации логов, иначе они забьют диск. Думаю, это не нуждается в комментариях.Хранение логов отдельно от системы — вообще очень полезная концепция, и не только с точки зрения информационной безопасности, но и для оперативного принятия решений. Представьте себе, что сервер внезапно пропал из сети, либо к нему нет доступа. Держа логи в своём «облаке», можно еще до визита на площадку хотя бы попытаться понять, что с ним происходило за сутки, за час или за минуты до аварии. Иногда это очень ценная возможность.Облачное хранение отчётов По сути, архив отправленных отчётов в Gmail является практически СУБД с протоколом доступа IMAP/POP3. Складируйте туда информацию, а когда придет время, желание и вдохновение, берите в руки perl (PHP, Python, да хоть Visual Basic), подключайтесь и ваяйте на здоровье парсеры и анализаторы чего-нибудь. Gmail использовать необязательно, бесплатных почтовых сервисов много.Выводы Готовая телеметрия — полезнейшая функция FreeNAS, и использовать ее хотя бы в базовом варианте с email обязательно. Об аварии или предпосылке к ней первым должен узнать Командир Сервера, а не Бизнес.Кунгфу с зеркалами Заодно я решил немного рассказать об опыте эксплуатации FreeNAS с томами UFS, использующих аппарат GEOM и gmirror (8). Почему я отказался от модной файловой системы ZFS, написано в первой части истории.Стиль ящерицы В первой части истории я уже писал, что всех производителей дисков можно считать начинающими программистами: один килобайт у них принят строго по системе СИ и равняется 1000 байт. Интересно, что при этом физический сектор может быть, например, 512 или 4096, но никогда не 500 или 4000 байт. Но это так, к слову: знайте свой диск, для любой файловой системы важен размер физического блока.Для нас более важно то, что производитель по-разному контролирует случайные дефекты на разных моделях, отдыхая, понятное дело, на бюджетных дисках для домашних компьютеров. Мне попались четыре вроде бы одинаковых диска ST2000DM001. Два оказались объемом ровно 2000398934016 байт, два других — примерно на 2Гб меньше, но и этого мало: между последними обнаружилась разница ещё в 13Мб. По идее, нехватка 2Гб — это вообще нарушение моих прав покупателя, но я решил плюнуть и не тратить время на разборки с продавцом. Пострадать тут можно из-за того, что при попытке заменить отказавший диск на новый эта самая нехватка в 2Гб не даст реконструировать массив. И тогда либо придется снова бежать в магазин за диском уже в 3Тб, либо переделывать массив целиком…Но давайте перехитрим силы зла, подсунув жадному производителю и циничному продавцу от мёртвого осла уши. При создании массива оставим в конце технологический запас, эдакий хвост ящерицы, который можно при желании потом отстрелить откинуть. Вполне естественным желанием тут будет создание «опалубки» из разделов GPT нужного размера, куда потом заливается тот же gmirror (8). Но меня остановило то, что gmirror (8) во FreeNAS работает по умолчанию только с «сырыми» дисками, т.е. с разделами GPT можно в теории нарваться на проблему поддержки и затем потеть на каждом апгрейде. Поскольку это не домашняя система, я решил найти способ ограничения размера тома на «сырых» дисках, который и приведу здесь: # Загружаем модуль zero для «опалубки» geom zero load

# Создаём опалубку тома нужного размера, оставив от 2Тб хвост примерно 4Гб: gnop create -s 1996103966720 gzero

# Заливаем в опалубку первую половину зеркала — диск ada0, пометив том MIRROR1 gmirror label -v MIRROR1 gzero.nop ada0

# Зеркало затвердело, разбираем опалубку и освобождаем системный ресурс gmirror forget MIRROR1 gnop destroy gzero.nop geom zero unload

# Создаем на половине зеркала файловую систему с размером блока 4096 байт, по физическому сектору диска newfs -U -f 4096 /dev/mirror/MIRROR1

# Прикуриваем второй диск ada2 от первой половины ada0; ВНИМАНИЕ: начинается полная синхронизация! gmirror insert MIRROR1 ada2

# Смотрим, что получилось gmirror status Правда, описанный трюк (А) не даст использовать хвост и (Б) никак не восполняет отсутствие ERC на моделях ST2000DM001, ST3000DM001 и ST4000DM001, и потому они для RAID малопригодны (читайте habrahabr.ru/post/92701). Если и рассматривать продукцию Seagate, то для массивов гораздо лучше подойдут модели ST2000VN000, ST3000VN000 и ST4000VN000: помимо наличия ERC, они строго выдерживают объём в 2000398934016 байт, меньше греются на своих 5900rpm, да и стоят всего лишь чуть-чуть дороже десктопных братьев.Я не настаиваю на том, что это единственный вариант. Если читатель предпочитает GPT или желает разместить в хвосте, скажем, swap, то можно сделать опалубку и на разделах GPT. Примеров в Интернете можно найти массу, если желаете, я вклею прямо сюда.Стиль кошки Сколько я ни менял подключение дисков к портам контроллера, gmirror (8) всякий раз, подобно кошке, приземлялся на четыре лапы. Поэтому могу сказать уверенно: gmirror (8) не боится перестановки «сырых» дисков, а опознаёт их по метаданным. Переставляйте, сколько хотите. Если сделаете разделы на GPT, тоже должно работать. Из преимуществ использования gmirror (8) на GPT я увидел только возможность разместить на тех же дисках ещё и swap где-нибудь в зоне «хвоста ящерицы».Стиль черепахи Самое узкое место нашего винтажного сервера — конечно же, шина PCI, дающая меньше, чем любой из дисков на линейном чтении. Из опыта эксплуатации могу подтвердить комментарий пользователя AMDmi3: если теребить файловую систему операциями, то вероятность полной синхронизации после «плохого» выключения весьма велика. Если не теребить — можно легко проскочить вообще без синхронизации. Надо понимать, что у FreeNAS отключена фоновая проверка UFS (background_fsck=«NO») и старт системы с одновременной проверкой тома может сильно растянуться во времени. Если на шину PCI навалятся сразу несколько зеркал с намерением синхронизироваться, то… лучше даже не думать, что будет. Очень грустно все будет.К счастью, мой разборный БАФ по условиям эксплуатации позволяет запечатать некоторые части данных в read-only. Временно переключать том на запись, кстати, большого труда не составляет. FreeNAS такого в GUI сделать не даст, но можно снова применить кунгфу и изменить кое-что прямо в местном аналоге fstab: FreeNAS# sqlite3 /data/freenas-v1.db SQLite version x.x.x.x 20xx-xx-xx xx: xx: xx Enter ».help» for instructions Enter SQL statements terminated with a »;» sqlite> .mode html sqlite> .headers ON sqlite> select * from storage_mountpoint; mp_path mp_options mp_volume_id id /mnt/VOL1 rw 1 1 /mnt/VOL2 rw 2 2 /mnt/VOL3 rw 3 3 Полагаю, дальше всё понятно. Менять таблицу вручную — риск ещё больший, чем использование разделов GPT. Решайте сами.Стиль паука Есть у разборного массива один недостаток: его неудобно «расшаривать» по сети. Создавать отдельную «шару» на каждый том довольно неуклюже для Бизнеса, вдобавок FreeNAS дает расшарить только папки хранилища, но принципиально не дает системные папки: можно, например, /mnt/VOL1, но нельзя /mnt или /tmp. Хочется найти способ согнать все тома в одну точку, но при этом не вкладывать один в другой: чем лучше третий, если появится четвертый, а первый планируется выключить? Вдохновившись одним постом, я придумал такой способ: На каждом томе обязательно создается главный каталог, например, /mnt/VOL1/PUBLIC,/mnt/VOL2/PUBLIC и т.д. Пользовательские папки в корне не создаются, ни при каких обстоятельствах. Либо на одном из томов, либо на дополнительной флэшке создается «монтажная площадка», например, /mnt/SITE, куда будут выведены все главные каталоги. В ней же создается каталог PUBLIC, а под ним — пустые точки VOL1, VOL2, VOL3 для монтажа для каждого тома. С помощью инструмента FreeBSD mount_nullfs (8) на соответствующие точки стартовыми скриптами монтируются (инжектируются) главные каталоги каждого тома. Кстати, на диалекте Linux это называется просто: mount --bind. Расшариваются только главные каталоги, например, /mnt/SITE/PUBLIC. В перспективе здесь же на монтажной площадке можно будет расположить домашние папки пользователей /mnt/SITE/HOME/%username%, а в них инжектировать папки, связанные с конкретными бизнес-процессами. Так можно построить довольно кучерявую систему прав доступа, не мучаясь с ACL. 6b350e7f3f828bd26a4603067dd03720.pngПаутина монтированных разделов переплетает между собой тома и их представление для пользователей

Но в стиле паука есть один неудобный нюанс. Дело в том, что свободное дисковое пространство, отображаемое клиентам, будет рапортовать по состоянию монтажной площадки, а не томов. Например, когда я построил площадку на флэшке 1Гб, то и видимое по сети свободное пространство всех моих томов сжалось до одного несчастного гигабайта, и клиент под Windows 7 сразу же отказался записывать туда крупные файлы. Да и вообще, понятие свободного дискового пространства на составном томе весьма относительно.К счастью, сама Samba позволяет выкрутиться из этой истории, да и FreeNAS не препятствует. Есть такой удар в нашем кунгфу, известный как dfree command. Опытный мастер может изложить системе полностью своё видение пространства в папке и его расхода, написав нехитрый скрипт на любимом языке. В простейшем случае можно даже взять целиком ответственность на себя, независимо от фактической ситуации рапортуя десять совершенно свободных терабайт:

#!/bin/sh echo 10737418240 10737418240 В системе FreeNAS расположение скрипта задается в опции Auxiliary Parameters настройки Windows (CIFS) Shares, например, так: dfree command = /mnt/SITE/scripts/mydfreeОднако, этот приём отработан только на CIFS и адекватен ровно до того момента, пока свободного места действительно хватает. При записи на заполненную до отказа часть тома произойдет, понятное дело, отказ. Пользователь, по штатному расписанию кунгфу не владеющий, естественным образом его проглядит, а в потере данных будет виноват уже мастер дорогой читатель. Поэтому будьте аккуратны, совмещайте с другими стилями, используйте телеметрию. Например, можно было бы применить описанный выше стиль черепахи для консервации всех томов, кроме последнего, и давать актуальную информацию только по нему. Выбирать вам, дорогой Мастер Юниксового Кунгфу!

Старый диск: казнить нельзя помиловать В самом начале, при сборке системы я всё-таки оставил в ней старый диск Seagate ST3120827AS, унаследованный от прошлой жизни компьютера. Не преследуя конкретной производственной цели, я разместил на нем swap и тестовый раздел. После примерно полугода работы старый диск ухитрился отказать на перезагрузке, аккурат между своим обнаружением и проверкой файловой системы, прервав старт самым неудачным способом: /dev/ufs/T1: CANNOT READ BLK: xxxxxxx /dev/ufs/T1: UNEXPECTED SOFT UPDATE INCONSISTENCY; RUN fsck MANUALLY.

THE FOLLOWING FILE SYSTEM HAD AN UNEXPECTED INCONSISTENCY: ufs: /dev/ufs/T1 (/mnt/T1) File system preen failed, trying fsck -y

Can’t stat /dev/ufs/T1: No such file or directory

Mounting late file systems: mount: /dev/ufs/T1: No such file or directory. Mounting /etc/fstab filesystems failed, startup aborted ERROR: ABORTING BOOT (sending SIGTERM to parent)! init: /bin/sh on /etc/rc terminated abnormally, going to single user mode Enter full pathname of shell or RETURN for /bin/sh: Для тех, кто не привык к юниксовым ребусам, перевожу системное сообщение: «хозяин, диск отчудил, поэтому отменяю взлет и прошу немедленно вмешаться». В такой момент достаточно нажать ENTER, но для этого надо подключать клавиатуру, монитор и, главное, хотя бы быть на площадке! В следующей части я расскажу, как можно подготовиться и к таким раскладам…Выводы Не стоит использовать старые диски в сервере даже для тестов, если сервер предназначен для производства (спасибо, Капитан Очевидность). Увы, тома UFS делают всю систему чувствительной к отказу одного тома.Χ* дисков в старой башне *здесь Χ означает римскую «десять«Столкнувшись с ХERIAL ATA, я лишний раз убедился, что бюджетные изделия — это территория спонтанных отказов на ровном месте. Есть у меня также субъективное предубеждение против бюджетных корзин SATA с «горячей заменой» (у которых backplane с микроконтроллером). Во-первых, эта дешёвая имитация серверных технологий вовсе не дешёвая. Во-вторых, после дефекта простого кабеля можно себе представить, что бывает в более сложных устройствах. Порой они способны угробить данные гораздо быстрее глючного контроллера или больного блока питания. Но поскольку это провокационное утверждение, я разместил в конце поста опросник, и мне интересно знать мнение хаброкомьюнити.

В моем стареньком башенном корпусе аж шесть отсеков 3.5», из которых более-менее адекватно обдувается только четыре нижних, но зато есть ещё пять отсеков 5.25». В двух из них торчал балласт из оптических приводов, потому что когда-то было модно экономить ресурс лазера RW (никому не нужен для музея настоящий привод CD-ROM? Мало того, что он совсем не умеет писать, но про DVD даже и не знает).

86f7f750910125185ecda6180032f9d6.jpgНижний ярус на 6 отсеков 3.5»

Хм. Любимый сисадминский биатлон (бег с прижатым к уху телефоном, на ходу обжимая витую пару) — всё это не про меня сейчас. Работая с хламом бюджетными решениями, я предпочитаю максимально упрощать конструкцию, а с невозможностью горячей замены позволяет мириться задача. Поищем что-нибудь простенькое: немного алюминия, большой вентилятор, поменьше мозгов, желательны виброгасящие резиночки. Поначалу приглянулось изделие Cooler Master STB-3T4-E3-GP, которое мозолило мне глаза всё лето 2013 г., но в нужный момент оно испарилось из местного ритейла без всякого предупреждения. Чёрт. Ну не заказывать же кусок металла по $30 с доставкой за столько же. В голову полезли всякие неправильные решения: от ренегатских активных корзин до обычных салазок, с брутальным навесом из пивных банок для вентилятора.

Флэшбэк из веселых 90ых Работал я тогда в одном рассекреченном ящике. Получили мы однажды просто гигантский промышленный серверный корпус где-то на 8U, хоть и с киловаттным блоком питания, но совершенно бестолковый в плане обдува дисков и мониторинга здоровья. Сервер надо было собрать и отвезти на бывшую АТС М9, где только-только начинался обмен трафиком (мы знаем её теперь как MSK-IẌ, а тогда под обмен было занято всего два этажа с половиной).Эксплуатация сервера началась с буквально искромётного тестового запуска в лаборатории, после чего с продавцом состоялся примерно следующий диалог: — Здравствуйте, у нас отказал промышленный сервер.— А сколько он проработал? — Э-э… секунды полторы, не более.— ?! И как это было? — Хлопок, сноп искр из блока питания и немного дыма.— (после паузы) Ладно, привозите…На плате управления отказоустойчивым блоком питания щедрые азиаты оставили, наверное, полстакана припоя, и наши Мастера космической связи, взглянув на качество пайки, только презрительно хмыкнули. Пока везли новый блок питания (на это уйдет в итоге полгода, но я ещё этого не знал), я решил как-то позаботится о горяченькой барракуде 7200rpm. Завозимые тогда в страну вентиляторы были «масляные» чуть менее, чем полностью, но я нашёл один «шариковый» в куче хлама. Правда, навес для него пришлось вырезать чуть ли не из куска ведра, и сейчас я даже не помню, как мне удалось сделать отверстие круглым…Интереснее всего вышло с датчиком оборотов вентилятора: его просто не было, но для Мастеров это было даже смешнее, чем ежа голым задом пугать. Сложнее всего было отвлечь Мастеров от их игрушек, напоминающих декорации к фильму Империя наносит ответный удар. Зайдешь иной раз в лабораторию, а в ответ: «так, молодежь, а ну-ка на выход, у вас ещё всё спереди». Ага, Мастера опять волноводы свои паяют, ретируемся-ка подальше от всех этих излучений высокой частоты и большой мощности, пока всё ещё действительно спереди…Помню, как бегал полдня по радиорынку в поисках терморезисторов определенного номинала, и с каким замиранием сердца скручивал и запускал всю эту кунсткамеру. Как ни странно, аппаратная часть заработала, ожил датчик оборотов, да и термометр врал всего на пару градусов. Проблема, как обычно, была в банальном отсутствии адекватного софта для сервера noname, работающего под управлением FreeBSD версии 2… И вот я уже почти собрался повторять свой подвиг двадцать лет спустя, но тут попалась альтернатива в виде EverCool Armor HDD Cooling Box (или просто HD-AR). В спецификации написано, что этот крашеный кусок железа совместим с Intel Core i7. Ого, ну тогда на моем P4 это будет вообще бомба… нет, маркетологи точно нужны, без их причуд мир был бы скучнее.b18c40008412efb0efff2d7e4f9aa898.jpgEverCool Armor HDD Cooling Box (HD-AR)

Эта штука превращает два 5.25» в три 3.5», что даст возможность посадить в мою «башню» ещё шесть шпинделей и оставить один отсек 5.25» под что-нибудь эдакое. Да, вентилятор тут поменьше и погромче, чем на Cooler Master STB-3T4-E3-GP, но я его заменю на какой-нибудь майбах мерседес из мира вентиляторов. Например, на австрийца Noctua NF-R8 (от Штутгарта недалеко уехали, кстати). Продавец, дайте по два и того, и другого!

Посмотрим, что здесь у нас. Ага, разбирается HD-AR довольно легко:

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

d290b6e4f9947cc25eccb5da7bac7b22.jpg3ca4f69390ea109b57f81f28774c6a7b.jpgСменные вставки на 3.5» или 2.5» (на выбор)

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

aa835bc531a67ee86cd31bb0034950b4.jpgПластиковая «морда» с откидной крышкой

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

0c02ec5b6a3ee9d19914bf19e1b76880.jpga0fa94da2192d79c8245ee3a910b105f.jpg

Лендроверы пару родных вентиляторов от HD-AR сразу же меняем на мерседесы рыжебородых австрийских близнецов Noctua NF-R8. Резисторную вставочку подберем позже, в комплекте с NF-R8 дается аж две: на 1300rpm (шум 10dBa) и 800rpm (7dBa). Без вставочки будет 1800rpm на 17dbA.

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

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

883259ff9dd88375b0cbf8e68ea74c50.jpgРыжий австриец смотрится в HD-AR совершенно естественно

У этой конструкции один недостаток: «горячая» замена возможна только для пылевых фильтров, а для замены диска требуется вынимать корзину из корпуса (но не разбирать ее). Время замены диска увеличивается примерно до 20 минут полного останова, что для моей задачи оказалось допустимо. Зато между дисковым контроллером и диском нет ничего, кроме кабеля.

Кстати: количество циклов «втыкания» у обычного разъема SATA обычно составляет 50 раз, в отличие от eSATA

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

Так намного красивее, но не увлекайтесь: тугой жгут может слишком сильно потянуть «на себя», и в результате через некоторое время из какого-нибудь неудачливого диска может вырвать питание или интерфейс. Это же обычные, почти бытовые изделия, в них не предусмотрена защита от ударов и вибраций в виде замков и защёлок. Убедитесь, что кабели слегка провисают без напряжений.

Как раскрутить десяток шпинделей Не секрет, что шпиндельный диск потребляет совершенно различную мощность при раскрутке (старте) и в установившемся режиме. Если рассчитывать на экономичный поочередный старт (staggered spin up), требуется поддержка в контроллере, либо активная дисковая корзина с backplane (которую я не хочу использовать). Поддержка софтом управляемого поочередного старта пока под большим вопросом, хотя APM на дисках имеется.Пусковой ток современного шпинделя составляет порядка 2А по линии 12В (у ST2000DM001 даже 2.5А и я опять скажу, что их не стоит исп

© Habrahabr.ru