Перенесення віртуальних машин з XenServer на Hyper-V

  1. Вступ
  2. Перенесення віртуальної машини з xenserver на kvm
  3. Відновлення завантаження linux сервера
  4. висновок
  5. Онлайн курс Безпека Linux

Мені завжди подобався безкоштовний гіпервізор Xenserver, часто його використовував. Але недавно прийняв рішення поступово переходити на інший гипервизор. Який саме - ще не вирішив остаточно. Про причини відмови від Xenserver і загальних думках з приводу сучасних гіпервізора розповім докладніше далі. У статті розгляну докладно питання перенесення віртуальних машин з Xenserver на Hyper-v.

Якщо у вас є бажання навчитися будувати і підтримувати високодоступних і надійні системи, рекомендую познайомитися з онлайн-курсом «Адміністратор Linux» в OTUS. Курс не для новачків, для вступу потрібно пройти.

Вступ

Статтю спочатку хотів написати на тему установки Xenserver 7 на mdadm raid1. Мені завжди подобався xen саме за можливість встановити його на mdadm. Це дозволяло використовувати гипервизор на будь-якому залозі з двома Харді, забезпечуючи просту відмовостійкість на рівні дисків. Це зручно і бюджетно. Те ж саме можна зробити на kvm, але особисто мені у xen більше подобається оснащення управління у вигляді додатку для windows. У неї можна зручно підключати безліч серверів і управляти всім з одного місця. Як плюс, в порівнянні з kvm, простіше і швидше встановити і налаштувати в роботу, передати кому-небудь на управління.

Власне, чернетка статті по установці Xenserver на Софтова рейд я підготував і протестував. На перший погляд все працює. Проблеми почалися, коли я став перевіряти відмовостійкість і відключати один хард. Як виявилося, xenserver не може нормально завантажитися, якщо рейд mdadm йде в стан degreaded. Я був дуже засмучений цим фактом і витратив безперервно майже добу на те, щоб розібратися з ситуацією і спробувати вирішити проблему. Але у мене це не вийшло. І в інтернеті рецепта щодо вирішення проблеми теж не знайшов, але знайшов підтвердження цієї проблеми.

Схоже, XenServer з версії 7 більше не підтримує роботу на mdadm. Про це навіть згадано в офіційному FAQ:

- Does XenServer support a software-based RAID implementation?
- No, XenServer does not support software RAID.

Я перевірив на версії 7.0 і 7.1. Результат один і той же - система не завантажується, якщо рейд розвалився. Причому в інтернеті є статті, де розказано, як перенести чисту установку xen 7 на mdadm. Схоже ці люди просто не тестували відмова одного з дисків. Поки це не перевіриш, здається, що все в порядку. Проблема тут в тому, що Xenserver 7 перейшов на CentOS 7. А там багато нововведень, зокрема systemd. Я точно не зміг визначити в чому ж конкретно проблема. Є якась не сумісність в модулях завантаження, ядрі xenserver і версії mdadm. На CentOS 7 був схожий баг в момент виходу, але він був оперативно виправлено. А на XenServer розробники на це забили, так як підтримку mdadm і не обіцяли. В результаті гипервизор залишився без можливості установки на mdadm. Для мене це неприйнятно, тому що mdadm активно використовую. Якщо виходить з ладу будь-який диск, система в момент завантаження нескінченно висить з повідомленням:

A Start Job is running for dev-md0.device

У мене до цих пір є багато віртуальних машин під керуванням CentOS 5. Особливість цієї версії в тому, що для нормальної роботи на XenServer на систему встановлювалося спеціальне ядро ​​kernel-xen. У підсумку, при перенесенні системи на інший гипервизор, вона відмовлялася працювати. Необхідно серйозно попрацювати напилком, щоб завести її. Мені важливо було відпрацювати цей момент, так як в роботі доведеться поступово відходити від Xenserver в сторону або Hyper-V, або KVM. Поки ще не вирішив остаточно, так як на KVM у мене так і не вийшло завести віртуальні машини з xen, а ось на Hyper-V вдалося. Про це і розповім.

Перенесення віртуальної машини з xenserver на kvm

