2010-03-29

Военкомат, part2

Итаг, прошел месяц. Ну ладно ладно, не месяц а 28 дней. Звоню в московский военкомат. Прошу перевести на внутренний номер 211. Первый раз никто не взял трубку. Через полчаса звоню снова, прошу перевести, женщина говорит: "А че надо? Ты вроде звонил уже". Хм, запомнила. Говорю, что хочу узнать, пришло или нет личное дело. Женщина спрашивает фамилию (O_o), причем разговаривает со мной как с человеком (o_О). Проверяет у себя, говорит что нифига нету (лучи поноса...). Говорит: "Попробуй позвони в петроградку, спроси у них, выслали они дело, или нет...). Ок, спасибо за совет (Все-таки там работают нормальные люди ^_^). Звоню в петроградку:
- Добрый день, у кого можно узнать про моё личное дело...
- Ни у кого, у них телефона нет, приезжайте сами (мужик, тупым голосом с дикого бодуна)
- Фак, че я туплю, полтора месяца мне тоже самое сказали. Пока пока.

epic fail :-D Так и хочется сказать слово, которое ненавидит мой брательник...

Ах да, я что-то сегодня такой радостный, откатал вождение без сучка, без задоринки, хотя в пятницу два зуба вырвали О_О

FreeBSD mbr->gpt. Миграция с одного диска на другой

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

# 1. На существующей машине поправим fstab для загрузки по ufsid (т.к. на второй машине есть винт, и фиг знает кто пойдет первый, sata или ide)
# ufsid можно посмотреть командой dumpfs _mount_point | head -2
[root@gw1 ~]# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
[root@gw1 ~]# dumpfs / | head -2
magic   19540119 (UFS2) time    Wed Feb 24 11:49:23 2010
superblock location     65536   id      [ 4baa0c99 45991624 ]
[root@gw1 ~]#
# Собственно эти метки прописываем в fstab, это позволит беспроблемно загрузиться на другой машине
# Единственный вопрос - swap. На нём нет fs, поэтому сделаем метку вручную через glabel
[root@gw1 ~]# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
[root@gw1 ~]# glabel label swap /dev/ad0s1b
[root@gw1 ~]# swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/ad0s1b        524288        0   524288     0%
[root@gw1 ~]# swapoff -a
swapoff: removing /dev/ad0s1b as swap device
[root@gw1 ~]# glabel status
      Name  Status  Components
label/swap     N/A  ad0s1b
# Ага, есть метки. Приводим fstab к нужному виду
[root@gw1 ~]# cat /etc/fstab
# Device                        Mountpoint      FStype  Options         Dump    Pass#
/dev/label/swap                 none            swap    sw              0       0
/dev/ufsid/4baa0c9945991624     /               ufs     rw              1       1
/dev/ufsid/4baa0ca057f22ea0     /tmp            ufs     rw              2       2
/dev/ufsid/4baa0ca2a832fcc5     /usr            ufs     rw              2       2
/dev/ufsid/4baa0ca724335a95     /var            ufs     rw              2       2
[root@gw1 ~]#
# В общем все, винт готов к вставке в другую машину. В моему случае проблем не было вообще, 
# т.к. вместе с винтом в новую машину переехали две 3com сетевухи, и не нужно было прописывать 
# сетевые настройки на новой машине.
# FreeBSD загрузилась на новой машине, смотрим винты
[root@gw1 ~]# # ls -l /dev/ad*
crw-r-----  1 root  operator    0,  67 Mar 29 11:53 /dev/ad0
crw-r-----  1 root  operator    0,  68 Mar 29 11:53 /dev/ad0s1
crw-r-----  1 root  operator    0,  69 Mar 29 15:53 /dev/ad0s1a
crw-r-----  1 root  operator    0,  70 Mar 29 15:53 /dev/ad0s1b
crw-r-----  1 root  operator    0,  71 Mar 29 11:53 /dev/ad0s1c
crw-r-----  1 root  operator    0,  72 Mar 29 15:53 /dev/ad0s1d
crw-r-----  1 root  operator    0,  73 Mar 29 15:53 /dev/ad0s1e
crw-r-----  1 root  operator    0,  78 Mar 29 11:53 /dev/ad4
# Ага, нужный винт появился. Надо его нарезать на разделы (Этот диск в виртуалке, размер реального винта был 120 гигов)
[root@gw1 ~]# gpt show ad4
     start      size  index  contents
         0  16777216
