virt-v2v-input-vmware(1) | Virtualization Support | virt-v2v-input-vmware(1) |
virt-v2v-input-vmware - Using virt-v2v to convert guests from VMware
virt-v2v -i vmx GUEST.vmx [-o* options] virt-v2v -i vmx -it ssh 'ssh://root@esxi.example.com/vmfs/volumes/datastore1/guest/guest.vmx' [-o* options] virt-v2v -ic 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' -it vddk -io vddk-libdir=/path/to/vmware-vix-disklib-distrib -io vddk-thumbprint=xx:xx:xx:... "GUEST NAME" [-o* options] virt-v2v -i ova DISK.ova [-o* options] virt-v2v -ic 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' "GUEST NAME" [-o* options]
This page documents how to use virt-v2v(1) to convert guests from VMware. There are currently five different methods to access VMware:
If you either have a GUEST.vmx file and one or more GUEST.vmdk disk image files, or if you are able to NFS-mount the VMware storage, then you can use the -i vmx method to read the source guest.
This is similar to the method above, except it uses an SSH connection to ESXi to read the GUEST.vmx file and associated disks. This requires that you have enabled SSH access to the VMware ESXi hypervisor - in the default ESXi configuration this is turned off.
This method uses the proprietary VDDK library (a.k.a. VixDiskLib) to access the VMware vCenter server or VMware ESXi hypervisor.
If you have the proprietary library then this method is usually the fastest and most flexible. If you don't have or don't want to use non-free software then the VMX or SSH methods above will be best.
With this method you must first export the guest (eg. from vSphere) as an .ova file, which virt-v2v can then read directly. Note this method only works with files exported from VMware, not OVA files that come from other hypervisors or management systems, since OVA is only a pretend standard and is not compatible or interoperable between vendors.
If none of the above methods is available, then use this method to import a guest from VMware vCenter. This is the slowest method.
Virt-v2v також може імпортувати гостьові системи з файлів vmx VMware.
Це корисно у двох випадках:
Якщо вами виявлено теку або файли із назвами гостьова_система.vmx, гостьова_система.vmxf, гостьова_система.nvram і один або декілька образів дисків .vmdk, ви можете скористатися цим методом.
Для гостьових систем Windows вам слід вилучити засоби VMware до перетворення. Хоча ця вимога і не є обов'язковою, і гостьову систему із ними можна буде запустити, якщо ви цього не зробите, перетворена гостьова система скаржитиметься на помилку під час кожного завантаження. Засоби не можна вилучити після перетворення, оскільки засіб вилучення перевіряє, чи запущено його у VMware і відмовляється запускатися (це також є причиною того, що virt-v2v не може самостійно вилучити ці засоби).
Для гостьових систем Linux можна не вилучати засоби VMware, оскільки це може зробити сама програма virt-v2v.
Перш ніж буде розпочато перетворення, роботу гостьової системи слід зупинити. Якщо ви не вимкнете гостьову систему, результатом буде пошкоджений диск віртуальної машини у гіпервізорі призначення. За допомогою інших методів virt-v2v намагається запобігти конкурентному доступу до даних, але оскільки метод -i vmx працює безпосередньо зі сховищем даних, перевірка конкурентного доступу неможлива.
Якщо файли vmx і vmdk не доступні локально, вам слід або змонтувати сховище даних NFS на сервері перетворення або уможливити безпарольний доступ SSH на гіпервізорі ESXi.
VMX: SSH без пароля з використанням ssh-agent
Вам слід також скористатися ssh-agent і додати ваш відкритий ключ ssh до /etc/ssh/keys-root/authorized_keys (на гіпервізорі ESXi).
Після налаштовування вам слід перевірити працездатність безпарольного доступу з боку сервера virt-v2v на гіпервізорі ESXi. Приклад:
$ ssh root@esxi.example.com [ журналювання безпосередньо до оболонки, пароль не потрібен ]
Зауважте, що підтримки інтерактивного режиму введення пароля та доступу за допомогою Kerberos не передбачено. Вам доведеться налаштувати доступ ssh за допомогою ssh-agent і authorized_keys.
VMX: побудова адреси SSH
При використанні вхідного каналу передавання даних SSH вам слід вказати віддалену адресу "ssh://...", яка вказуватиме на файл VMX. Типова адреса виглядає так:
ssh://root@esxi.example.com/vmfs/volumes/datastore1/my%20guest/my%20guest.vmx
Усі пробіли слід замінити на комбінації %20. Інші символи, які не є частиною ASCII, також можуть потребувати заміни на відповідні шістнадцяткові комбінації.
Ім'я користувача можна не вказувати, якщо воно збігається із назвою вашого локального облікового запису користувача.
Крім того, ви можете вказати номер порту після назви вузла, якщо сервер SSH працює на нетиповому порту (не на порту 22).
Щоб імпортувати файл vmx з локального файла або NFS, віддайте таку команду:
$ virt-v2v -i vmx guest.vmx -o local -os /var/tmp
Щоб імпортувати файл vmx за допомогою SSH, додайте -it ssh, щоб вибрати канал передавання даних SSH і вказати віддалену адресу SSH:
$ virt-v2v \ -i vmx -it ssh \ "ssh://root@esxi.example.com/vmfs/volumes/datastore1/guest/guest.vmx" \ -o local -os /var/tmp
Virt-v2v обробляє файл vmx і використовує отримані дані для встановлення розташування усіх дисків vmdk.
Virt-v2v може імпортувати гостьові системи за допомогою пропрієтарної бібліотеки VDDK (або VixDiskLib) VMware.
Зберіть nbdkit, як це описано у початкових кодах програми (див. посилання вище).
Віддавати команду "make install" не потрібно, оскільки ви можете запустити nbdkit з каталогу з початковим кодом програми. У каталозі із початковим кодом є скрипт командної оболонки із назвою nbdkit, який запускає локально зібрану копію nbdkit та додатків. Отже, встановіть для змінної $PATH значення, у якому буде посилання на верхній рівень каталогу збирання nbdkit (тобто на каталог, у якому зберігається скрипт командної оболонки із назвою nbdkit). Приклад:
export PATH=/шлях/до/nbdkit-1.1.x:$PATH
In the verbose log you may see errors like:
nbdkit: vddk[3]: error: [NFC ERROR] NfcFssrvrProcessErrorMsg: received NFC error 5 from server: Failed to allocate the requested 2097176 bytes
This seems especially common when there are multiple parallel connections open to the VMware server.
These can be caused by resource limits set on the VMware server. You can increase the limit for the NFC service by editing /etc/vmware/hostd/config.xml and adjusting the "<maxMemory>" setting:
<nfcsvc> <path>libnfcsvc.so</path> <enabled>true</enabled> <maxMemory>50331648</maxMemory> <maxStreamMemory>10485760</maxStreamMemory> </nfcsvc>
and restarting the "hostd" service:
# /etc/init.d/hostd restart
For more information see https://bugzilla.redhat.com/1614276.
Побудуйте правильну адресу "vpx://" (для vCenter) або "esx://" (для ESXi). Вона виглядає якось так:
vpx://root@vcenter.example.com/Datacenter/esxi esx://root@esxi.example.com
Щоб перевірити, що у вас правильна адреса, скористайтеся командою virsh(1) для отримання списку гостьових систем на сервері vCenter, ось так:
$ virsh -c 'vpx://root@vcenter.example.com/Datacenter/esxi' list --all Введіть пароль root до vcenter.example.com: *** Id Name State ---------------------------------------------------- - Fedora 20 shut off - Windows 2003 shut off
Якщо ви отримуєте повідомлення про помилку «Сертифікат вузла не може бути уповноважено за допомогою вказаних сертифікатів CA» або подібне, ви можете або імпортувати сертифікат вузла vCenter, або обійти перевірку підписів додаванням прапорця "?no_verify=1":
$ virsh -c 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' list --all
Крім того, вам слід спробувати створити дамп метаданих з будь-якої гостьової системи на вашому сервері, ось так:
$ virsh -c 'vpx://root@vcenter.example.com/Datacenter/esxi' dumpxml "Windows 2003" <domain type='vmware'> <name>Windows 2003</name> [...] <vmware:moref>vm-123</vmware:moref> </domain>
Якщо у метаданих немає "<vmware:moref>", вам слід оновити libvirt.
Якщо наведені вище команди не дають бажаного результату, virt-v2v також не працюватиме. Перш ніж продовжувати, виправте вашу адресу і/або сервера vCenter VMware.
Параметр -it vddk визначає VDDK як вхідний канал передавання даних для дисків.
Щоб імпортувати певну гостьову систему з сервера vCenter або гіпервізору ESXi, скористайтеся командою, подібною до наведеної нижче, замінивши адресу, назву гостьової системи та відбиток SSL:
$ export PATH=/path/to/nbdkit-1.1.x:$PATH $ virt-v2v \ -ic 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' \ -it vddk \ -io vddk-libdir=/path/to/vmware-vix-disklib-distrib \ -io vddk-thumbprint=xx:xx:xx:... \ "Windows 2003" \ -o local -os /var/tmp
Other options that you might need to add in rare circumstances include -io vddk-config, -io vddk-cookie, -io vddk-nfchostport, -io vddk-port, -io vddk-snapshot, and -io vddk-transports, which are all explained in the nbdkit-vddk-plugin(1) documentation. Do not use these options unless you know what you are doing.
З бібліотекою VDDK можна працювати у режимі докладних повідомлень, у якому бібліотека (дуже) докладно повідомляє про свої дії. Скористайтеся командою «virt-v2v -v -x» у звичний спосіб, щоб увімкнути режим докладних повідомлень.
Virt-v2v може імпортувати гостьові системи з файлів OVA (Open Virtualization Appliance) VMware. Програма може працювати лише з файлами OVA, які експортовано з vSphere VMware.
Для гостьових систем Windows вам слід вилучити засоби VMware до перетворення. Хоча ця вимога і не є обов'язковою, і гостьову систему із ними можна буде запустити, якщо ви цього не зробите, перетворена гостьова система скаржитиметься на помилку під час кожного завантаження. Засоби не можна вилучити після перетворення, оскільки засіб вилучення перевіряє, чи запущено його у VMware і відмовляється запускатися (це також є причиною того, що virt-v2v не може самостійно вилучити ці засоби).
Для гостьових систем Linux можна не вилучати засоби VMware, оскільки це може зробити сама програма virt-v2v.
Щоб створити OVA у vSphere, скористайтеся параметром «Export OVF Template» (з контекстного меню віртуальної машини або з меню «File»). Можна вибрати варіант «Folder of files» (OVF) або «Single file» (OVA), втім, працювати з OVA, ймовірно простіше. Файли OVA є просто стиснутими файлами tar, тому ви можете користуватися командами, подібними до "tar tf VM.ova", для перегляду їхнього вмісту.
Створення OVA за допомогою ovftool
Ви також можете скористатися пропрієтарною програмою "ovftool" з VMware:
ovftool --noSSLVerify \ vi://КОРИСТУВАЧ:ПАРОЛЬ@esxi.example.com/VM \ VM.ova
Для встановлення з'єднання із vCenter:
ovftool --noSSLVerify \ vi://КОРИСТУВАЧ:ПАРОЛЬ@vcenter.example.com/НАЗВА-ДАТАЦЕНТРУ/vm/VM \ VM.ova
Для проходження розпізнавання Active Directory вам слід замінити символ "@" його шістнадцятковим кодом у ascii — (%5c):
vi://ДОМЕН%5cКОРИСТУВАЧ:ПАРОЛЬ@...
To import an OVA file called VM.ova, do:
$ virt-v2v -i ova VM.ova -o local -os /var/tmp
Якщо ви експортували гостьову систему як «Folder of files» (теку з файлами), або якщо ви розпакували власноруч архів tar OVA, ви можете вказати virt-v2v каталог, у якому містяться файли:
$ virt-v2v -i ova /шлях/до/файлів -o local -os /var/tmp
Virt-v2v може імпортувати гостьові системи з сервера vCenter VMware.
vCenter ≥ 5.0 is required. If you don’t have vCenter, using OVA or VMX is recommended instead (see "INPUT FROM VMWARE OVA" and/or "INPUT FROM VMWARE VMX").
Virt-v2v використовує для доступу до vCenter libvirt, тому режимом вхідних даних має бути -i libvirt. Оскільки цей режим є типовим, немає потреби вказувати його у рядку команди.
Для гостьових систем Windows вам слід вилучити засоби VMware до перетворення. Хоча ця вимога і не є обов'язковою, і гостьову систему із ними можна буде запустити, якщо ви цього не зробите, перетворена гостьова система скаржитиметься на помилку під час кожного завантаження. Засоби не можна вилучити після перетворення, оскільки засіб вилучення перевіряє, чи запущено його у VMware і відмовляється запускатися (це також є причиною того, що virt-v2v не може самостійно вилучити ці засоби).
Для гостьових систем Linux можна не вилучати засоби VMware, оскільки це може зробити сама програма virt-v2v.
Адреса libvirt сервера vCenter виглядає десь так:
vpx://користувач@сервер/Datacenter/esxi
де
Якщо ім'я користувача містить символ зворотної похилої риски (наприклад "DOMAIN\USER"), вам доведеться скористатися маскуванням символу у адресі за допомогою послідовності %5c: "DOMAIN%5cUSER" (5c — шістнадцятковий код ASCII символу зворотної похилої риски). Ймовірно, інші символи пунктуації також доведеться маскувати.
Якщо у назві міститься пробіл, замініть його екранованим кодом адрес, %20.
Якщо при розгортанні VMware використано підтеки, може виникнути потреба у додаванні їх до адреси. Приклад:
vpx://користувач@сервер/Тека/Датацентр/esxi
Повний опис адрес libvirt наведено тут: http://libvirt.org/drvesx.html
Типовими помилками, про які повідомляє libvirt / virsh, якщо адреса є помилковою, є такі:
Скористайтеся командою virsh(1) для отримання списку гостьових систем на сервері vCenter, ось так:
$ virsh -c 'vpx://root@vcenter.example.com/Datacenter/esxi' list --all Введіть пароль root до vcenter.example.com: *** Id Name State ---------------------------------------------------- - Fedora 20 shut off - Windows 2003 shut off
Якщо ви отримуєте повідомлення про помилку «Сертифікат вузла не може бути уповноважено за допомогою вказаних сертифікатів CA» або подібне, ви можете або імпортувати сертифікат вузла vCenter, або обійти перевірку підписів додаванням прапорця "?no_verify=1":
$ virsh -c 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' list --all
Крім того, вам слід спробувати створити дамп метаданих з будь-якої гостьової системи на вашому сервері, ось так:
$ virsh -c 'vpx://root@vcenter.example.com/Datacenter/esxi' dumpxml "Windows 2003" <domain type='vmware'> <name>Windows 2003</name> [...] </domain>
Якщо наведені вище команди не дають бажаного результату, virt-v2v також не працюватиме. Перш ніж продовжувати, виправте ваші налаштування libvirt і/або сервера vCenter VMware.
Щоб імпортувати певну гостьову систему з сервера vCenter, віддайте таку команду:
$ virt-v2v -ic 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' \ "Windows 2003" \ -o local -os /var/tmp
де "Windows 2003" — назва гостьової системи (яку має бути вимкнено).
Note that you may be asked for the vCenter password twice. This happens once because libvirt needs it, and a second time because virt-v2v itself connects directly to the server. Use -ip filename to supply a password via a file.
У цьому випадку прапорці виведення встановлено так, щоб перетворена гостьова система записувалася до тимчасового каталогу, оскільки це лише приклад, але ви також можете записати перетворену систему до libvirt або будь-якого іншого підтримуваного призначення.
Instead of using the vCenter Administrator role, you can create a custom non-administrator role to perform the conversion. You will however need to give it a minimum set of permissions as follows (using VMware vCenter 6.5):
Datastore: - Browse datastore - Low level file operations Sessions: - Validate session Virtual Machine: Interaction: - Guest operating system management by VIX API Provisioning: - Allow disk access - Allow read-only disk access
vCenter: Порти
Якщо між сервером перетворення virt-v2v і сервером vCenter працює брандмауер, вам потрібно відкрити у ньому порт 443 (https) і порт 5480.
Порт 443 використовується для копіювання образів дисків гостьової системи. Порт 5480 використовується для опитування vCenter щодо метаданих гостьової системи.
These port numbers are only the defaults. It is possible to reconfigure vCenter to use other port numbers. In that case you would need to specify those ports in the "vpx://" URI. See "vCenter: URI" above.
Ці порти стосуються лише перетворень virt-v2v. Ви можете відкрити інші порти для користування іншими можливостями vCenter, наприклад для інтернет-інтерфейсу користувача. Відповідні номери для vCenter наведено у інтернет-документації до VMware.
┌────────────┐ порт 443 ┌────────────┐ ┌────────────┐ │ сервер │────────────▶ сервер │────────▶ гіпервізор │ │перетворення│────────────▶ vCenter │ │ ESXi │ │ virt-v2v │ порт 5480 │ │ │ ┌─────┐ │ └────────────┘ └────────────┘ │ │гість│ │ └───┴─────┴──┘
(На наведеній вище діаграмі стрілки показують напрям, у якому ініціюється з'єднання TCP, не обов'язково напрям передавання даних.)
Сама програма virt-v2v не з'єднується безпосередньо із гіпервізором ESXi, де міститься гостьова система. Втім, з гіпервізором з'єднується vCenter і переспрямовує дані, тому, якщо між vCenter і його гіпервізорами працює брандмауер (мережевий екран), ймовірно, вам слід відкрити у ньому додаткові порти (визначити їхні номери вам допоможе документація щодо VMware).
Під час перетворень з vCenter пов'язані із проксі-сервером змінні середовища ("https_proxy", "all_proxy", "no_proxy", "HTTPS_PROXY", "ALL_PROXY" і "NO_PROXY") буде проігноровано.
Ви можете побачити таке повідомлення про помилку:
CURL: Error opening file: SSL: no alternative certificate subject name matches target host name
(Щоб побачити це повідомлення, вам слід увімкнути діагностичні повідомлення за допомогою команди «virt-v2v -v -x».)
Причиною може бути використання IP-адреси замість повноцінної назви у домені DNS для сервера vCenter, тобто використання "vpx://vcenter.example.com/..." замість, скажімо, "vpx://11.22.33.44/..."
Ще однією причиною проблем із сертифікатами може бути те, що FQDN сервера vCenter не відповідає IP-адресі, наприклад, якщо сервер отримав нову IP-адресу з DHCP. Щоб усунути цю проблему, вам слід змінити налаштування вашого сервера DHCP або мережі так, щоб сервер vCenter завжди отримував незмінну IP-адресу. Після цього, увійдіть до консолі адміністрування сервера vCenter за адресою "https://vcenter:5480/". На вкладці "Admin" позначте пункт "Certificate regeneration enabled" і перезавантажте сервер.
Richard W.M. Jones
Copyright (C) 2009-2019 Red Hat Inc.
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 |