- Вступ
- Перенесення віртуальної машини з xenserver на kvm
- Відновлення завантаження linux сервера
- висновок
- Онлайн курс Безпека 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
Нічого дивного в цьому немає, модифіковане ядро для 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 /
Беремо найсвіжішу версію і збираємо образ initrd.
# Mkinitrd -v -f /boot/initrd-2.6.18-419.el5.img 2.6.18-419.el5
Редагуємо конфиг завантажувача /boot/grub/grub.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
Перевірте себе на вступний тест і дивіться детальніше програму по.