virt-p2v(1) | Virtualization Support | virt-p2v(1) |
virt-p2v — перетворення фізичної машини для використання KVM
virt-p2v virt-p2v.iso
Virt-p2v перетворює фізичну машину для запуску віртуалізованою у KVM, під керуванням libvirt, OpenStack, oVirt, Red Hat Virtualisation (RHV) або одним із інших призначень, підтримку яких передбачено у virt-v2v(1).
Зазвичай, потреби у безпосередньому запуску програми virt-p2v немає. Замість цього, вам слід завантажити фізичну машину за допомогою придатного до завантаження компакт-диска, ISO або образу PXE. Цей придатний до завантаження образ містить виконуваний файл virt-p2v і запускає його автоматично. Завантаження з компакт-диска або іншого носія є обов'язковим, оскільки диски, які перетворюватимуться, мають бути статичними. Перетворення активної фізичної машини не є безпечним, оскільки під час створення образу інші програми можуть вносити до нього зміни.
Цю сторінку підручника присвячено документуванню використання програми virt-p2v. Щоб створити придатний до завантаження образ, вам слід скористатися virt-p2v-make-disk(1) або virt-p2v-make-kickstart(1).
Virt-p2v працюватиме над фізичною машиною, яку ви хочете перетворити. Програма має обмінюватися даними із іншим сервером, який називається «сервером перетворення» і на якому має бути встановлено virt-v2v(1). Обмін даними із сервером перетворення завжди виконуватиметься за допомогою SSH:
┌──────────────┐ ┌─────────────────┐ │ virt-p2v │ │ virt-v2v │ │ (фізичний │ з'єднання ssh │ (сервер │ │ сервер) ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶ перетворення) │ └──────────────┘ └─────────────────┘
Програма virt-v2v на сервері перетворення виконає саме перетворення (перетворення машини з фізичної на віртуальну і з віртуальної машини на віртуальну достатньо подібні, щоб використовувати для них обох ту саму програму).
З'єднання SSH завжди ініціюється з фізичного сервера. Усі дані передаються цим з'єднанням SSH. У термінах налаштування брандмауера і мережі, вам слід лише забезпечити доступ до порту (зазвичай, порту TCP 22) для фізичного сервера на серверів перетворення. Зауважте, що під час процесу перетворення фізична машина може повторно встановлювати з'єднання декілька разів.
Для роботи virt-p2v потрібна можливість зворотного переспрямовування портів ssh (тобто працездатність команди "ssh -R"). Програма не працюватиме, якщо цю можливість вимкнено на сервері перетворення. (Для "AllowTcpForwarding" має бути встановлено значення "yes" у файлі sshd_config(5) на сервері перетворення.)
Можливість ssh використовувати scp (безпечне копіювання) є обов'язковою для virt-p2v для надсилання малих файлів (це не той спосіб, у який копіюються диски).
The conversion server does not need to be a physical machine. It could be a virtual machine, as long as it has sufficient memory and disk space to do the conversion, and as long as the physical machine can connect directly to its SSH port. (See also "Resource requirements" in virt-v2v(1)).
Оскільки усі дані на дисках фізичного сервера має бути скопійовано мережею, швидкість перетворення багато у чому визначається швидкість обміну даними мережею між двома машинами.
Після запуску virt-p2v ви побачите графічне діалогове вікно налаштовування, яке допоможе вам встановити з'єднання із сервером перетворення, запитає про пароль, надасть змогу вказати, які локальні жорсткі диски слід перетворити, та інші речі, зокрема назву гостьової системи, яку слід створити, та кількість віртуальних процесорів, які їй слід надати у користування.
Після запуску virt-p2v у режимі графічного інтерфейсу перше діалогове вікно виглядатиме ось так:
┌─────────────────────────────────────────────────────────────┐ │ virt-p2v │ │ │ │ Сервер перетворення: [____________________________] : [22___] │ │ │ │ Користувач: [root__________________________________] │ │ │ │ Пароль: [______________________________________] │ │ │ │ Адреса профілю SSH: [______________________________________] │ │ │
У зазначених вище полях вам слід вказати параметри сервера перетворення: назву вузла, номер порту SSH, ім'я віддаленого користувача і або пароль або адресу профілю SSH (закритого ключа). На сервері перетворення має бути встановлено достатньо сучасну версію virt-v2v.
Зазвичай, вам доведеться входити до сервера перетворення від імені користувача root, але якщо ви позначите такий пункт:
│ │ │ [ ] Використовувати sudo для запуску virt-v2v │ │ │
ви зможете увійти до нього від імені іншого користувача, а virt-p2v використовуватиме команду sudo(8) для розширення прав доступу до прав доступу root. Зауважте, що доступ до sudo має здійснюватися без пароля.
Крім того, virt-v2v можна запустити на сервері перетворення повністю без прав доступу root, але режими виведення у цьому випадку може бути обмежено. Зверніться до сторінки підручника virt-v2v(1), щоб дізнатися більше.
У нижній частині діалогового вікна розташовано такі кнопки:
│ │ │ [ Перевірити з'єднання ] │ │ │ │ [ Налаштувати мережу ] [ XTerm ] [ Про virt-p2v ] [ Далі ] │ │ │ └─────────────────────────────────────────────────────────────┘
Спочатку вам слід натиснути кнопку "Перевірити з'єднання", щоб перевірити з'єднання SSH із сервером перетворення. Якщо з'єднання вдасться встановити (тобто ви вказали правильно назву сервера, ім'я користувача, пароль та інші дані, а на віддаленій машині встановлено придатну версію virt-v2v), натисніть кнопку "Далі", щоб перейти до наступного діалогового вікна.
Ви можете скористатися кнопкою "Налаштувати мережу", якщо вам потрібно визначити статичну IP-адресу фізичної машини або скористатися Wifi, прив'язкою або іншими можливостями мережі.
Кнопка "XTerm" відкриває командну оболонку, якою можна скористатися для діагностики, налаштовування мережі вручну тощо.
За допомогою другого діалогового вікна налаштувань ви можете налаштувати параметри перетворення, зокрема визначити, що слід перетворити, і те, куди слід надіслати гостьову систему.
У лівому стовпчику, починаючи згори, за допомогою властивостей призначення ви можете вибрати назву гостьової системи (тобто назву системи після перетворення) і скільки віртуальних процесорів та оперативної пам'яті слід надати гостьовій системі. Типові значення визначаються за параметрами фізичної машини, ви, звичайно ж, можете їх не змінювати:
┌─────────────────────────────────────── ─ ─ ─ ─ │ Властивості призначення: │ │ Назва: [hostname______________] │ │ К-ть вірт. процесорів: [4_____________________] │ │ Пам'ять (у МБ): [16384_________________] │
Друга панель ліворуч керує параметрами виведення virt-v2v. Для того, щоб краще зрозуміти ці параметри, варто ознайомитися зі сторінкою підручника virt-v2v(1). Ви можете не змінювати типові значення цих параметрів для створення гостьової системи як образу диска і файла XML libvirt, який зберігатиметься у теці /var/tmp на сервері перетворення. Це непоганий варіант, якщо ви є користувачем-початківцем virt-p2v.
│ │ Параметри виведення virt-v2v: │ │ Вивести до (-o): [local ▼] │ │ З'єднання виведення (-oc): [___________________] │ │ Сховище виведення (-os): [/var/tmp___________] │ │ Формат виведення (-of): [___________________] │ │ Розподіл виведення (-oa): [sparse ▼] │
Всі параметри виведення і шляхи вказуються відносно сервера перетворення (не фізичного сервера).
Нарешті, у лівому стовпчику ви знайдете буде наведено інформація щодо версії virt-p2v (на фізичному сервері) та virt-v2v (на сервері перетворення). Вам слід надавати ці дані під час створення звітів щодо вад.
У правому стовпчику розташовано три панелі, які керують тим, які диски, портативні носії даних та мережеві інтерфейси буде створено у отриманій у результаті обробки гостьовій системі. Зазвичай, достатньо використати типові параметри.
─ ─ ───────────────────────────────────────┐ Фіксовані жорсткі диски │ │ Перетворити пристрій │ [✔] sda │ 1024G HITACHI │ s/n 12345 │ [✔] sdb │ 119G HITACHI │ s/n 12346 │ │
Зазвичай, виконується перетворення усіх дисків. Якщо ви хочете, щоб програма virt-p2v повністю проігнорувала локальний диск, зніміть позначку з його пункту. Має бути позначено диск, на якому міститься операційна система. Якщо диск є частиною масиву RAID або групи томів LVM (VG), має бути позначено або усі диски з масиву або групи томів, або жодного диска з масиву або групи томів.
│ Портативний носій │ │ Перетворити пристрій │ [✔] sr0 │ │
Якщо у фізичній машині містяться оптичні диски, ви можете скористатися панеллю «Портативні носії» для створення відповідних дисків у гостьовій системі після перетворення. Зауважте, що усі дані на компакт-дисках так DVD, які було змонтовано, не буде скопійовано.
│ Інтерфейси мережі │ │ Перетворити пристрій, з'єднаний із... | [✔] em1 [типовий_____________] │ [ ] wlp3s0 [типовий_____________] │ │
In the Network interfaces panel, select the network interfaces that should be created in the guest after conversion. You can also connect these to target hypervisor networks (for further information about this feature, see "Networks and bridges" in virt-v2v(1)).
Якщо підтримку відповідної можливості передбачено у обладнанні, клацання лівою кнопкою на назві пристрою (наприклад "em1") призведе до того, що на фізичному інтерфейсі почне блимати лампочка, що надасть змогу оператору ідентифікувати інтерфейс.
Коли будете готові розпочати перетворення, натисніть кнопку "Розпочати перетворення":
│ [ Назад ] [ Розпочати перетворення ] │ │ ─ ─ ───────────────────────────────────────┘
Протягом процедури перетворення ви бачитимете таке діалогове вікно:
┌────────────────────────────────────────────────────────┐ │ virt-p2v │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ ▲│ │ │ │ │ │ │ │ │ │ ∼ ∼ ∼ ∼ │ │ │ │ │ │ │ │ │ │ ▼│ │ │ └──────────────────────────────────────────────────┘ │ │ │ │ Файли журналу ... до /tmp/virt-p2v-xxx │ │ │ │ Виконуємо перетворення ... │ │ │ │ [ Скасувати перетворення ] │ │ │ └────────────────────────────────────────────────────────┘
У основній області зі смужкою гортання ви побачите повідомлення від процесу virt-v2v.
Під основною областю virt-p2v показуватиме вам каталог на сервері перетворення, який міститиме файли журналу та інші діагностичні дані. Нижче буде показано дані щодо поточного стану та кнопку для скасовування перетворення.
Після завершення перетворення вам слід вимкнути фізичну машину. Якщо перетворення буде успішним, вам уже ніколи не доведеться її перезавантажувати.
Якщо ви не хочете налаштовувати параметри за допомогою графічного інтерфейсу користувача, можете налаштувати їх за допомогою командного рядка ядра. Це особливо зручно, якщо вам потрібно перетворити багато фізичних машин, які завантажуються із використанням PXE.
Точне місце того, де слід вказувати аргументи командного рядка, залежить від вашої реалізації PXE, але для pxelinux вам слід вказати їх у полі "APPEND" файла pxelinux.cfg. Приклад:
DEFAULT p2v TIMEOUT 20 PROMPT 0 LABEL p2v KERNEL vmlinuz0 APPEND initrd=initrd0.img [....] p2v.server=conv.example.com p2v.password=secret p2v.o=libvirt
Вам слід встановити деякі або усі такі аргументи командного рядка:
Ці дані є завжди обов'язковими, якщо ви використовуєте спосіб із налаштовуванням ядра. Якщо virt-p2v не знайде цих даних у командному рядку ядра, програма автоматично перемкнеться на спосіб налаштовування за допомогою графічного інтерфейсу (інтерактивний спосіб).
Типовою поведінкою буде спроба встановлення зв'язку без пароля. Якщо зв'язок встановити не вдасться, virt-p2v попросить користувача ввести пароль (ймовірно, декілька разів протягом перетворення).
This setting is ignored if "p2v.auth.identity.url" is present.
If "p2v.auth.identity.url" is present, it overrides "p2v.auth.password". There is no fallback.
Типово, буде використано той самий об'єм оперативної пам'яті, який є у фізичної машини.
p2v.disks=sda,sdc
Типово, буде перетворено усі знайдені локальні жорсткі диски.
Вам слід вказати список пар "інтерфейс:призначення", відокремлених комами, і, необов'язково, типове призначення. Приклади:
p2v.network=em1:ovirtmgmt
пов'язує інтерфейс "em1" із мережею призначення "ovirtmgmt".
p2v.network=em1:ovirtmgmt,em2:management,other
пов'язує інтерфейс "em1" із "ovirtmgmt", а інтерфейс "em2" із "management"; усі інші знайдені інтерфейси буде пов'язано із "other".
Якщо не вказано, типовим значенням є "local", а перетворені гостьові системи буде записано до /var/tmp.
Якщо не вказано, типово буде використано /var/tmp (на сервері перетворення).
Якщо virt-p2v запущено від імені користувача root, і командний рядок було встановлено з /proc/cmdline (не з --cmdline), типовою поведінкою буде запуск програми poweroff(8). У всіх інших випадках ніякої додаткової команди не виконуватиметься.
Як дещо безпечнішу альтернативу розпізнаванню за допомогою пароля, ви можете використати для розпізнавання профіль SSH (закритий ключ).
Спочатку створіть пару ключів. Пароль до пари ключів має бути порожнім:
ssh-keygen -t rsa -N '' -f id_rsa
Буде створено пару з закритого ключа ("id_rsa") та відкритого ключа ("id_rsa.pub").
Відкритий ключ слід дописати до файла "authorized_keys" на сервері перетворення virt-v2v (зазвичай, до файла "/root/.ssh/authorized_keys").
Для поширення закритого ключа можна скористатися одним з таких чотирьох сценаріїв (від менш безпечного до більш безпечного):
Будь-хто з тих, хто має доступ до параметрів завантаження PXE з мережі або може побачити пароль у якийсь інший спосіб, може увійти до сервера перетворення virt-v2v.
│ Пароль: [ <не заповнюйте> ] │ │ │ │ Адреса профілю SSH: [file:///var/tmp/id_rsa____________] │
або командним рядком ядра:
p2v.identity=file:///var/tmp/id_rsa
Закритий ключ SSH може бути отримано перехопленням пакетів у мережі, якщо використовується стандартний PXE.
│ Пароль: [ <не заповнюйте> ] │ │ │ │ Адреса профілю SSH: [https://internal.example.com/id_rsa] │
або командним рядком ядра:
p2v.identity=https://internal.example.com/id_rsa
Знову ж таки, будь-хто може отримати закритий ключ і скористатися ним для входу до сервера перетворення virt-v2v, але ви можете подбати про надійніший захист, налаштувавши сервер так, щоб він встановлював з'єднання лише з машинами P2V.
Зауважте, що ssh-keygen(1) створює файл "id_rsa" (закритий ключ) із режимом доступу 0600. Якщо ви просто скопіюєте цей файл на сервер, сервер не зможе його обслуговувати. Він повідомлятиме про помилки «403 Forbidden». Вам слід змінити режим доступу до файла, щоб зробити його загальнодоступним для читання, наприклад, скориставшись такою командою:
chmod 0644 id_rsa
У обох скриптах, virt-p2v-make-disk(1) і virt-p2v-make-kickstart(1), передбачено той самий параметр --inject-ssh-identity для вставляння закритого ключа до образу диска або образу ISO virt-p2v. Ознайомтеся із такими розділами підручника:
"ДОДАВАННЯ ПРОФІЛЮ SSH" in virt-p2v-make-disk(1)
"ДОДАВАННЯ ПРОФІЛЮ SSH" in virt-p2v-make-kickstart(1)
Як це описано нижче (див. "ЯК ПРАЦЮЄ VIRT-P2V"), virt-p2v створює декілька довготривалих з'єднань ssh із сервером перетворення. Якщо час очікування на з'єднання у цих з'єднаннях буде перевищено, virt-p2v не зможе продовжувати роботу.
Щоб перевірити, чи не спричиняє час очікування (тайм-аут) проблеми, відкрийте термінал XTerm на машині з virt-p2v, відайте команду "ssh root@сервер перетворення" і почекайте на результати протягом принаймні години. Якщо з'єднання буде розірвано без вашого втручання, працює якийсь із інструментів контролю часу очікування, і ви маєте його вимкнути.
Причиною перевищення часу очікування може бути:
virt-p2v ≥ 1.36 намагається обійти проблеми із надто короткими значеннями часу очікування у брандмауері, надсилаючи повідомлення підтримання зв'язку кожні 5 хвилин.
Варіанти "*-no-sa" надають змогу virt-p2v повернутися до старіших версій qemu-nbd і nbdkit, у яких не передбачено підтримки активації за допомогою сокета.
Зауважте, що цей розділ не є нормативним. Ми можемо змінити принципи роботи virt-p2v будь-коли у майбутніх версіях.
Як описано вище, virt-p2v працює на фізичній машині, опитує користувача або обробляє командний рядок ядра для отримання параметрів налаштування, а потім встановлює одне або декілька з'єднань із сервером перетворення virt-v2v. З'єднання ssh є інтерактивними сеансами командної оболонки із віддаленим вузлом, але команди, які надсилаються, створюються лише самою програмою virt-p2v, а не користувачем. Для передавання даних virt-p2v використовуватиме можливість ssh зі зворотного переспрямовування даних портів (тобто "ssh -R").
Спочатку програма створить одне або декілька тестових з'єднань, які використовуватимуться для отримання даних щодо віддаленої версії virt-v2v та її можливостей. Тестові з'єднання буде розірвано до того, як буде розпочато перетворення.
┌──────────────┐ ┌─────────────────┐ │ virt-p2v │ │ virt-v2v │ │ (фізичний │ керівне з’єднання │ (сервер │ │ сервер) ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶ перетворення) │ └──────────────┘ └─────────────────┘
Щойно virt-p2v буде готовим розпочати перетворення, програма відкриє одинарне керівне з'єднання ssh. Спочатку вона надішле команду mkdir для створення тимчасового каталогу на сервері перетворення. Назву каталогу буде вибрано випадковим чином і показано за допомогою графічного інтерфейсу. Формат назви буде таким:
/tmp/virt-p2v-РРРРММДД-XXXXXXXX
де "РРРРММДД" — поточна дата, а «X» — випадкові символи.
До цього каталогу буде записано різноманітні файли, серед яких:
Виведені дані відповідних команд (тобто dmesg(1), lscpu(1) тощо) на фізичній машині.
Виведені dmesg дані корисні для виявлення проблем, зокрема нестачі драйверів пристроїв або мікропрограм на образі ISO virt-p2v. Дані інших програм корисні для діагностування проблем із новітніми конфігураціями обладнання.
Вміст середовища, у якому буде працювати virt-v2v(1).
Назва (зазвичай, назва вузла) фізичної машини.
XML libvirt, який описує фізичну машину. Використовується для передавання даних щодо фізичної початкової основної системи до virt-v2v(1) за допомогою параметра -i libvirtxml.
Зауважте, що це не «справжній» XML libvirt (його ніколи не слід завантажувати до libvirt, яка все одно його не сприйме). Крім того, він не збігається із XML libvirt, який створює virt-v2v у певних режимах виведення.
Версії virt-p2v і virt-v2v, відповідно.
Остаточний стан перетворення. 0, якщо перетворення виконано успішно. Ненульове значення, якщо під час перетворення сталися помилки.
Дата і час початку перетворення.
Журнал перетворення. Це усього лише виведені програмою virt-v2v дані на сервері перетворення. Якщо спроба перетворення зазнає невдачі, вам слід ознайомитися із цим журналом. Крім того, вас можуть попросити надати повний, нередагований файл журналу у системі звітування щодо вад або у системі квитків підтримки.
Це скрипт-обгортка, який використовується для запуску virt-v2v. Лише для зацікавлених — не намагайтеся запускати цей скрипт власноруч.
Перш ніж розпочнеться саме перетворення, virt-p2v створить іще одне або декілька додаткових з'єднань ssh зі сервером для передавання даних.
У поточній версії протоколом для передавання даних є NBD (Network Block Device), дані пропускаються крізь ssh. Типовим сервером NBD є qemu-nbd(1), але можна вибрати інші сервери за допомогою параметра командного рядка --nbd.
Для кожного фізичного диска на початковій машині буде створено одне з'єднання ssh (поширений випадок, коли диск є єдиним, продемонстровано нижче):
┌──────────────┐ ┌─────────────────┐ │ virt-p2v │ │ virt-v2v │ │ (фізичний │ керівне з’єднання │ (сервер │ │ сервер) ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶ перетворення) │ │ │ │ │ │ │ з'єднання для даних │ │ │ ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍▶ │ │qemu-nbd ← ─┘ │ │└─ ← запити │ │/dev/sda │ │ NBD │ ∼ ∼ ∼ ∼ └──────────────┘ └─────────────────┘
Хоча з'єднання для передавання даних за допомогою ssh починається з фізичного сервера і завершується на сервері перетворення, фактично, потік запитів NBD рухається у протилежному напрямку. Так відбувається через те, що для відкриття порту на петльовому інтерфейсі сервера перетворення використовується можливість зворотного переспрямовування портів ssh ("ssh -R"). Дані пропускаються назад каналом ssh на сервер NBD, який запущено на фізичний машині. У результаті virt-v2v за допомогою libguestfs може відкривати з'єднання nbd, які безпосередньо читають дані з жорстких дисків фізичного сервера.
Для захисту жорстких дисків від запису використовується два шари. По-перше, використовується параметр qemu-nbd -r (лише читання). По-друге, libguestfs створює накладку над з'єднанням NBD, яка зберігає записані дані у тимчасовому файлі для файла перетворення.
Довга команда "virt-v2v -i libvirtxml physical.xml ..." загортається у скрипт і вивантажується на сервер перетворення. Кінцевим кроком є запуск цього скрипту-обгортки, який запустить програму virt-v2v. Програма virt-v2v використає дані з файла physical.xml (див. вище), який посилається на порти очікування даних NBD для встановлення з'єднань для обміну даними.
Дані, виведені програмою virt-v2v (повідомлення, діагностика тощо) зберігаються у файлі журналу на сервері перетворення. Лише інформаційні повідомлення надсилаються назад керівним з'єднанням для показу у графічному інтерфейсі.
virt-p2v-make-disk(1), virt-p2v-make-kickstart(1), virt-p2v-make-kiwi(1), virt-v2v(1), qemu-nbd(1), nbdkit(1), nbdkit-file-plugin(1), ssh(1), sshd(8), sshd_config(5), http://libguestfs.org/.
Matthew Booth
John Eckersberg
Richard W.M. Jones http://people.redhat.com/~rjones/
Mike Latimer
Pino Toscano
Tingting Zheng
Copyright (C) 2009-2019 Red Hat Inc.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
When reporting a bug, please supply:
2019-02-07 | libguestfs-1.40.2 |