[root@gw1 ~]# gpt create -f ad4 # -f - затереть mbr, если есть.
[root@gw1 ~]# gpt show ad4
     start      size  index  contents
         0         1         PMBR
         1         1         Pri GPT header
         2        32         Pri GPT table
        34  16777149
  16777183        32         Sec GPT table
  16777215         1         Sec GPT header
# Установим загрузчик
[root@gw1 ~]# gpt boot ad4
# Нарезаем разделы (-s размер раздела в секторах. Сектор hdd 512 байт. (2Gb * 1024^3) / 512 = 4194304
# Под корень
[root@gw1 ~]# gpt add -s 4194304 -t ufs ad4
# Аналогично для других разделов с соответствующими разделами. Для swap меняем -t на swap. 
# Результаты в удобном виде можно посмотреть командой gpart show
# Чисто как пример (это с виртуалки)
[root@gw1 ~]# gpart show
=>      34  16777149  ad1  GPT  (8.0G)
        34       128    1  freebsd-boot  (64K)
       162   4194304    2  freebsd-ufs  (2.0G)
   4194466  12582717       - free -  (6.0G)
[root@gw1 ~]#
# Соответственно в /dev
[root@gw1 ~]# ls -l /dev/ad4*
crw-r-----  1 root  operator    0,  78 Mar 29 12:05 /dev/ad4
crw-r-----  1 root  operator    0,  89 Mar 29 11:53 /dev/ad4p1
crw-r-----  1 root  operator    0,  91 Mar 29 11:53 /dev/ad4p2
.....
# Надеюсь, мы запомнили схему разбивки винта и у нас не возникнет проблем с сопоставлением разделов

Ну а далее все не просто, а очень просто. Делаем newfs на нужные разделы (но не надо забывать, что на корень soft updates не делают!),
стопаем все сервисы на серваке, dump'им текущие файловые системы, ресторим дампы на примонтированные новые разделы (вот где главное не ошибиться!).
Правим fstab на примонтированном новом корне (я сделал все также по ufsid и glabel на swap).
Отмонтируем новые разделы, выключаем сервак, вынимаем старый винт - PROFIT!

Замечу, что я делал это все через ssh, сервак был далеко, соответственно делал через multiuser.
Если возникнут проблемы - можно подоткнуть старый винт на время и исправлять ошибки. Операция в общем-то тривиальная. На серваке в этот момент стояло: апач (web-морда для почты, управление прокси-сервером, mpd, никаких сайтов для клиентов), mysql, racoon, sams, mpd, isc-dhcpd. Ничего особенного. После переезда все чувсвтуют себя хорошо.

2010-03-23

Военкомат

Месяц назад встал на учет в военкомат. Это 3.14здец. Извините, других слов не имею. Дело с другого военкомата идет месяц. Работают только в среду и пятницу. Звонишь прошлую неделю - "Там все болеют и никого нет, звоните на следующей неделе". Окей. Звоню в понедельник. Нет ответа, никого нет. Звоню во вторник, сначала попал в обед. Окей. Звоню после обеда, дежурная женщина тупым голосом специально для имбецилов, медленно, с повторением каждого второго слова, говорит, что во вторник она не принимает и на звонки не отвечает, однозначно сука!. Звоню по второму телефону, отвечает мужик, прошу его перевести на внутренний номер, переводит. Жду минуту, мужик говорит, что там трубку не берут. Лучи поноса....перезваниваю, ура, попал на мужика, прошу перевести - переводит звонок на внутренний номер...снимают трубку, УРА!!!! Я дозвонился...хоп и трубочка тут же вешается обратно...короткие гудки...epic fail...рашка бл@

Снова про вождение

Записал сегодня трэк поездки. Прикольно покатались, не то что вчера - 20 минут на АЗС и 40 минут в пробке. Сегодня покатался от души, ввиду хорошего настроения ни разу не заглох и нигде не накосячил, ну почти :-) Проблема с габаритами, нифига я их не чувствую, и инструктор вечно меня ругает, что я правым бортом попадаю часто в ямы...

Писец, смотрю на трэк...оказывается я в основном по домам езжу ^_^

Просмотреть увеличенную карту

2010-03-19

Вождение, часть N, нет, M

Итаг, сегодня откатался с утречка, шикарно, мне так нравитсо :-). Дорога была плохая, мокрый снег, в итоге около трех раз сработала АБС, жуткий звук.

