понедельник, 18 октября 2010 г.

How to Backup VMWare ESXi 4 Server

Как известно люди деляться на две категории, тех то еще не делает бэкапы и тех кто их уже делает.

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

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

Бэкапить я собираюсь на Win машину.

Для того, чтобы к ESXi можно было подключаться удаленно, необходимо его перевести в unsupported mode и включить ssh. А так же установить пакет putty.

После чего делаем вот такой батничек с именем backuplab.bat:

@ECHO OFF
REM %1 - IP of vm host
REM %2 - root password
REM %3 - datastorename
REM %4 - lab name
REM %5 - backup path

ECHO Backup %4 from %1 host to %5\%4

ECHO Create folder for backup - %5\%4

md %5\%4

REM ECHO Remove old data - %5\%4
REM del /F /Q %5\%4\*.*

ECHO Get data from host

"%ProgramFiles%\PuTTY\pscp.exe" -l root -pw %2 -scp -unsafe %1:/vmfs/volumes/%3/%4/*.* %5\%4

ECHO Compress backup

REM C:\Program Files\WinRARrar.exe" a

"%ProgramFiles%\WinRar\rar.exe" a -r -ep1 %5\%4\labarh.rar %5\%4\*.*

ECHO Remove uncompressed data

del /F /Q %5\%4\*.vm*


Использовать его можно так :

backuplab.bat 10.30.30.111 mysuperpassword datastore1 LAB01 C:\BACKUPS


Параметры:
  • IP адрес или имя хоста где живут виртуалки
  • пароль рута
  • название datastore
  • имя виртуальной машины
  • каталог для бэкапов

Скрипт делает следующее -
  1. В каталоге C:\BACKUPS создает подкаталог с именем машины - LAB01
  2. Вытаскивает все данные из датасторы на ESXi
  3. архивирует полученное в labarh.rar

Работает он конечно не шустро, но меня пока устраивает.

PS: Для того чтобы понять что и как лежит в датасторах можно использовать WinSCP

UPD: Вышеописанный метод, с архивацией бэкапа WinRar дает очень неплохой результат, например для моей виртуальной машины объемом 21G бэкап размером всего в 3.5G.

вторник, 5 октября 2010 г.

Mercurial on Windows Server

Последнее время я увлекся системой децентрализованного контроля версии Mercurial. Нравится мне эта штука прежде всего своей легкостью и ненавязчивостью.
В начале я использовал его для индивидуальных проектов для возможности иметь историю изменении и возможность ветвления.
Для такого использования надо, всего лишь, поставить вот это

После чего в любом каталоге будет достаточно набрать:

hg init
hg add
hg commit -m "first"

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

Если есть желание использовать репозитории удаленно, то это тоже достаточно не сложно.
Я буду рассматривать вариант поднятия сервера под Windows.

Предположим мы хотим сделать 2 репозитория в одном каталоге сервера:

D:\REPOS\
D:\REPOS\firstproject
D:\REPOS\secondproject


Для этого в каталог D:\REPOS\ кладем вот такой конфиг web_dir.config:

[paths]
firstproject = D:/REPOS/firstproject
secondproject = D:/REPOS/secondproject

[web]
allow_push = *
push_ssl = false
contact = Bilbo Baggins
description = fixes
allow_archive = zip


После этого в каталоге D:\REPOS\ выполняем командочку

hg serve --webdir-conf web_dir.config


Не очень очевидно то что после запуска вы ничего на консоли не увидите и управление вам не вернется. :)

Попробуите заити по адресу http://localhost:8080 ,должны увидеть простой веб интерфейс с двумя проектами.

Остальные параметры значат следующее
  • allow_push - * - разрешает пушить в репозитории всем
  • push_ssl = false - разрешает пушить по http (по умолчанию только ssl)
  • contact = Bilbo Baggins - имя того кто отвечает за проект (для каждого проекта можно переопределить в .hg\hgrc для конкретного репозитория )
  • description = fixes - описание проекта
  • allow_archive = zip - добавляет ссылочку для скачивания последней версии в архиве

Пользоваться этим просто. На клиентской машине так же ставим mercurial и даем команду:

hg clone http://myserver/firstproject


Теперь у нас есть своя копия репозитория локально и можно с ней работать, после того как сделали изменения и их зачекинили (hg commit) ,можно их вернуть обратно на сервер командой hg push или взять свежее с сервера командой hg pull

При этом в веб интерфеисе можно легко смотреть изменения , коменттарии и прочее.

Вообщем все очень просто и удобно.

Для более подробного понимания всех команд hg RTFM User Guide