среда, 31 декабря 2008 г.

Bacula

Этот пост я хотел написать уже очень давно. Все руки не доходили. И сейчас за раз я думаю все не наклепаю. :) Так что пока, можно сказать, вступление. :)

Преамбула.

Бакап нужен всем! Думаю эту аксиому знают все. Но вот парадокс: реально бакап делают единицы! Причем что там говорить о домашних пользователях, когда даже во многих организациях его нет. Печально, но факт. Причем печаль этого факта осознаешь только тогда, когда теряешь данные... Сделать нормальный бакап я хотел давно. Сподвигли же на это меня курсы, которые я окончил этим летом в англии, в симантике по нетбакапу. Данный продукт мне очень понравился, не смотря на довольно сложную внутренюю структуру. И проходя курс, я вспомнил, что в свое время пытался поковырять бакулу, и что она по идеям очень сходна с продуктом симантика. Вернувшись домой, я нашел время и развернул ее дома. Остался доволен. :)

Для начала: кому это нужно.

В общем если вы все же пришли к выводу, что делать бакап пора, то значит будем начинать. :) Но прежде решим, нужна ли вам именно бакула. Для этого ответим на ряд вопросов:
  1. У вас более одного компа?
  2. Компьютеры объеденены в локальную сеть?
  3. Выши компьютеры работают круглые сутки (или хотя бы достаточно редко выключаются)?
Если вы получили более одного "да", то скорее всего бакула облегчит вашу жизнь. Если нет - то вам надо бы поискать другое решение. Идем далее.

Что бы грамотно у удобно настроить это все "счастье", надо понимать КАК оно работает. Логически бакула разбита на три компонента:
  1. Bacula Director: содержит информацию о всех заданиях, клиентах, шедулерах, пулах, файл сетах, стораджах, методах оповещения и каталоге.
  2. Bacula Storage Daemon: демон осуществляющий непосредственное сохранение данных на носители, а так же управляющий этими носителями (роботы, ченджеры и прочее).
  3. Bacula File Daemon: демон, представляющий собственно говоря клиентского демона, забирающий данные с клиента и передающий их серверу.
Общая логика из этого думаю довольно ясная: директор по расписанию выполняет задания, собирая данные с клиентов (Bacula File Daemon-ов) и отдает эти данные сторадж демону. Тот в свою очередь складывает это все уже непосредственно на носители. Все три компоненты могуть быть либо на разных машинах, либо на одной, либо в любых других комбинациях.
Пулы представляют из себя логические структуры носителей. Для каждого пула можно отдельно оговорить метки томов, время хранения носителей и прочее. Полное описание естественно читамем в доках. :) Файл сеты - определения того, что будет собираться с клиентов (файлы, пути, файлы с путями, маски файлов и прочее). Каталог - база данных (sqlite, mysql или postgresql) в которой хранятся имена файлов, их контрольные суммы и прочая служебная информация. Использовать можно любую базу, но я использовал mysql. Эксперимент с sqlite был не удачным. Да и в документации разработчики не рекомендуют его использовать.

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

sudo aptitude install bacula-director-mysql bacula-sd-mysql bacula-fd bacula-console

Если у вас еще не установлен mysql, то он соответственно установиться и задаст вам кучу вопросов. :) Но настройка mysql - не тема для этого поста. ;) Так же по желанию можно поставить bacula-console-qt и bacula-traymonitor. Консоль используется для управления всем этим хозяйством в реальном времени, а траймонитор вешает в трей иконку. Баловство, но многим нравится. :) Так же это все может потянуть за собой настройку почтовой системы, так как все оповещения бакула делает в первую очередь через mail. Хотя возможно настроить их как угодно (sms, osd и прочее).
На клиентах мы ставим только файл демон.

sudo aptitude install bacula-fd

