Jump to content
Sign in to follow this  

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

Sign in to follow this  
k010v

209 views

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

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

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

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

 

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

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

— форматируем внутренние винты сервера и устанавливаем гипервизор 

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

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

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

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

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

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

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

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

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

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

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

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

6. Настраиваем сеть на ESXi и подключаемся с помощью vSphere Client 6.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.

Ничего сложного в этом нету. В CentOS это делается так:

Подключаем к CD-приводу нашей виртуалки установочную iso-шку CentOS, желательно такой же версии как на сервере (в моем случае это был CentOS 7).

  1. Бутаемся с нее и при загрузке нажимаем  F5-Rescue что бы загрузится в «Rescue mode» загрузчик нас просит написать linux rescue и нажать <ENTER> — делаем как сказано.
  2. При загрузке в этом режиме, загрузчик предложит автоматически обнаружить установленную на жестком CentOS и смонтировать все ее разделы в /mnt/sysimage— соглашаемся!.
  3. Итак, появилась командная строка. Набираем mount и видим что-то типа:
    centos-rescue-mode-1.png
  4.  Система смонтировала все автоматом, это круто!! Нам остается только сменить окружение с помощью команды chroot /mnt/sysimage
  5. Смотрим что у нас лежит в /boot и бэкапим старый файлик initrd:
  6. Генерируем новый файл initrd, в качестве параметров: имя целевого файла (должно быть идентичным старому) и точная версия ядра, затем проверяем наличие новоиспеченного файла:centos-rescue-mode-3.png
  7. Отключаем iso-шку и перезагружаем виртуалку в нормальном режиме — вуаля! 🙂

После таких манипуляций у меня все замечательно завелось, чего и вам желаю.

 

В заключение

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

Sign in to follow this  


0 Comments


Recommended Comments

There are no comments to display.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...