Archive for the ‘Технологии’ Category.

Перенос Ubuntu с обычного диска на MD RAID

Несколько раз добавлял зеркало gmirror для единственного диска во FreeBSD. Даже данные не надо мигрировать - все достаточно просто и документировано.

А вот в Ubuntu 9.10 как то не заладилось, убил практически целый день. Из толковых инструкций, что удалось найти, понравилась вот эта. Многа букав! Инструкция в готовом виде, к сожалению, не подошла.

Основные моменты:

  • Я подключал два диска (основной с системой и чистый для зеркала) одновременно и грузился в Rescue Mode с CD.
  • Создавая массив, я указывал sdXY от чистого диска.
  • Данные копировались командой cd target; dump -0 -f - /dev/source| restore rf - (по привычке, но надо поставить пакет dump).
  • Во все конфигурационные файлы вписывалось /dev/mdX вместо /dev/sdXY.
  • Swap я тоже размещаю на зеркале.

В общем то, загрузившись в режим восстановления, создать массивы на чистом диске и скопирнуть туда данные относительно несложно. Далее нужно поправить /etc/fstab, /etc/mdadm/mdadm.conf, запустить grub и просетапиться в MBR.

Как всегда сложности начинаются при попытке загрузиться с этого диска. Меня все время загружало в grub>.

Находясь в grub> можно загрузить систему такими командами:

kernel /boot/vmli<tab-autocomplete> root=/dev/md0
initrd /boot/init<tab-autocomplete>
boot

Механизм работы grub на 9.10+ для меня до сих пор является загадкой. Совершенно не представляю откуда оно берет настройки, в частности имя загрузочного устройства (md0 vs sdb1).

Попав в шелл решил проблему таким способом.

apt-get purge grub-common grub-pc
apt-get install grub-common grub-pc

Оно само раздуплилось какой диск является корнем и правильно прописало его в /boot/grub/grub.cfg (который генерируется автоматически).

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

Так же в процессе экспериментов (по-моему в Rescue Mode) запускалась команда

apt-get install mdadm
update-initramfs -u

Без них, скорее всего, в initramfs не были бы добавлены модули поддержки MD RAID. Мрак, но заработало.

Windows Server 2003 мигающий курсор при запуске со второго диска зеркала

Столкнулся с интересной проблемой. Windows Server 2003, два диска в Software Raid Mirror. Первый диск (системный) помер и был вынут. Система продолжала себе работать пока не была перезагружена. Попытка загрузки со второго диска - то ради чего и было сделано зеркало - приводила к мигающему курсору после биоса и все. Диски, естественно, динамические. Были перепробованы разные варианты восстановления загрузки, которые не приводили ни к чему. Я так подозреваю именно из-за того, что диски были динамическими. В концов был найден метод, немного стремный, но рабочий:

  1. Загрузиться с Active@ Boot CD.
  2. Запустить Diskpart.
  3. Сконвертировать живую часть зеркала (динамическй диск) в Simple Disk.
  4. Убедиться, что разделы исчезли, нервно покурить.
  5. Запустить Active@ Partition Recovery, запустить быстрый поиск. Как только будет найден первый раздел, поиск можно останавливать. Восстановить раздел. Поставить его активным. Если на первом диске присутствовали другие разделы - повторить процедуру поиска и восстановления. Нужно будет снять галочку “создавать extended раздел”, если его не было (я никогда не создаю).
  6. Загрузиться с инсталляционного диска Windows Server 2008 или Windows 7, войти в Recovery режим. Выполнить bootrec /fixboot, bootrec /fixmbr. Скорее всего подойдет и режим восстановления от Windows 2003/XP - под рукой не было.
  7. Windows должна теперь запуститься.
  8. Вернуть второй диск после ремонта/замены, сконвертировать системный диск в динамический, добавить зеркало, синхронизироваться.

Виртуализация в Ubuntu Server