Начнем настройку с fd, как с самого простого. Конфиги по умолчанию вполне работоспособны, так что править нам придется совсем мало, за исключением директора.
Секция Director определяет имя директора (логическое имя внутри бакулы, не связано с именем хоста, называем например <хост директора>-dir) и пароль - произвольную комбинацию символов. Главное, что бы они были одинаковые на директоре в разделе конкретного клиента и в конфиги этого клиента. По умолчанию они все кажется одинаковые, так что для начала можно оставить так, но в последствии конечно же желательно их изменить. Так же секции director в настройках fd может быть две: одна для подлючения самого директора и работы бакапа, а вторая, с параметром Monitor = yes - для мониторинга. Секция FileDaemon содержит основные параметры:
  • Name - имя демона. Является логическим именем внутри бакулы и не связано на прямую с именем хоста. Что бы не запутаться называем например <имя хоста>-fd.
  • FDport - порт, по которому будет осуществляться подключение
  • WorkingDirectory - директория, которую использует для работы демон
  • Pid Directory - директория в которой будет хранится pid работающего демона
  • Maximum Concurrent Jobs - колличество одновременно запущеных на этом клиенте заданий
  • FDAddress - адрес демона. Если вы настраиваете fd на машине, где стоит директор, то можно использовать адрес 127.0.0.1, для всех остальных - внешний интерфейс, который "виден" с машины, на которой установлен директор. Так же сюда можно прописать имя машины, если у вас нормально настроен dns, или имена прописаны в /etc/hosts
Секция Messages определяет какие оповещения будут отправляться директору. В общем-то на этом можно считать настройку файлового демона законченой. Далее просто приведу полный конфиг файлового демона установленного на той же машине, что и директор:

#
# Default Bacula File Daemon Configuration file
#
# For Bacula release 2.4.2 (26 July 2008) -- debian lenny/sid
#
# There is not much to change here except perhaps the
# File daemon Name to
#

#
# List Directors who are permitted to contact this File daemon
#
Director {
Name = desktop-dir
Password = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

#
# Restricted Director, used by tray-monitor to get the
# status of the file daemon
#
Director {
Name = desktop-mon
Password = "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
Monitor = yes
}

#
# "Global" File daemon configuration specifications
#
FileDaemon { # this is me
Name = desktop-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 2
FDAddress = 127.0.0.1
}
# Send all messages except skipped files back to Director
Messages {
Name = Standard
director = desktop-dir = all, !skipped, !restored
}

Продолжение следует...

вторник, 30 декабря 2008 г.

"Почему".

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

Итак: как я пришел в мир *nix? Надо ли упоминать, что окончив школу и отучившись дальше, я вышел в мир вполне себе "зеленым" нифига не смыслящим "специалистом". Думаю что многие через это прошли. ;) Ну да, изучал я компьютеры. Ну да, вымуштровали нас так, что разбудив меня посреди ночи и попросив отрисовать схему на любых логических элементах можно было получить ее минут за 5 практически без ошибок, а я бы улегся спать дальше. :) Но толку? Компьютеры, в сегодняшним понимании, я не знал! Можно, пожалуй, опустить то, как я работал слесарем КИПиА, а так же электриком пожарно-охранной сигнализации, в связи с отсутствием работы по специальности, а так же не желанием (ну кому нужен зеленый юнец?) брать меня на работу. Ибо прямого отношения к данной теме это не имеет. В общем в один прекрасный день я встретил своего школьного учителя информатики Василия Петровича. В те счастливые времена я нашел в журнале "моделист-конструктор" схему персонального компьютера "специалист" и угрохал кучу родительских денег, невов и задолбал Василия Петровича вопросами в тщетных попытках собрать это чудо электронной техники. :) Благодаря этому мой учитель меня и запомнил. К тому времени он с друзьями и коллегами создал совместное предприятие и эта встреча стала поворотным пунктом в моей судьбе: видимо в память о моих "вопросах", иного предположить не могу, ибо как специалист я был "никакой" ;) меня взяли на работу.

