Clonazilla LiveCD — Как инструмент для p2v and v2v миграции

Статья была написана 8 марта 2011 г. Перенесена из старого блога.

Появилась необходимость, перенести ВМ(CentOS 5.4) с платформы VMware Server 2.0.2 в QEMU-KVM среду. При этом, первое, что требовалось это сменить формат диска с VMDK на RAW или вообще перенести на LVM-том.
Хотя KVM, без проблем работает с VMDK, хотелось выжать максимум производительности да и RAW/LVM как то по роднее будут.

В принципе, для конвертации в RAW можно было использовать qemu convert *, и особо не париться. Но мне хотелось найти универсальное средство переноса не только в RAW но и на LVM-том.

Перенос ВМ с помощью Clonezilla LiveCD

Clonezilla — это опенсорсный проект, аналог Acronis True Image и Norton Ghost. Основан на Debian. Особенно ориентирован на бекап/клонирование линуксовых дисков, разделов, LVM-томов. Поддерживает массу файловых систем в том числе NTFS, что позволяет клонировать любые разделы или диски целиком. Если файловая система не поддерживается(таких мало) то будет использовано посекторное клонирование с помощью dd, с исключением пустых секторов(то есть копируются только данные)! Поддерживаются различные алгоритмы сжатия, а так же работа с NFS, Samba, SSH серверами в качестве хранилищ. В общем очень, функциональная вещь!

Технические детали

Переносим с CentOS 5.5 x86-64 в минимальной комплектации с VMware Server 2.0.2 на борту
Помещаем на CentOS 5.5 x86-64 в минимальной комплектации с QEMU-KVM+Libvirt на борту.
В качестве ВМ выступает старенький CentOS 5.4 i686 с одним единственным диском в формате VMDK, объемом 10Гб.
Очень удобно если в сети есть NFS или Samba-сервер с каталогом доступным для записи. Это не обязательно но именно такой(NFS) вариант использовал я. Клонируем диск на NFS-сервер и потом с него же(с NFS-сервера) восстанавливаем на другой машине.

Практика

Первое, что нам надо это скачать дистрибутив Clonezilla с официального сайта.
Далее, вставляем ISO-шник Clonezilla в виртуальный привод ВМ на VMware Servere и грузимся с него.

На первой страничке нас приветствует стандартное окно загрузчика Grub с небольшой минюшкой Clonzilla.
Здесь можно выбрать разрешение экрана или другие варианты загрузки(по сети или с жесткого диска)
Далее в диалоговом окне будет предложено выбрать язык интерфейса. Русского нет, поэтому оставляем английский.
После, будет предложено настроить клавиатуру. Нечего менять не стоит, все работает отлично.
Следующим шагом будет предложение запустить псевдо-графический интерфейс colonezilla или перейти в командную строку Debian.
Выбираем первый вариант. Хотя все операции довольно простые…Можно все сделать из консоли.

Далее запустится «мастер» создания резервной копии/клонирования и предложит нам 2-а варианта: device-image или device-device. Из названия понятно, что они значат, поэтому просто выбираем первый вариант(device-image).

Второй вариант(device-device) был бы особо удобен если бы мы переносили бы например ВМ из RAW-диска на LVM-том. Тогда мы могли бы подключить к ВМ новый физический диск(LVM-том) и клонировать на него нужный нам диск ВМ. После клонирования отключить RAW-диск и загрузится уже с LVM-тома.
После выбора, метода клонирования, будет предложено выбрать место сохранения нашего имиджа.
Я выбрал NFS-сервер(nfs_server) так как это очень удобно. Если NFS-сервера или Samba(samba_server) у вас в сети или на этом же сервере виртуализации нет, то можно выбрать локальный диск(local_dev) то есть у ВМ должно быть как минимум два диска или раздела. Но в любом случае, после бекапа/клонирования, вам нужно будет переместить бекап на другой сервер для восстановления, а это уже может быть проблемно. Так, что NFS в сети надо завести)

После выбора любого из сетевых хранилищ(в моем случае это NFS-сервер) будет предложено настроить сеть. Сделать это можно по разному: dhcp, static, pppoe(даже такое может). Если в сети есть DHCP-сервер то все сново просто и удобно. Если нет, то настраиваем ручками….
Указываем ip адресс. После указываем маску а так же шлюз и ДНС если надо.
Теперь когда сеть сконфигурирована, указываем адрес нашего NFS-сервера.
А затем экспортируемый им(NFS-сервером) каталог. После этого clonezilla полезет в сеть, и если адрес сервера и каталог указанны правильно, то смонтирует этот каталог в /home/images.
Ну и наконец, когда все готово, clonezilla спросит как мы хотим работать больше в простом режиме(Beginner) или в режиме эксперта(Expert).

Если в вашей ВМ используются типичные файловые системы(ext2/3/4 ReiserFS и прочие) которые поддерживаются clonezilla а так же если вы не используете LVM-тома внутри вашей ВМ, то вы смело можете выбирать первый вариант(Beginner). Кстати LVM-тома без проблем поддерживаются clonezilla, только вот у меня не получилось в режиме(Beginner).На следующем этапе будет предложено несколько возможных операций:
savedisk, saveparts, restoredisk, restoreparts, recovery-iso-zip

Все пункты понятны без описания, поэтому просто выбираем необходимый. Я выбрал первый, так как хотел перенести весь диск целиком.
Далее, необходимо указать имя будущего архива. После чего будет предложено выбрать диск/раздел который мы хотим архивировать.
У меня диск один, так, что я долго не думал)

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

Единственное, что я скажу это то, что первый вариант наиболее универсален и производителен. Он подходит для большинства случаев(у меня не прошел). Второй вариант(Only dd) наиболее медленный, но 100% эффективен, т.к выполняется по секторное копирование диска не зависимо от ФС. Третий вариант наиболее подходит для разделов с NTFS. Ну а четвертый я не пробовал)

Я выбрал второй вариант(Only dd) так как времени мне было не жалко, да и диск не большего объема.

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

После этого выберем сжатие.
Сжатие возможно при любом режиме клонирования(даже если dd). Причем жмется прилично!
Я нечего не менял.
После выбора сжатия, указываем как резать выходной файл. По умолчанию указанно 2000 Мб. Я указал 12000, что больше размера моего диска. Мне резать нечего не надо)
Ну и последний шаг, указываем, что делать после завершения: нечего, перезагрузить, или выключить.

После успешного создания копии диска. Необходимо создать новую ВМ, на KVM-хосте, подключить к ней уже какой душа пожелает пустой/новый диск, RAW или LVM-том здесь уже не имеет значение. Причем размер диска должен быть равен или больше чем оригинальный диск, который мы копировали!

Ну а дальше, грузимся с того же ISO-шника Clonezilla. В качестве хранилища указываем тот же каталог на NFS-сервере. Вместо savedisk выбираем resoredisk. После этого, в качестве источника будут предложена сделанный до этого архив диска. В качестве цели нужно выбрать диск на который хотим восстановить архив. После восстановления пере загружаемся и получаем тот же сервер(или, что там у вас) только уже под крылом KVM и внутри RAW, QCOW2 или LVM-тома…