Часто полезно иметь чуть более мощный сервер чем необходимо, что бы иметь возможность запускать в нем виртуальные машины. Когда хост машина - windows, все понятно: VMware Server, Microsoft Virtual Server, Microsoft Hyper-V и тд. Зато под Ubuntu наступил на грабли.

Имеем: десктоп с процессором AMD и установленным Ubuntu Server 10.04 LTS x86_64.

Задача: запустить Windows Server, который бы решал инфраструктурные задачи и запускался автоматически.

Сначала попробовал официально поддерживаемую виртуализацию KVM-Qemu. Несмотря на то, что все тщательно документировано в официальной документации Ubuntu, необходимо сделать кучу шагов, что бы запустить машину. В итоге после прохождения текстовой части инсталляции Windows Server 2003 32 bit (64 bit эмуляция не заработала в силу ограничений процессора) - черное окно. Доступ к виртуалке, кстати, через VNC с пробросом порта через putty. Побороть черное окно не смог.

Затем последовала серия наскоков на Vmware Server 2.0.2 (который бесплатный). Пробовал и i386 и x86_64 и с рекомендованными патчами от Ubuntu и без. И форумы читал - не компилятся модули ядра хоть ты тресни.

Далее пришла очередь VirtualBox. Документации практически нет. Установил virtualbox-ose, virtualbox-ose-dkms, virtualbox-ose-qt, virtualbox-guest-additions. Комманд не много, но vboxmanage испугала огромным количеством своих аргументов. Попробовал просто virtualbox - попросило X-ы. Как оказалось, найти X-ы под Windows достаточно просто - Xming. В ssh клиенте сделан проброс X11 (одна галочка), перелогон, запустилось!

Приятный графический интерфейс:


“Немного” подтормаживает, но все таки это отображение виртуалки хостящейся на удаленном Ubuntu сервере, через виндовый X-сервер поверх ssh соединения.

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

Текстовая часть инсталла прошла гораздо быстрее чем в KVM-Qemu и вообще все работает работает шустро, но

из-за тормозов связки отображения консоли у меня ушло еще около двух часов на то, что бы вызвать свойства удаленных подключений и включить RDP в котором все работает моментально как и обычно. Виртуалка корректно реагирует на перезагрузку или выключение. Все, что осталось, это настроить автоматический запуск виртуалки вместе со стартом Ubuntu сервера. Для этого я добавил vboxmanage startvm infra1 –type headless в /etc/rc.local.

Перенос контента между Google Sites

Google Sites - безусловно удобный сервис для быстрой организации чего то наподобие портала, например внутреннего Wiki. Но вот, недавно, столкнулся с проблемой переноса всего контента с одного сайта на другой. Вручную копировать пару сотен страниц не хотелось, а FAQ давал только расплывчатые рекомендации, суть которых сводилась к ручному переносу. И, все же, решение нашлось. Товарищ настраивал как то резервное копирование Google сайта посредством утилитки google-sites-liberation. С помощью этой же утилиты (параметры самоочевидны) можно влить скачанные с первого домена данные обратно, но в другой домен. Галочку “копировать ревизии” пришлось убрать, так как с ревизиями процесс значительно затянулся и завис, похоже.

Упорядочивание экземпляров одной программы в Windows 7 Taskbar

Замечательно, что в Windows 7 сходу заложена возможность упорядочивать расположение элементов на таскбаре. Но, как всегда, что ни будь да не доделают. Винда частенько внезапно меняет местами элементы внутри одной группы - например окна аутлука или скайпы от разных аккаунтов. Когда это происходит я начинаю сильно нервничать, так как постоянно тыкаю не в то окно работая на автомате. А упорядочивать элементы между собой в группе почему то по умолчанию запрещено.


Но, нашелся добрый человек, написавший бесплатную программульку, позволяющую запретить группировку для некоторых программ - 7 Taskbar Tweaker. Запрет группировки делает его программа-спутник Taskbar Inspector. Хвала RaMMicHaeL-у за пучек сохраненных нервов.

Двенадцать способов сменить пароль админа