Для начала кабельщиком. Там я узнал что-такое сети и впервые сел за винду. Это была win 3.10 и запускать ее я умел только одним способом: нажав F2 в меня нортона и выбрав пункт "windows". :) О том, что это можно сделать еще и набрав win в командной строке я узнал позже. ;) Вот с тех времен все и началось. Со временем я узнал что такое 7-ми уровневая модель OSI, узнал о разных протоколах, о серверах, о том, что в мире есть не только винда и DOS, но и другие OS. Правда тогда мой кругозор захватывал лишь Personal NetWare от Novel и позже все "нетвари" вплоть до 3.12. Хорошие надо сказать были системы... Жаль, что в свое время novell совершила несколько досадных "промахов", которые стали для нее фатальными. Ну да ладно, речь не о том. В итоге моя работа все больше сводилась к настройке серверов на Win и настройке активного сетевого оборудования от cisco и 3com. В свое время я даже планировал сдать на MCSE, но потом забил на это. ;) Даже, было дело, я читал курсы по MSSQL! Бррр... Гадость какая. :) Но это тоже не важно. В общем пришло время, когда я знал винду на столько, что мог в ответ на выкрики о ее кривости смело орать: "Вы не любите кошек потому, что не умеете их ее готовить настраивать!" :))) Да, я так говорил. И более того: я так думал. Я умею признавать свои ошибки, поэтому я говорю сейчас: я ошибался. Но этот период тоже был, можно сказать, поворотным. Ибо тогда я сел за SoftIce.

Нет, не могу сказать, что у меня была жестокая необходимость что-то сломать. Хотя и это видимо тоже. Меня в первую очередь интересовало, как это все сделано внутри. Программировать я любил еще с учебы в МАТУГА, первом моем учебном заведении, после школы, и писал много всякой фигни. По большей части только мне нужных мелочей. Большого и серьезного не было ничего. Когда я добрался до программирования под "окна", я перепробовал много всякого: от написания на чистом C, до новеловского графического билдера. Тогда меня немного удивило, что написав одну и ту же прогу на том и на том (для чистоты эксперимента это было создание окна с надписью... ну вы поняли ;) Нет! Не @@@, "hello world!"), я получил в первом случае полтора килобайта, а во втором 300 кило. Ничего, разобрался потом где, как говорится, собака порылась. ;) Это все было довольно хорошей школой в дальнейшем понимании ассемблерного кода, выдаваемого softice-ом. В общем не вдаваясь в подробности я провел несколько лет лопатя код. Много программ было взломано, много dll-ей перепахано вдоль и поперек. В том числе и всякие kernel32.dll и иже с ними. И спустя какое-то время начало приходить осознание, что так дальше жить нельзя...

Стало многое понятно. Понятно почему для установки драйверов порой приходится плясать с бубном 3 часа. Чем занята система добрый час не шурша винтом и не подавая признаков жизни при инсталяции. Почему приходится вести диалог аля:

-А ты уверен?
-Да
-Точно???
-ДА!
-Не, нет тут на диске драйвера.
-Как нет?!!! Я ж вот положил!
-Нету. И вообще нет у тебя видюхи.
-(пользователь оторопело) А что есть?
-Джойстик!
-Оба на... А я его хотел пойти купить...


:) В двух словах этот код можно назвать одним словом... нет, двумя: ПОЛНАЯ ЖОПА! Да, я не программист. Не профессиональный программист. Я любитель. "Чайник", я бы даже сказал. Но даже я ТАК бы не написал. Не могу сказать за все компоненты системы, но большая часть представляет из себя именно те два слова. И тогда я задал себе вопрос, вполне логичный в данных обстоятельствах: "Папа, а где же альтернатива?" - "Утки." (хороший был анекдот, но я отвлекся) :) В общем я начал искать альтернативу. Новел был хорош, но это не десктоп, это серверная ОС. А нужно было что-то в замен win. И альтернатива нашлась.