Косяки
1. Поворачиваю направо, посмотрел на пешеходный переход справа - никого нету. Ну я и еду, мля, налево забыл посмотреть. Инструктор орёт: "Внимательно". Тут же смотрю налево - там тетенька идёт. Сцепление и тормоз в пол, машина юзом (хотя наверно логичнее было продолжить движение, ибо тетка еще до моей полосы не дошла), в салоне звучит фраза инструктора "Бляха-муха", я себя ощущаю мудаком. Хвала яйцам, скорость маленькая и сзади никого не было. Уяснил для себя, что на переходе нужно всегда вращать головой в обе стороны, а не тока направо. Надо как-то сделать это рефлексом.

2. Еду по дороге, висит знак - дети. Снижаю скорость до 20, еду себе. На дороге стоит тётко. Я плавненько останавливаюсь, инструктор говорит, что не надо было её пропускать, нефиг ходить вне пешеходного перехода. Странно.

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

А так, все отлично. Прочувствовал сцепление до конца, ни разу ни дернулся. Правда с чего-то заглохнул один раз, когда поворачивал вслед за машиной направо О_О. Вроде правильно все делал, не бросал сцепление, видать газу не хватило...А еще какой-то мудак на вольве обогнал меня справа, чуть ли не по тротуару, забрызгал гавном все лобовое и уехал, сук@

2010-03-16

Вождение, часть 2

Это просто бугага. Заглох сёдня в пробке на узкой улочке возле СКК. Начал ехать, машина еле еле ползет, что за фигня, наверно колеса проскальзывают...сбросил газ, а сцепление не выжал, идиот, вот и заглох...самая ржака - завожу движок, а ключ вправо не идет (фича такая, или бага). Инструктор (Ирина Александровна) говорит: "Ключ на себя, потом от себя". Фак, мой моск выпал в kernel panic...как можно ключ зажигания на себя потянуть, нет чтобы сказать сначала влево, потом вправо...ну в общем я с лицом дебила потянул ключ на себя, брелочек на ключе тока изогнулся...естественно безрезультатно...представляю как это со стороны выглядело :-D Инструктор ключ повернула налево, потом направо, фух...завелись

Косяки в этой поездке:
1. Перекресток возле окея на славе и космонавтов. Я выезжаю со стороны СКК и еду прямо. Впереди грузовик, стоит посередине дороги (до перекрестка, там сужение и смещение полос движения), я встал за ним. Инструктор косо посмотрела и сказала что я не прав. Ну да...разметки не видно нифига, а на знаки "Движение по полосам" сверху я внимания не обратил, в следующий раз встал ровно в полосе. Раз косяк.
2. На том же перекрестке, тока я ехал по славе в сторону бухаресткой, поворачиваю направо, пропустил доноров органов всех, бггг, еду уже, один мужик чё-то затупил - чуть ноги ему не отдавил...инструктор поругала.
3. Далее по космонавтов еду, впереди светофор мигает зеленым, а я от него метрах в двух, ну думаю, еду нормально, пока мигает можно ехать. Тут машина резко тормозит и инструктор говорит, что я баран в общем-то. Согласен.

Вот такие дела. А катался сегодня более уверенно, не колбасило уже. Четко и плавно, даже направо пару раз перестроился перед перекрестками без проблем, спасибо тем кто ехал справа, уступили. Помигал аварийкой =)

2010-03-15

FreeBSD, переводим живую фс на журнал

В общем то тривиальная операция, но решил на память записать:

Итаг, задача.

Нужно к живой фс (2 Tb) прикрутить журнал (gjournal), ибо при нештатном выключении fsck занимает достаточно долгое время, чтобы пользователи начали орать в стиле: "Аааааааа, где наша почта!!!! Отдел ИТ казлы!!!!!". Background fsck + soft updates не решение, ибо пока раздел чекается при загруженной системе, работать с почтой невозможно, ибо все аццки тупит. Ибо, ибо...пора завязывать с этим словечком...Так вот, нужен журнал (который,кстати, все равно не отменяет fsck). Под это дело мудрые разработчики придумали gjournal. В процессе действия я еще переведу раздел на gpt (просто захотелось экспы)

Сложность заключается в том, что все это я провернул из дома, т.к. сидеть в выходные на работе не хотелось. Спас отца русской демократии ip-kvm.
Поехали:

