virt-v2v-input-vmware(1) | Virtualization Support | virt-v2v-input-vmware(1) |
virt-v2v-input-vmware — використання virt-v2v для перетворення гостьових систем з VMware
virt-v2v -i vmx ГОСТЬОВА_СИСТЕМА.vmx [-o* параметри] virt-v2v -i vmx -it ssh -ip файл_пароля 'ssh://root@esxi.example.com/vmfs/volumes/datastore1/guest/guest.vmx' [-o* параметри] 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:... "НАЗВА ГОСТЬОВОЇ СИСТЕМИ" [-o* параметри] virt-v2v -i ova ДИСК.ova [-o* параметри] virt-v2v -ic 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' -ip passwordfile "GUEST NAME" [-o* options]
На цій сторінці наведено документацію щодо використання virt-v2v(1) для перетворення гостьових систем, які походять з VMware. Загалом, на сьогодні існує п'ять різних методів доступу до даних гостьових систем VMware:
Якщо у вас є файл GUEST.vmx і один або декілька файлів образів дисків GUEST.vmdk або якщо ви можете монтувати за допомогою NFS сховище даних VMware, ви можете скористатися методом -i vmx для читання даних початкової гостьової системи.
Те саме, що і описаний вище метод, але використовується з'єднання SSH із ESXi для читання файла GUEST.vmx і пов'язаних із ним дисків. Це потребує вмикання доступу за допомогою SSH до гіпервізора ESXi VMware — за типових налаштувань цей доступ вимкнено.
This transport is incompatible with guests that have snapshots; refer to "NOTES".
У цьому методі для доступу до сервера vCenter VMware або гіпервізора ESXi VMware використовується закрита бібліотека VDDK (або VixDiskLib).
Якщо у вас є ця бібліотека із закритим кодом, цей метод, зазвичай, є найшвидшим і найгнучкішим. Якщо у вас немає доступу до цього закритого програмного забезпечення або ви не хочете ним користуватися, найліпші результати можна отримати за допомогою описаних вище методів із VMX або SSH.
Використовуючи цей метод, ви маєте спочатку експортувати гостьову систему (наприклад з vSphere) у форматі файла .ova, який virt-v2v потім зможе прочитати безпосередньо. Зауважте, що цей метод працює лише з файлами, які експортовано з VMware, а не файлами OVA, які походять із інших гіпервізорів або систем керування, оскільки OVA лише приблизно дотримується стандартів і не є сумісним і придатним до безпроблемного використання на продуктах інших виробників програмного забезпечення.
Якщо ви не можете скористатися жодним із описаних вище методів, скористайтеся цим методом для імпортування гостьової системи із vCenter VMware. Це найповільніший метод.
When accessing the guest.vmx file on ESXi over an SSH connection (that is, when using the -i vmx -it ssh options), the conversion will not work if the guest has snapshots (files called guest-000001.vmdk and similar). Either collapse the snapshots for the guest and retry the conversion with the same -i vmx -it ssh options, or leave the snapshots intact and use a transport different from SSH: just -i vmx, or -ic vpx://... -it vddk or -ic esx://... -it vddk. Refer to https://bugzilla.redhat.com/1774386.
Virt-v2v також може імпортувати гостьові системи з файлів vmx VMware.
Це корисно у двох випадках:
If you find a folder of files called guest.vmx, guest.vmxf, guest.nvram and one or more .vmdk disk images, then you can use this method. The SSH transport is not usable if the guest has snapshots; refer to "NOTES".
Перш ніж буде розпочато перетворення, роботу гостьової системи слід зупинити. Якщо ви не вимкнете гостьову систему, результатом буде пошкоджений диск віртуальної машини у гіпервізорі призначення. За допомогою інших методів virt-v2v намагається запобігти конкурентному доступу до даних, але оскільки метод -i vmx працює безпосередньо зі сховищем даних, перевірка конкурентного доступу неможлива.
Якщо файли vmx і vmdk не доступні локально, вам слід або змонтувати сховище даних NFS на сервері перетворення або уможливити безпарольний доступ SSH на гіпервізорі ESXi.
VMX: Розпізнавання за допомогою SSH
Ви можете скористатися розпізнаванням за допомогою SSH за паролем, вказавши назву файла, який містить пароль, як аргумент параметра -ip (зауважте, що цей параметр не приймає пароль безпосередньо). Вам слід скоригувати /etc/ssh/sshd_config на сервері VMware, встановивши "PasswordAuthentication yes".
Якщо ви не використовуєте розпізнавання за паролем, альтернативою є використання ssh-agent і додавання вашого відкритого ключа ssh до /etc/ssh/keys-root/authorized_keys (у гіпервізорі ESXi). Після виконання цих дій вам слід перевірити, чи працює доступ без пароля з сервера virt-v2v до гіпервізора ESXi. Приклад:
$ ssh root@esxi.example.com [ журналювання безпосередньо до оболонки, пароль не потрібен ]
Note that support for non-interactive authentication via the -ip option is incomplete. Some operations remain that still require the user to enter the password manually. Therefore ssh-agent is recommended over the -ip option. See https://bugzilla.redhat.com/1854275.
VMX: побудова адреси SSH
При використанні вхідного каналу передавання даних SSH вам слід вказати віддалену адресу "ssh://...", яка вказуватиме на файл VMX. Типова адреса виглядає так:
ssh://root@esxi.example.com/vmfs/volumes/datastore1/my%20guest/my%20guest.vmx
Ім'я користувача можна не вказувати, якщо воно збігається із назвою вашого локального облікового запису користувача.
Крім того, ви можете вказати номер порту після назви вузла, якщо сервер SSH працює на нетиповому порту (не на порту 22).
For determining the pathname component of the URI, log in to the ESXi server via SSH interactively, and identify the absolute pathname of the VMX file on the ESXi server, such as:
/vmfs/volumes/datastore1/my guest/my guest.vmx
Subsequently, on the virt-v2v command line, percent-encode any reserved characters that you find in the individual pathname components. For example, space characters must be specified as %20:
/vmfs/volumes/datastore1/my%20guest/my%20guest.vmx
Refer to https://bugzilla.redhat.com/1938954.
Щоб імпортувати файл 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: vddk[3]: error: [NFC ERROR] NfcFssrvrProcessErrorMsg: received NFC error 5 from server: Failed to allocate the requested 2097176 bytes
Така ситуація є типовою, якщо із сервером VMware відкрито декілька паралельних з'єднань.
Такі з'єднання можуть призвести до перевищення обмежень на використання ресурсів, встановлених на сервері VMware. Ви можете зменшити строгість обмежень для служби NFC редагуванням файла /etc/vmware/hostd/config.xml, змінивши у ньому значення параметра "<maxMemory>":
<nfcsvc> <path>libnfcsvc.so</path> <enabled>true</enabled> <maxMemory>50331648</maxMemory> <maxStreamMemory>10485760</maxStreamMemory> </nfcsvc>
із наступним перезапуском служби "hostd":
# /etc/init.d/hostd restart
Докладніший опис можна знайти тут: https://bugzilla.redhat.com/1614276.
If you see an error similar to:
nbdkit: vddk[2]: error: VixDiskLibVim: Failed to open disk using NFC. VixError 1 at 1166.
then it is caused by a bug in VDDK ≤ 6.7. The suggested solution it to upgrade to the latest VDDK. See also https://bugzilla.redhat.com/1684075
Побудуйте правильну адресу "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:
$ 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
Серед інших параметрів, які можуть знадобитися вам у рідкісних випадках, -io vddk-config, -io vddk-cookie, -io vddk-nfchostport, -io vddk-port, -io vddk-snapshot та -io vddk-transports. Опис усіх цих параметрів можна знайти у документації до nbdkit-vddk-plugin(1). Не використовуйте ці параметри, якщо не впевнені у результатах їхнього застосування.
З бібліотекою VDDK можна працювати у режимі докладних повідомлень, у якому бібліотека (дуже) докладно повідомляє про свої дії. Скористайтеся командою «virt-v2v -v -x» у звичний спосіб, щоб увімкнути режим докладних повідомлень.
If imports over VDDK are slow, and ‘virt-v2v -v -x’ shows many "NBD_ClientOpen" messages, then you are hitting an apparent bug in VDDK 6.7 (https://bugzilla.redhat.com/1901489). Upgrade to at least VDDK 7 to resolve the issue.
Virt-v2v може імпортувати гостьові системи з файлів OVA (Open Virtualization Appliance) VMware. Програма може працювати лише з файлами OVA, які експортовано з vSphere VMware.
Щоб створити 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КОРИСТУВАЧ:ПАРОЛЬ@...
Щоб імпортувати файл OVA із назвою VM.ova, віддайте таку команду:
$ 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
oVirt/RHV provides a graphical user interface for importing from OVA files which uses this method. It requires that RHV is able to access the OVA file which can be a problem if the file is owned by root (RHV runs as a non-root user).
The suggested workaround is to copy the OVA to a public directory such as /var/tmp before doing the import and perhaps change the user and group ownership of the file.
For more information see these links:
Virt-v2v може імпортувати гостьові системи з сервера vCenter VMware.
Потрібен vCenter ≥ 5.0. Якщо vCenter не встановлено, рекомендуємо користуватися OVA або VMX (див. "ВХІДНІ ДАНІ З OVA VMWARE" і/або "ВХІДНІ ДАНІ З VMX VMWARE").
Virt-v2v використовує для доступу до vCenter libvirt, тому режимом вхідних даних має бути -i libvirt. Оскільки цей режим є типовим, немає потреби вказувати його у рядку команди.
Адреса libvirt сервера vCenter виглядає десь так:
vpx://користувач@сервер/Datacenter/esxi
де
Якщо ім'я користувача містить символ зворотної похилої риски (наприклад "DOMAIN\USER"), вам доведеться скористатися маскуванням символу у адресі за допомогою послідовності %5c: "DOMAIN%5cUSER" (5c — шістнадцятковий код ASCII символу зворотної похилої риски). Ймовірно, інші символи пунктуації також доведеться маскувати.
The user's password must be supplied in a local file using the separate -ip parameter.
Якщо у назві міститься пробіл, замініть його екранованим кодом адрес, %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.
The vCenter password (usually for the root account, or the account specified by "user@" in the vpx URL) has to be written to a local file, and the name of that file specified on the virt-v2v command line using -ip passwordfile.
Щоб імпортувати певну гостьову систему з сервера vCenter, віддайте таку команду:
$ virt-v2v -ic 'vpx://root@vcenter.example.com/Datacenter/esxi?no_verify=1' \ -ip passwordfile \ "Windows 2003" \ -o local -os /var/tmp
де "Windows 2003" — назва гостьової системи (яку має бути вимкнено).
У цьому випадку прапорці виведення встановлено так, щоб перетворена гостьова система записувалася до тимчасового каталогу, оскільки це лише приклад, але ви також можете записати перетворену систему до libvirt або будь-якого іншого підтримуваного призначення.
Instead of using the vCenter Administrator role, you can create a custom non-administrator role to perform the conversion. You will however need enable the following permissions (or as many as are available, older versions of VMware were missing some of these settings):
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 - Allow virtual machine download Cryptographic operations: - Decrypt - Direct Access
vCenter: Порти
Якщо між сервером перетворення virt-v2v і сервером vCenter працює брандмауер, вам потрібно відкрити у ньому порт 443 (https) і порт 5480.
Порт 443 використовується для копіювання образів дисків гостьової системи. Порт 5480 використовується для опитування vCenter щодо метаданих гостьової системи.
Це лише типові номери портів. Ви можете змінити налаштування vCenter так, щоб використовувалися порти із іншими номерами. У цьому випадку вам слід вказати ці порти у адресі "vpx://". Див. "vCenter: АДРЕСА" вище.
Ці порти стосуються лише перетворень 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" і перезавантажте сервер.
VMware vCenter appears to limit HTTP sessions and in some circumstances virt-v2v may exceed this number. You can adjust or remove the limit by editing /etc/vmware-vpx/vpxd.cfg on the vCenter server. Increase the "<maxSessionCount>" field, or set it to 0 which makes it unlimited:
<soap> <maxSessionCount>0</maxSessionCount> </soap>
Richard W.M. Jones
© Red Hat Inc., 2009–2020
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:
2023-01-10 | virt-v2v-2.2.0 |