BeOS. Первое, что меня поразило - это инсталяция. Ну ладно, быстро - это мы опустим. Но она сказала, что у нее нет драйвера под мою видюху! И что она будет работать в generic или что-то в этом духе. Я скис. Ну кто ставил винду, тот меня поймет. Ибо если нет драйвера, то у винды на экране будет 640x480 и 8 цветов. :( Такой балет нам не нужен, решил я... "Буду работать в generic, выставляю 1024x768 при 16536 цветов! Больше не могу." - радостно объявила система. "Ни@@@ себе!" - обрадовался я. :) Это впечатляло. Ну почему так не могла винда? Ответ кроется опять же в двух заветных словах относительно ее кода. ;) Далее было все радостнее и радостнее: работала beos намного шутрее, 10 открытых окон с видео работали только так (хотя даже 3 под виндой на той же машине уже тормозили), был найден quake2, который даже в софтвере летал как шальной, проги, благодаря API были очень маленькими, даже офис занимал ВСЕГО 8 мег!... В общем все бы ничего, если бы не несколько НО:

  • Система была платная. Да, посмотрев на нее, я был готов платить. Но увы: в борьбе бабла со злом, победило бабло. BeOS просто не выдержала конкуренции с виндой. :(
  • Офис был, но был очень сырым, хотя и вполне мог работать с вордовыми и экселевскими файлами.
  • Набор софта оставлял желать лучшего. Мало было софта. Хотя народ и пытался писать, писать и писать.
  • С драйверами была полная засада. Да, я смог найти дрова под все тогдашнее железо, но было понятно, что если ничего не поменяется - система не выживет. Так и случилось...
В общем мне откровенно было жаль эту систему. Но сделать было ничего нельзя...

К тому времени, когда я решил попробовать линукс, появился уже RH5.0. Довольно сырой, плохо поддающийся русификации и вообще имеющий массу проблем. Мои дни, проведенные с ним можно сосчитать по пальцам двух рук. :) Но не смотря на это, я почувствовал, что я на верном пути, хотя и иду еще с завязанными глазами и плохо чувствую под ногами землю. И тут на горизонте появилась FreeBSD.

"Фряху" я поставил на машину скорее из чувства противоречия: слишком много народу говорило мне "ставь линукс!". Да, знаю, есть у меня такая дурная черта: делать порой что-то на перикор тому, что говорят. Но я не пожалел о тогдашнем перикоре. По началу все шло медленно и со скрипом: cli, после "интуитивно понятного и супер удобного" интерфейса давался с трудом. Но со временем я заметил, что ключи практически везде одни и те же, что обрабатывать текст гораздо проще и удобнее, чем тыкать сотни кнопок, что шелл (во фряхе по умолчанию используется tcsh) позволяет сплетать из команд чудеса, и прочее прочее прочее... И я проникся!... (к стати мне понравилось, как написал один товарищ в bsd-шной конфе по поводу интерфейса: "Со временем cli становится простым и интуитивно понятным. Правда есть побочный эфект: становится совершенно не понятным виндовый интерфейс.") :)

Переход на новую систему не был гладким. Сначала она была поставлена в эмуляторе под виндой. Усиленно искались аналоги привычных прог (один только переход с любимого bred2 на vim чего стоил!), пробы, ошибки, тесты... Дома я переходил с винды около 3-х месяцев. Примерно после этого у меня заработало все, что мне надо. Я окончательно освоил систему портов, сборки, начал сам пачить проги, делать порты с линуксовых прог... В городе было поставлено довольно большое колличество серверов. В том числе и моя гордость: проект "попкорн".

Система автоматизации для кафе "кукуруза". Изначально там хотели поставить пару машин на зале с 1С. И с этой идеей обратились ко мне и моему другу, который был хозяином маленькой фирмы. Я сразу сказал, что это будет полная @@@@. :) Ибо вирусы и шаловливые ручки клиентов/персонала будут регулярно создавать проблемы. По итогу система будет сплошным геморроем. "Тогда скажи как сделать!" И мы сказали. :) Длилось это примерно год. В итоге в зале были установлены текстовые (rs232) терминалы, (менюшки а-ля нортон для официантов), принтера на кухне, в баре и бухгалтерии, графическая оболочка в бухгалтерии (для ввода меню и прочего). Официанты принимали заказ, выбирали все нужное в меню, то что нужно было готовить - выходило в принтере на кухне, что наливать - на барном принтере, по итогу администратор закрывал столик со своего терминала и выдавал готовый чек. Начальство модемом коннектится из дому и в реальном времени смотрит через веб интерфейс что происходит в зале. На сколько я знаю, все до сих пор работает. :) И это при том, что сервер на фряхе не обслуживает ни кто уже почти 10 лет! (ну ладно, немного покривил душой: пару раз там меняли железо, а один раз даже материнку) :) При этом все "крутилось" на пентиум 2 266МГц. Поставте туда висту. Какое железо вам понадобиться? А сколько раз в месяц надо будет ее перегружать? А сколько раз в год переставлять? А сколько раз чистить от вирусов? А сколько... Ну да и этого уже достаточно. ;) А тут "второй пень" вполне справляется с задачей просто на ура. В последствии были планы пересести терминалы но PDA с "голубым зубом", что бы официантки принимали все вообще не отходя от столики и дальше шли к следующему. В общем было здорово и интересно. Но увы: плохая договоренность внутри коллектива разработчиков системы сиграла плохую шутку... Но это уже совсем другая история... А потом у меня появился ноут.