flanker# uname -a
FreeBSD flanker.domain.ru 7.2-RELEASE-p7 FreeBSD 7.2-RELEASE-p7 #0: Fri Mar 12 14:18:18 MSK 2010     root@flanker.domain.ru:/usr/obj/usr/src/sys/FLANKER-2010-03-12  i386
# Переводим систему в single mode
flanker# shutdown now
# Теперь в single mode (надо консоль, ssh не будет,у меня ip-kvm)
# отмонтируем нужный раздел (у меня var)
# Кстате, здесь у меня наступил тупняк, я запустил dump в multiuser, но он повис..
# Причем повис так, что даже init не смог его убить. Написал ему kill -9, но он никак не отреагировал, из-за этого не давало отмонтировать var.
# Спустя 20 минут сервак очнулся..фух...
flanker# umount /var
# Дампим текущую фс куда-нить, я заблаговременно подключил терабайтник и смонтировал его в /backup + ночью до этого у меня вся почта забэкапилась на другой сервак, так, на всякий случай.
flanker# dump -0 -f - /dev/aacd1s1d > /backup/var.img
# Ждал около часа (хотя в сумме там 300 гигов всего)
# Все, дамп сделался, теперь курочим разделы
# Создадим таблицу GUID разделов, -f говорит, что надо затереть mbr
flanker# gpt create -f /dev/aacd1
# Теперь нарезаем разделы (на журнал я сделал 10 гигов, с огромным запасом)
# -s это размер в секторах (512 байт на сектор)
# Надо -s == (10G * 1024^3) / 512 == 20971520
flanker# gpt add -s 20971520 -t ufs aacd1
# Далее раздел под собственно сами данные, -s не указываем - утилита сделает максимально возможный по объему раздел
flanker# gpt add -t ufs aacd1
# Посмотрим что получилось
flanker# gpt show aacd1
start        size         index  contents
0            1                   PMBR
1            1                   Pri GPT header
2            32                  Pri GPT table
34           20971520     1      GPT part - FreeBSD UFS/UFS2
20971554     2908897213   2      GPT part - FreeBSD UFS/UFS2
2929868767   32                  Sec GPT table
2929868799   1                   Sec GPT header
flanker# ls -l /dev/aacd1*
crw-r-----  1 root  operator    0,  77 Mar 13 14:09 /dev/aacd1
crw-r-----  1 root  operator    0,  87 Mar 13 14:16 /dev/aacd1p1
crw-r-----  1 root  operator    0,  98 Mar 13 14:16 /dev/aacd1p2
# Отлично, сделаем ufs на разделе с данными
# -J - флаг журнала, O2 - UFS2 (хотя можно и не указывать, это дефолтно), 
# Soft Updates нафиг не нужны c журналом
flanker# newfs -J -O2 /dev/aacd1p2
# Все, сделали фс, посмотрим что как на всякий случай:
flanker# tunefs -p aacd1p2
tunefs: ACLs: (-a)                                         disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 disabled
tunefs: gjournal: (-J)                                     enabled
tunefs: maximum blocks per file in a cylinder group: (-e)  2048
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)
# Так, все хорошо. Прикрутим журнал
# Маленькой отступление - я журнал вкомпилировал в ведро
# Добавил туда, хотя хэндбук говорит только про 2 опцию, которая по дефолту в ядре
# options         GEOM_JOURNAL            # GEOM class for journaling
# options         UFS_GJOURNAL            # Enable gjournal-based UFS journaling
# Кому влом пересобирать ядро надо
# 1. kldload /boot/kernel/geom_journal.ko
# 2. echo geom_journal_load="YES" >> /boot/loader.conf
# Итак, непосредственно включаем журналирование:
# первый идет провайдер данных, второй провайдер журнала!
flanker# gjournal label /dev/aacd1p2 /dev/aacd1p1
# Усе, получили журналируемую файловую систему, смонтируем ее
flanker# mount /dev/aacd1p2.journal /var
# Ресторим на нее дамп
flanker# cd /var
flanker# restore -vrf /backup/var.img
# Правим fstab
flanker# vim /etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
...
# Важно поменять pass с 2 на 1
/dev/aacd1p2.journal    /var            ufs     rw,async        1       1
# Выходим в multiuser
flanker# exit
# PROFIT!!!
Вот и прикрутили журнал к фс на серваке, без потери аптайма =)

Вождение

На втором практическом занятии по вождению поехал в город =) Прикольно, тока вот приехали на площадку сначала - я и думал, ща будем круги нарезать, или маневры маневрировать, а инструктор говорит: "Что-то здесь скучно, и кататься негде, поехали по городу поездим". Ну и поехали, из-за резкой смены обстановки даже колбасить немного начало, руки трястись =) Жуть...но ни разу не заглох, не дернул сцепление, со всех светофоров плавно и четко)) Правда пару раз 2 передачу не дожал, прожужжал коробкой)) Понравилось, завтра ищщо поеду. И теперь солидарен с брательником по поводу автомата, удобно наверно, запарилсо дергать сцепление в пробке =) Хотя МКПП мне все равно больше нравитсо =)