Проблема
Иногда бывают моменты, когда нет возможности использовать 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 и работаем.
Discussion