Нет, это не охладило мою любовь к новой ОС, но создало много проблем: хибернейт не работал, с драйверами была проблема (хотя и не такая, как на BeOS), многие проги, писанные под линукс переносились с таким скрипом, что становилось плохо. А проги были нужны. В частности были большие проблемы с видео монтажом и еще чем-то в этом роде, хотя это уже вопрос не столько к ноуту, сколько к самой системе. И тут на горизонте появился gentoo linux.

О! Увидив этот дистрибут - я проперся. :) Во первых это был тот еще конструктор, а конструкторы я всегда любил. :) Во вторых он унаследовал все прелести портов bsd улучшив их в своих портеджах. Ну и в третьих это был линукс, что снимало кучу проблем с поддержкой железа как на буке, так и на моих десктопах. И так повозившись с ним, сделав полный дамп с дисков, я поставил себе gentoo. Со временем дампы фряхи были удалены, так как я понял, что останусь на новой системе. FreeBSD осталась только на серверах.

В общем и целом на этом можно было бы и поставить точку. Потому что мой переход с gentoo на ubuntu было довольно прост и банален: я устал "пересобирать" каждое обновление, тем более на 4-х машинах с разной конфигурацией (на буке, на буке у жены, на десктопе и на рабочем десктопе). Меня это утомило. А тут как раз "нарисовался" на горизонте новый дистр: ubuntu, от которого все пищали. Я попробовал. И он мне понравился: достаточно хорошая стабильность, частота обновлений, качество сборки пакетов, удобство debian-овской системы пакетов (еще с первого rh не люблю rpm!). В общем сменив gentoo на ubuntu теперь так и живу. :) Стар стал видимо, ленив... ;)

четверг, 18 декабря 2008 г.

Детские мультфильмы и современные реалии.

Наткнулся на забавный пост у . :) Поржал, понравилось. :)

Курсы.

Отголоски прошлой недели наблюдались еще и на этой: в понедельник пошел на курсы по массивам хитачи. На второй день меня так очень осторожно спросили что я тут делаю. :) Был в шоке. Оказалось что курс не проплатили, но об этом мне сказать забыли. Прослушал можно сказать "овервью". ;) Долго ржал. :)

P.S. Почему метка "не плохой день" спросите вы? Да потому что не надо гемороится теперь и сдавать экзамен. ;) Не очень-то и хотелось на эти курсы ехать. :)

суббота, 13 декабря 2008 г.

13-ое...

Хоть и не пятница, но все равно! Нет, на самом деле колличество "жоп" на этой неделе перевалило уже за невозможное: началось с того, что мой отъезд с Краснодара задержали на 2 дня. По приезду домой и отмечанию ДР - стырили ноут. Собаки дома обосрали весь ковер. Наступить умудрился в КАЖДУЮ кучу! Чуть не убил обеих. В розетках в зале выгорела проводка. В магазин сегодня решили пойти пешком, а не на машине. Так, на всякий случай... ;) К счастью все обошлось: купили все подарки и верулись блакополучно. Правда на обратном пути зашли к дяде с тетей, гда дядька нас напоил. У обоих в желудках плохо, как буд-то выпили ящик водки, а не пару рюмок коньяку. :( Нет, определенно неделю надо заканчивать лежа на диване и ничего не делая, что бы еще чего не произошло! :)