Сам перенесення віртуальної машини вдає із себе просте копіювання диска з одного гипервизора на інший. Для бекапа Xenserver я використовую безкоштовну версію програми Alike Free . На жаль, її більше немає у безкоштовній редакції. Розробники закрили безкоштовний проект, є тільки тріальна версія від платною. Але у мене залишився і дистрибутив, і ключі для безкоштовної версії. Я продовжую її використовувати. Проста і зручна програма, яка дозволяє робити інкрементні бекапи віртуальних машин. Вона ж вміє вивантажувати бекапи в vhd форматі. Все що треба зробити для перенесення виртуалки - створити таку ж машину на hyper-v і в якості диска вказати перенесений vhd образ з xenserver. Але якщо після цього просто запустити виртуалку, ви отримаєте помилку.

Error 13: invalid or unsupported executable format

Error 13: invalid or unsupported executable format

Нічого дивного в цьому немає, модифіковане ядро ​​для xen працює тільки на самому гіпервізора. Для роботи в іншому середовищі необхідно встановити стандартне ядро ​​linux. Ось цим я і займуся далі. Завдання виявилося дуже непростою, довелося багато колупатися в різних нюансах. В першу чергу, щоб не забути набутий досвід, я і пишу цю статтю. Хоча розумію, що мало кому знадобиться подібний досвід. Навряд чи знайдеться багато людей, хто буде переносити вже зняту з підтримки систему CentOS 5 з гипервизора Xen кудись в інше місце. По-хорошому, системи треба переставляти, та я цим поступово займуся. Але все одно необхідно мати під рукою готову інструкцію на випадок будь-яких несподіванок.

Описаний нижче спосіб відновлення завантаження віртуальної машини є універсальним засобом для вирішення проблем із завантаженням linux сервера. Якщо у вас з якоїсь причини не завантажується linux сервер, зламався завантажувач або виникли проблеми після оновлення ядра, розказані далі способи оновлення та заміни ядра і завантажувача можуть допомогти у вирішенні цієї проблеми.

Відновлення завантаження linux сервера

Для того, щоб віртуальна машина запрацювала на hyper-v, як я вже сказав, необхідно встановити стандартне ядро. Для цього завантажуємося у віртуальній машині з завантажувального диска CentOS 7 і вибираємо режим Rescue a CentOS system.

Щоб вибрати цей розділ, необхідно в головному меню вибрати Troubleshooting. Чекаємо завантаження і вибираємо перший запропонований варіант.

Відразу чрутімся в нашу відновлювану систему. Насамперед треба оновити систему і встановити стандартне ядро. Швидше за все через yum у вас нічого не вийде, так як посилання на репозиторії centos 5 стали неактивні, після того, як 31-го березня закінчилася підтримка системи. Необхідно змінити файл /etc/yum.repos.d/CentOS-Base.repo, відредагувавши шляху відповідних розділів на наступні:

baseurl = http: //vault.centos.org/5.11/ os / $ basearch / baseurl = http: //vault.centos.org/5.11/ updates / $ basearch / baseurl = http: //vault.centos.org/ 5.11 / addons / $ basearch / baseurl = http: //vault.centos.org/5.11/ extras / $ basearch / baseurl = http: //vault.centos.org/5.11/ centosplus / $ basearch / baseurl = http: / /vault.centos.org/5.11/ contrib / $ basearch /

Всі рядки з mirrorlist треба закомментировать, а baseurl змінити на зазначені. Після цього треба налаштувати мережу і запустити оновлення системи.

# Yum clean all # yum update

Тепер встановимо стандартне ядро ​​linux, а від xen видалимо.

# Yum remove kernel-xen # yum install kernel

Далі оновимо initrd. Щоб не було помилок, необхідно в файлі /etc/modprobe.conf закомментировать всі рядки, в яких є згадка xen.

Тепер перевіряємо версію наявних бібліотек ядра в системі.

# Ls -l / lib / modules /

# Ls -l / lib / modules /

Беремо найсвіжішу версію і збираємо образ initrd.

# Mkinitrd -v -f /boot/initrd-2.6.18-419.el5.img 2.6.18-419.el5

Редагуємо конфиг завантажувача /boot/grub/grub.conf, щоб він вибрав при завантаженні саме цю версію ядра.

conf, щоб він вибрав при завантаженні саме цю версію ядра

