Как перенести Linux-сервера в виртуальную среду vmware 5.x.x без VMware Converter с помощью Acronis True Image
Сегодня закончил интересный эксперимент — перенос сервера под управлением CentOS 6 с реального железа, на виртуальное. Ситуация такова: есть сервер с работающим и настроенным CentOS на борту, нам нужно между голым железом и операционкой сделать прокладку в виде гипервизора ESXi/XenServer/Virtualbox и т.п. При этом, у нас нету второго сервера, нету vCenter, соответственно, нету возможности использовать «легальные» и поддерживаемые утилиты типа VMware Converter для P2V миграций.
Собственно, у меня и возникла необходимость переноса Linux-сервера в такой ситуации. Но прежде чем делать все это на живом, работающем продакшн-сервере, я решил протестировать в, так сказать, «лабораторных» условиях. И вот что получилось.
План миграции таков:
- делаем образ диска с помощью Acronis True Image на флешку или внешний винчестер (в зависимости от объема)
- форматируем внутренние винты сервера и устанавливаем гипервизор (в моем случае VMware ESXi 5.5)
- создаем нужных размеров виртуальную машину
- разворачиваем образ диска на виртуалке
Данный способ хорош тем, что для миграции нам понадобится только: Live CD с Acronis, установщик ESXi, флешка или внешний винчестер подходящих размеров, консоль (ноутбук или ПК-шка в одной сети с сервером). Теоретически, план вполне рабочий, но «могут быть варианты» :)) В общем ближе к делу, по пунктам:
Создание образа работающего сервера
- Загружаемся с Windows Live-CD на котором есть Acronis (например Alkid).
- Подключаем флешку или внешний винчестер, свободного места на котором будет достаточно для создания образа. Советую брать устройство, на котором есть столько свободного места, сколько занятого пространства на всех разделах сервера вместе взятых. Акронис, конечно, сжимает данные в процессе создания образа, но лучше брать с запасом.
- С помощью Acronis True Image создаем файл образа всего винчестера. Подробно сей процесс описывать не буду т.к. Acronis — программа многим знакомая и интуитивно понятная. Единственное, на что нужно обратить внимание, это что бы стояли галочки на всех разделах диска, включая MBR!!! Форматирование дисков и установка гипервизора
- После создания образа работающего сервера отключаем внешний накопитель, вставляем установочный диск с гипервизором, в моем случае — VMware ESXi 5.5, и перезагружаем сервер.
- Устанавливаем ESXi, который автоматически отформатирует винчестер (или RAID-массив сервера), предварительно предупредив об этом (подробно процесс установки опишу отдельной статьей).
- Настраиваем сеть на ESXi и подключаемся с помощью vSphere Client 5.5 (его можно скачать на веб-интерфейсе ESXi-сервера) из нашей «консоли» (ноутбук или пк-шка). Если проблем с подключением к серверу через vSphere Client не возникло (а их не должно возникнуть), то можно приступить к следующему этапу — подготовке целевой виртуальной машины для сервера
- В vSphere Client-е кликаем правой по нашему хосту и выбираем «New Virtual Machine» -> «Custom».
- Следуя мастеру выбираем «Version 9″ -> задаем параметры оперативной памяти и кол-во процессоров, тип операционной системы и т.п..
- Когда доходим до диска — выбираем «Create New Disk» и задаем размер виртуального диска, который хотим отдать виртуалке. Здесь нужно указать размер не меньше чем объем занятого пространства на ВСЕХ разделах нашего Linux-сервера, когда он еще был живой.
- Что бы пробросить USB-девайс в нашу виртуалку, понадобится добавить соответствующий контроллер в нее. Для этого кликаем правой -> «Edit Settings» -> «Add» -> «USB controller». Виртуальную машинку создали и подготовили — можно приступать к развертыванию образа в ней
- Монтируем iso-шку Live-CD в CD-привод нашей виртуалки и пробрасываем наш USB-накопитель, загружаемся.
- Убеждаемся, что наш внешний накопитель подключен и распознался и приступаем к развертыванию образа с помощью Acronis True Image. Мне было любопытно, как Акронис отреагирует на изменение размера винчестера при восстановлении линуксовых разделов (в виртуалке винчестер был в разы меньше). Программа любезно предложила сделать автоматический ресайз всех разделов таким образом, что бы поместиться в выделенное пространство. Мне эта идея понравилась и я решил рискнуть. В итоге — программа отрезала у каждого раздела одинаковый процент свободного пространства (достаточно умно).
- Как было замечено выше — на одном из этапов восстановления Acronis предложил сделать автоматический ресайз разделов, или же можно сделать это вручную. Я выбрал автомат. Немного забегая наперед, скажу что данная процедура прошла удачно и Acronis не побил мои разделы, а все все файлы остались в целости и сохранности. У меня все разделы были в старой доброй Ext3, про другие файловые системы не скажу.
- После завершения восстановления системы из образа — отключаем iso-шку, usb-девайс и перезагружаем виртуалку наблюдая результаты своего труда. И шо с того получилось…
После перезагрузки, я был приятно удивлен тем, что мой CentOS начал бодренько грузиться. Сначала Grub, потом ядро…это значило что MBR в порядке и загрузочный раздел тоже. Но когда дело дошло до монтирования дисков, то вылезла херь:
Ничего сложного в этом нету. В CentOS это делается так:
- Подключаем к CD-приводу нашей виртуалки установочную iso-шку CentOS, желательно такой же версии как на сервере (в моем случае это был CentOS 6.4).
- Бутаемся с нее и при загрузке нажимаем F5-Rescue что бы загрузится в «Rescue mode» загрузчик нас просит написать linux rescue и нажать <ENTER> — делаем как сказано.
- При загрузке в этом режиме, загрузчик предложит автоматически обнаружить установленную на жестком CentOS и смонтировать все ее разделы в /mnt/sysimage — соглашаемся!.
- Итак, появилась командная строка. Набираем mount и видим что-то типа:
- Система смонтировала все автоматом, это круто!! Нам остается только сменить окружение с помощью команды chroot /mnt/sysimage
- Смотрим что у нас лежит в /boot и бэкапим старый файлик initrd:
Генерируем новый файл initrd, в качестве параметров: имя целевого файла (должно быть идентичным старому) и точная версия ядра, затем проверяем наличие новоиспеченного файла:
Отключаем iso-шку и перезагружаем виртуалку в нормальном режиме — вуаля! 🙂 После генерирования нового файла initrd мой CentOS завелся без проблем, чему я очень обрадовался.
После того, как наш линукс запустится, советую установить VMware Tools для нашего дистрибутива. Это даст более тесную интеграцию с гипервизором, например: корректное выключение виртуалок при выключении гипервизора, синхронизацию времени, драйверы и т.п.
В заключение
Эксперимент можно считать удачным, а данный способ миграции — работающим. НО! исход данной процедуры зависит от дистрибутива, состояния операционной системы, файловых систем на разделах и т.п., поэтому завершение такой процедуры может быть далеко не тривиальным.
Недавно пришлось переносить умирающий сервер на CentOS 5, в итоге получилось и стало поспокойнее, когда получил виртуальную машину