UPD: Воскресенье прошло не лучше. ;) Начал чинить проводку - не мог ни как протянуть кабель. Протянул в конце концов. Стал контакты прикреплять - сорвал резьбу на болте в розетке на клемнике. Нашел другой, начал закручивать - опять сорвал. Поматерился. Перерыл все. Еще одного не нашел. Взял саморез. Стал закручивать... Ну вы поняли что произошло. ;) В конце концов с помощью самореза и пластикового дюбеля все же стянул клемник, закрепил провода. Прозваниваю - "коротышка"! Я думал сейчас нафиг разобью всю стену! Успокоился, разобрал, проверил - все ОК, где была коротышка так и не нашел. Собрал, проверил - все ОК. Включил свет, лег на диван и сказал что я больше ничего делать не буду сегодня и ни куда не пойду!!! :) Сходил только за 4-мя бутылками шампанского. Вечер прошел без приключений. ;)

Эпилог.

Похоже за прошлую неделю я отгреб неприятностей за весь год разом! ;)

пятница, 12 декабря 2008 г.

Ubuntu 8.10 и сотовый телефон

Я не сторонник всяких решений "в 2 клика мыши". Я больше люблю "в две строчки в vim-е". ;) Но как для конечного пользователя сегодня порадовала новая убунта: при подключении к компу через usb сотового и перевода его в режим модема система сказала, что у нее обнаружился новый девайс, да не просто девайс, а "броадбанд" через который можно лезть! ;) Так что давай, говорит, родной, сконфигурим его! Ну давай. :) Спросила страну (вернее предложила исходя из моих региональных настроек, но с возможностью выбора), потом высыпала всех российских gsm операторов. После выбора mts, сказала что все теперь хорошо и мы можем пойти в инет. ;) Ну и кто сказал, что чайники не могут использовать линукс? С каждым днем все больше и больше могут. :)

Хотя я все так же запускаю из консоли pppd call mts ;)

День рождения...

10-ого у меня был ДР. :) Спасибо всем кто поздравил, а так же тем кто хотел, но не получилось. :) Было очень приятно. :)
Вчера посидели на работе, отметили. Коллеги подарили флешку на 32 гига. :) Это ж сколько теперь порнухи можно с собой в командировку брать?... ;)

Были и не приятные моменты конечно... Вчера в метро в толпе, прямо из сумки украли ноутбук. Мой старый фуждитсу сименс. :( В общем самого ноута мне не очень-то и жалко, но я собирался отдать его старшему сыну, ему на выходных исполняется 10 лет. Так что эта тварь, которая открыла мою сумку, лишила ребенка радости. Так что будь ты проклята поскуда! И сдохни где-нибудь в конаве в страшных мучениях! Эх, хороший был закон на востоке: вору, пойманному на месте преступления, отрубали руку. Больше 2-х раз ни кто не попадался. ;) Предлагаю возродить эту добрую, варварскую традицию!

Ладно, пусть эта тварь дохнет в страшных мучениях, а у нас жизнь продолжается. :) Расстроился конечно, но ничего, переживу.

В общем вот такие итоги дня рождения. :)

вторник, 2 декабря 2008 г.

Командировка в Ростов-на-Дону

Сижу вот в Ростове. В интернете... Ой нет, надо по порядку. :) Но по порядку надо тогда начать с Краснодара... Ладно, про то, как я попал в Ростов напишу потом, главное хочу сказать спасибо какому-то неизвестному мусульманину который оставил тут активированную карту на wifi. :) Вот по ней и сижу. ;) А почему мусульманин? Ну тут в номере просто лежат (как положено в приличных гостинницах) "новый завет" и (что бывает реже) "каран". А так как мне всегда было интересно почитать каран, то я в него залез соответственно. Но что касается самого карана - ничего не буду говорить: осилил только 2 станицы. Очень тяжело читать. :( Но на 34-ой старнице была заложена та самая вышеупомянутая карта. :) Вот такие дела. :)