Сьогодні закінчив цікавий експеримент - перенесення сервера під керуванням 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 в порядку і завантажувальний розділ теж. Але коли справа дійшла до монтування дисків, то вилізла бочина:
В результаті гугленія з'ясувалося що вирішенням цієї проблеми є створення нового файлу initrd. Про те, як це зробити, написано тут.
Після генерування нового файлу initrd мій CentOS завівся без проблем, чому я дуже зрадів.
Після того, як наш лінукс запуститься, раджу встановити VMware Tools для нашого дистрибутива. Це дасть більш тісну інтеграцію з гіпервізором, наприклад: коректне виключення віртуалок при виключенні гипервизора, синхронізацію часу, драйвери і т.п.
Експеримент можна вважати вдалим, а даний спосіб міграції - працюючим. АЛЕ! результат даної процедури залежить від дистрибутива, стану операційної системи, файлових систем на розділах і т.п. тому завершення такої процедури може бути далеко не тривіальним.
Цього разу я переносив CentOS в лабораторних умовах, а найближчим часом буду переносити «бойовий» сервер Debian Squeeze.
Тому - далі буде ...;)