Table of Contents

Проблема

Иногда бывают моменты, когда нет возможности использовать XenCenter. Например - хост XenServer находится в локальной сети за роутером с NAT и мы используем port forwarding для доступа к нему. Пробросив порты 22, 443 и диапазон портов 5900 - 5999 мы увидим, что хотя XenCenter подключается, но ни импортировать образы .xva, ни получить доступ к консоли невозможно. Это происходит потому, что при импорте и доступе к консоли XenCenter подключается не к IP-адресу, указанному при подключении к XenServer, а к IP-адресу Management Interface, а он принадлежит локальной сети, поэтому из интернета недоступен.

Импорт виртуальных машин

Импорт виртуальных машин можно выполнять с помощью dd и ssh:

dd if=/ПУТЬ_К_ОБРАЗУ_xva/filename.xva | ssh root@target_XenServer_host dd of=/ПУТЬ_К_ФАЙЛУ_НА_XENSERVER/filename.xva

либо более культурно - с помощью scp.

scp /ПУТЬ_К_ОБРАЗУ_xva/filename.xva root@target_XenServer_host:/ПУТЬ_К_ФАЙЛУ_НА_XENSERVER/filename.xva

После того, как файл скопируется нужно импортировать его на хосте XenServer командой:

xe vm-import filename=filename.xva

а затем - создать новую виртуальную машину либо с помощью XenCenter, либо командой CLI и подключить к ней импортированный диск.

Доступ к консоли по VNC

Для того чтобы получить доступ к консоли по VNC нужно определить номер порта, на котором запущена консоль нужной виртуалки.
Выполняем:

xe vm-list

uuid ( RO)           : b9e93c13-d294-08d7-31aa-e56ad6e6bfbb
name-label ( RW): Windows2008R2Server_Ent
power-state ( RO): running

Отсюда берем uuid и определяем dom в котром работает эта машина:

xe vm-param-list uuid=b9e93c13-d294-08d7-31aa-e56ad6e6bfbb | grep dom-id
dom-id ( RO): 5

И затем определяем порт, на котором висит консоль этой машины:

xenstore-read /local/domain/5/console/vnc-port
5903

Для доступа к консоли я использовал ubuntu. В ней я установил vncviewer:

apt-get update && apt-get install vncviewer

И подключался так:

vncviewer -via root@IP_XenServer localhost:PORT

Тут IP_XenServer - адрес хоста или роутера, на котором настроен port forwarding на XenServer, а PORT - это последние две цифры номера порта. То есть если команда xenstore-read выдала номер 5903, то вместо PORT указываем 03.
Вводим пароль от root и работаем.