Наткнулся на отличную статью, описывающую двенадцать способов сбросить пароль админа виндовому компьютеру. Лично мне больше всего понравился четвертый способ - через подмену Sticky Keys с помощью загрузочного диска Windows. Не самый быстрый, зато элегантный и безопасный способ.

Что делать, если процессор не поддерживает Hyper-V

Встала необходимость перенести виртуалку, на которой крутится этот блог, на другой сервер. Процессор в сервере хоть и Xeon, но достаточно старый. Hyper-V не поднялся, нет аппаратной поддержки виртуализации. Были испробованы все возможные хаки, описанные на форумах - ни Hyper-V ни Virtual Server 2005 не поднялись.

Решение оказалось достаточно простым и надежным.

VMware Server - оказывается, он уже бесплатен! Аппаратная поддержка виртуализации ему не нужна. VMware Converter тоже бесплатно отдают. Он умеет брать много разных типов образов, и особенно мне понравилось, что он умеет подключаться напрямую к Hyper-V и взять нужную виртуалку.

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

Правда, мне захотелось поставить Vmware Tools и меня увело в Release Upgrade с 8.04 LTS до 10.04 LTS :) .

Кстати, под Vmware Server не надо плясать с параметрами ядра, ядро запускается без проблем. Итого, все мигрировалось, обновилось и работает. Хвала современным технологиям!

P.S. Апгрейд до 10.04 потянул с собой обновление PHP до 5.3, под которым напрочь отказался работать старый WordPress. Вот - отличная статейка и скрипт для даунгрейда PHP до 5.2 версии.

Linux Desktop

Тыщу лет не пробовал *nix в качестве десктопа после того как свичнулся обратно на винду. Пришлось по работе поставить Ubuntu Desktop для тестов. Я весьма удивлен. МТС коннект вставил, ввел логин, пароль - заработало. Флешки и тд - тоже все как надо. Больше похоже на Мак, чем на винду, но вполне юзабельно. Прогресс.

Реле для насоса

Вот такую штуку можно собрать, что бы из-за перекрутившегося шланга не сгорал садовый насос. Отключает ток, при достижении заданного регулировкой давления. В Практикере все компоненты лежат рядом. Производство Дельфин, Харьков (Украина-Китай). Кстати, я подобный манометр в Эпицентре полгода ждал и так и не дождался. Если не заморачиваться быстроразъемными соединениями и манометром, то можно уложиться гривен в 60. Садово-огородный лайф-хакинг :) .

Подсчет успешности в Excel

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

Найти формулу, которая бы решала данную задачу оказалось не просто. То есть, не просто оказалось сослаться на последний заполненный плюс или минус в данном ряду. Я не специалист по Excel, искал в поисковике. После полутора часов поиска, стало понятно, что большинство народа реализовывают данную ссылку через VBA макрос, повторить их примеры мне не удалось. Придумал другое решение, может кому пригодится.

=COUNTIF(OFFSET(RC[2];0;TODAY()-DATEVALUE("17-11-2008")-14;1;14);"+")/(
 COUNTIF(OFFSET(RC[2];0;TODAY()-DATEVALUE("17-11-2008")-14;1;14);"+")+
 COUNTIF(OFFSET(RC[2];0;TODAY()-DATEVALUE("17-11-2008")-14;1;14);"-"))
  • RC[2];0 говорит о том, что поле с первыми данными находится на 2 колонки правее, в этом же ряду
  • TODAY()-DATEVALUE(”17-11-2008″)-14 находит ячейку на 14+1 день ранее сегодняшнего числа, опираясь на сдвиг от даты начала хронометража
  • 1;14 берет четырнадцать ячеек правее в этом же ряду, вплоть до одного дня ранее сегодняшнего числа

После добавления условного форматирования (делается в 2007 Excel в пару кликов мышки) получилась такая вот простыня:


Осталось стараться делать так, что бы колонка с успешностью за последние две недели была позеленее.

P.S. Что то мне подсказывает, что данную задачу можно было сделать в тысячу раз проще :) .