Параметр default = 1 відповідає другому рядку меню, так як відлік йде від 0. Тобто якраз буде вибрано потрібне оновлене ядро. Оновлюємо завантажувач на диску.

# Grub-install / dev / sda

Якщо отримаєте помилку:

/ Dev / sda does not have any corresponding BIOS drive.

Використовуйте таку команду:

# Grub-install --recheck / dev / sda

За ідеєю, на цьому можна було б і завершити. Ми фактично виконали повне відновлення поламаною завантаження linux сервера. Але так як мова йде про xenserver, є ще один нюанс. Якщо зараз спробувати завантажити віртуальну машину, то все пройде гладко майже до самого кінця завантаження, а потім вилізе помилка.

init: Id 'co' respawning too fast: disabled for 5 minutes

Вона буде висіти нескінченно. Пов'язана з доступом до консолі віртуальної машини на xenserver. В іншому оточенні, параметр повинен бути змінений. Щоб виправити помилку, треба відредагувати файл / etc / inittab. Знайти в ньому рядок

co: 123457: respawn: / sbin / agetty xvc0 9600 vt100-nav

Закоментувати її, а замість неї зняти коментар з рядка

1: 123457: respawn: / sbin / mingetty tty1

Тепер можна перезавантажувати виртуалку. Вона повинна благополучно завантажитися. Принаймні у мене було так.

На жаль, зазначений вище спосіб не зміг змусити завантажитися цю ж віртуальну машину на гіпервізора KVM. Не знаю чому. Після вибору в засобі завантаження версії ядра, система просто зависає в такому положенні.

Після вибору в засобі завантаження версії ядра, система просто зависає в такому положенні

І далі нічого не відбувається. Ніяких помилок при цьому немає. У мене навіть немає ідей через що це може бути і в якому напрямку рухатися, щоб запустити виртуалку. Якщо у когось є ідеї як це зробити, прошу ради. Мені б дуже хотілося перенести віртуальні машини з centos 5 на kvm. Я пробував переносити вже відновлені виртуалки з hyper-v на kvm, конвертував диск з vhd в qсow2, але все без результату. Вони все одно зависають точно так же, як якщо б я їх переносив безпосередньо з xenserver.

висновок

Перенесення віртуальних машин добре працює в рамках одного гипервизора. У разі, якщо переносите з одного на інший, з великою часткою ймовірності отримаєте деякі проблеми. Я з цим частенько стикаюся, особливо з linux і freebsd. Найчастіше починаються проблеми з дисками і загрузчиком. Те букви дисків поміняються, доводиться правити fstab, то завантажувач НЕ стартує. Іноді мережа може не працювати. Скрізь доводиться за місцем розбиратися і вирішувати виникаючі проблеми.

Якщо у когось є досвід або поради в розглянутих в статті проблеми, прошу поділитися в коментарях. Найбільше мене цікавить питання установки XenServer на mdadm і перенесення віртуалок з xenserver на kvm.

Онлайн курс Безпека Linux

Якщо у вас є бажання детальніше розібратися в процесах настройки і забезпечення безпеки локальної та мережевої інфраструктури, побудованої на базі ОС Linux, навчитися захисту даних і запобігання хакерських атак, рекомендую познайомитися з онлайн-курсом «Безпека Linux» в OTUS. Курс не для новачків, для надходження потрібні базові знання з мереж і установці Linux на виртуалку. Навчання триває 4 місяці, після чого успішні випускники курсу зможуть пройти співбесіди у партнерів. Чому навчитеся:

  • Захищати будь-який сервер (web, e-mail, ftp, etc.)
  • Керувати користувачами і групами з точки зору безпеки
  • Конфігурувати і використовувати вбудований мережевий фільтр iptables
  • Встановлювати і налаштовувати проксі-сервер SQUID
  • Використовувати систему аудиту і важливі журнальні файли, які необхідно контролювати
  • Налаштовувати з точки зору безпеки популярні сервіси, наприклад, такі як, xinetd, OpenSSH, portmap, NFS, Apache, Proftpd, BIND, SAMBA

Перевірте себе на вступний тест і дивіться детальніше програму по.

Допомогла стаття? Є можливість віддячити автора

Допомогла стаття?

Дополнительная информация

rss
Карта