Перенос Linux-сервера в виртуальную среду с помощью Acronis True Image Печать
28.06.12 11:20

Перенос Linux-сервера в виртуальную среду с помощью Acronis True Image

 

Сегодня закончил интересный эксперимент — перенос сервера под управлением CentOS 5 с реального железа, на виртуальное.

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

Ситуация такова: есть сервер с работающим и настроенным CentOS на борту, нам нужно между голым железом и операционкой сделать прокладку в виде гипервизора ESXi/XenServer/Virtualbox и т.п. При этом, у нас нету второго сервера, нету vCenter, соответственно, нету возможности использовать «легальные» и поддерживаемые утилиты типа VMware Converter для P2V миграций.

Собственно, у меня и возникла необходимость переноса Linux-сервера в такой ситуации. Но прежде чем делать все это на живом, работающем продакшн-сервере, я решил протестировать в, так сказать, «лабораторных» условиях. И вот что получилось.

План миграции таков:

- делаем образ диска с помощью Acronis True Image на флешку или внешний винчестер (в зависимости от объема)

- форматируем внутренние винты сервера и устанавливаем гипервизор (в моем случае VMware ESXi 5.0)

- создаем нужных размеров виртуальную машину

- разворачиваем образ диска на виртуалке

Данный способ хорош тем, что для миграции нам понадобится только: Live CD с Acronis, установщик ESXi, флешка или внешний винчестер подходящих размеров, консоль (ноутбук или ПК-шка в одной сети с сервером).

Теоретически, план вполне рабочий, но «могут быть варианты» :))

В общем ближе к делу, по пунктам:

Создание образа работающего сервера

1. Загружаемся с Windows Live-CD на котором есть Acronis (например Alkid).

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

3. С помощью Acronis True Image создаем файл образа всего винчестера. Подробно сей процесс описывать не буду т.к. Acronis — программа многим знакомая и интуитивно понятная. Единственное, на что нужно обратить внимание, это что бы стояли галочки на всех разделах диска, включая MBR!!!

Форматирование дисков и установка гипервизора

4. После сзодания образа работающего сервера отключаем внешний накопитель, вставляем установочный диск с гипервизором, в моем случае — VMware ESXi 5.o, и перезагружаем сервер.

5. Устанавливаем ESXi, который автоматически отформатирует винчестер (или RAID-массив сервера), предварительно предупредив об этом (подробно процесс установки опишу отдельной статьей).

6. Настраиваем сеть на ESXi и подключаемся с помощью vSphere Client 5.0 (его можно скачать на веб-интерфейсе ESXi-сервера) из нашей «консоли» (ноутбук или пк-шка).

Если проблем с подключением к серверу через vSphere Client не возникло (а их не должно возникнуть), то можно приступить к следующему этапу — подготовке целевой виртуальной машины для сервера

7. В vSphere Client-е кликаем правой по нашему хосту и выбираем «New Virtual Machine» -> «Custom».

8. Следуя мастеру выбираем «Version 8″ -> задаем параметры оперативной памяти и кол-во процессоров, тип операционной системы и т.п..

9. Когда доходим до диска — выбираем «Create New Disk» и задаем размер виртуального диска, который хотим отдать виртуалке. Здесь нужно указать размер не меньше чем объем занятого пространства на ВСЕХ разделах нашего Linux-сервера, когда он еще был живой.

10. Что бы пробросить USB-девайс в нашу виртуалку, понадобится добавить соответствующий контроллер в нее. Для этого кликаем правой -> «Edit Settings» -> «Add» -> «USB controller».

Виртуальную машинку создали и подготовили — можно приступать к развертыванию образа в ней

11. Монтируем iso-шку Live-CD в CD-привод нашей виртуалки и пробрасываем наш USB-накопитель, загружаемся.

12. Убеждаемся, что наш внешний накопитель подключен и распознался и приступаем к развертыванию образа с помощью Acronis True Image.

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

13. Как было замечено выше — на одном из этапов восстановления Acronis предложил сделать автоматический ресайз разделов, или же можно сделать это вручную. Я выбрал автомат. Немного забегая наперед, скажу что данная процедура прошла удачно и Acronis не побил мои разделы, а все все файлы остались в целости и сохранности. У меня все разделы были в старой доброй Ext3, про другие файловые системы не скажу.

14. После завершения восстановления системы из образа — отключаем iso-шку, usb-девайс и перезагружаем виртуалку наблюдая результаты своего труда.

И шо с того получилось…

После перезагрузки, я был приятно удивлен тем, что мой CentOS начал бодренько грузиться. Сначала Grub, потом ядро…это значило что MBR в порядке и загрузочный раздел тоже. Но когда дело дошло до монтирования дисков, то вылезла бочина:

Mounting root filesystem.
mount: could not find filesystem '/dev/root'
Setting up other filesystems.
Setting up new root fs
setuproot: moving /dev failed: No such file or directory
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

В результате гугления выяснилось что решением этой проблемы есть создание нового файла initrd. О том, как это сделать, написано здесь.

После генерирования нового файла initrd мой CentOS завелся без проблем, чему я очень обрадовался.

После того, как наш линукс запустится, советую установить VMware Tools для нашего дистрибутива. Это даст более тесную интеграцию с гипервизором, например: корректное выключение виртуалок при выключении гипервизора, синхронизацию времени, драйверы и т.п.

В заключение

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

В этот раз я переносил CentOS в лабораторных условиях, а в ближайшее время буду переносить «боевой» сервер Debian Squeeze.

Последнее обновление 28.06.12 11:35