Документация VMmanager 5 KVM

Часто возникающие проблемы

В статье приведены решения наиболее часто возникающих проблем, связанных с работой VMmanager KVM.

Проблемы с панелью управления

Обновление ПО кластера VMmanager KVM до VMmanager Cloud

Такое обновление не поддерживается.

VMmanager зависает и тормозит, в логе фигурирует ошибка "too many connections"

Наиболее частой причиной такой проблемы является зависание libvirt. Проверьте, что libvirt отвечает, попробуйте его перезапустить.

Какие процессы важны для VMmanager? Что можно отслеживать?

Важен процесс ihttpd. Также на серверах должен быть запущен libvirt.

Какие единицы измерения используются в панели управления?

В панели управления используются KiB и MiB:

  • KiB (кибибайт) — 2 в степени 10 = 1024;
  • MiB (мебибайт) — 2 в степени 20 = 1048576.

Что отлично от привычных KB и MB:

  • MB (мегабайт) — 10 в степени 6 = 1000000;
  • KB (килобайт) — 10 в степени 3 = 1000.

Формирование виртуальной машины:

  • если требуется создать виртуальную машину c 2GB оперативной памяти, то в форме редактирования необходимо указать 1907MiB (точное значение 2GB = 1907,35MiB);
  • если требуется создать диск виртуальной машины размером 15GB, то в панели необходимо указать 14305Mib;
  • обратите внимание на калькулятор величин от Google.

Проблемы с узлами кластера

После добавления виртуальной машины один из узлов кластера становится недоступен, а при попытке подключения к нему по SSH происходит подключение к виртуальной машине

При выдаче IP-адресов виртуальным машинам из той же подсети, в которой выделены IP-адреса для узлов кластера, возможна выдача IP-адреса, присвоенного узлу кластера. Вследствие этого узел будет недоступен. Для избежания данной проблемы зарезервируйте адреса узлов кластера в локальной базе IP-адресов или в IPmanager, если настроена интеграция.

Для освобождения занятого адреса виртуальной машиной выделите для неё новый IP-адрес. Перейдите в Управление → Виртуальные машины → IP-адреса. Создайте новый IP-адрес и удалите адрес, который пересекается с адресом узла кластера. Для использования виртуальной машиной нового IP-адреса измените настройки сетевого интерфейса и перезапустите сеть командой:


systemctl restart network

Ошибка при добавлении узла кластера: "Ошибка установки пакетов 'vmmanager-kvm-pkg-vmnode' на удалённом сервере. Дополнительная информация доступна в журнале панели управления"

Причина: пакет libguestfs устанавливается только в интерактивном режиме.

Решение: установите пакет vmmanager-kvm-pkg-vmnode из консоли.

Не добавляется узел с операционной системой CentOS

Возможная проблема — не устанавливаются необходимые пакеты. Причина — отсутствие подключённого репозитория epel. Возможная причина — неверная дата на сервере — репозиторий не находится. Проверьте и исправьте при необходимости время и дату и повторите попытку.

Не добавляется узел. Ошибка: "Невозможно применить правила брандмауэра: ошибка в синтаксисе iptables"

В логах vmmgr.log при этом видно ошибку запуска скрипта /etc/libvirt/hooks/firewall.sh:


# /etc/libvirt/hooks/firewall.sh
# Generated by VMmanager KVM on Сбт Апр 18 21:31:18 CEST 2015 *filter
# ISPsystem firewall rules
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-F INPUT
-F FORWARD

COMMIT --------------------------------
ip6tables-restore v1.4.7: ip6tables-restore: unable to initialize table 'filter'

Error occurred at line: 2
Try 'ip6tables-restore -h' or 'ip6tables-restore --help' for more information.


Для решения проблемы закомментируйте строки в конфигурационном файле /etc/modprobe.d/ipv6.conf и перезапустите модуль ipv6.

Утилиты управления кластером

Выполнение команды на всех узлах кластера:

/usr/local/mgr5/sbin/nodectl --op exec --target all --cmd 'echo "Hello, world!"'

Переход по SSH на узел кластера:

/usr/local/mgr5/sbin/nodectl login <id узла кластера>

Просмотр списка узлов кластера:

/usr/local/mgr5/sbin/nodectl list

Проблемы с хранилищами

Проблемы с LVM-хранилищем

Невозможно создать хранилище с типом LVM. При попытке добавить новый узел в кластер иногда возникает ошибка "unsupported configuration: cannot find any matching source devices for logical volume group"

Убедитесь, что команды LVM подтверждают существование физических томов, которые планируется добавить. Попробуйте удалить хранилище и узел кластера и добавить заново. Удаление хранилища выполняется с помощью команды:

virsh pool-undefine название-хранилища.

Проблемы с сетевым LVM-хранилищем

Не удаётся обнаружить группу томов на узлах

Если команда vgs на узлах не отображает группу томов LVM с iSCSI-хранилища, проверьте, работает ли с ней iscsi-target. Для этого на узле таргета выполните команду:

tgtadm -m target --op show

Если в списке lun необходимый раздел отсутствует, добавьте его вручную:

tgtadm -m logicalunit --op new --tid 1 -b /dev/sda2 --lun 1

После этого перезагрузите tgtd, переподключите узлы к таргету и выполните на узлах pvscan для обнаружения пула.

Проблема при подключении нового узла кластера

После внесения изменений в файл /etc/tgt/targets.conf (например, требуется подключить ещё один узел и был добавлен ещё один initiator-address) узел не удаётся подключить (команда iscsiadm -m discovery -t st -p ... возвращает "iscsiadm: No portals found"). Причина, скорее всего, заключается в том, что сервис фактически не перезапускается и не перечитывает конфигурационный файл, пока к нему подключены клиенты.

При перезагрузке сервиса убедитесь, что он перезапустился:

service tgtd stop
killall -9 tgtd
service tgtd start
Обратите внимание!
Команда killall -9 tgtd уничтожит процессы сервиса tgtd, при этом возможна потеря данных.

Проблемы с iSCSI-хранилищем

Requested operation is not valid: storage pool is not active

Ошибка возникает, если есть проблемы с iSCSI-хранилищем. Проверьте статус службы tgtd на сервере с хранилищем (должна быть запущена). Если проблема появляется при добавлении нового узла, то подключитесь по SSH на добавляемый узел и выполните команду:

virsh pool-list --all

Если в выводе команды присутствует строка вида iSCSI-UGLY_004 | не активен | yes, то можно попробовать удалить это хранилище и добавить узел ещё раз:

virsh pool-undefine iSCSI-UGLY_004

internal error Child process (/sbin/iscsiadm --mode discovery --type sendtargets --portal xxx.xxx.xxx.xxx:3260,1) status unexpected: exit status 255

VMmanager не может подключиться к серверу с iSCSI по 3260 порту. Причин может быть несколько:

  1. SELinux должен быть отключён;
  2. Нужный порт закрыт в файерволе.

Ошибка: "operation failed: Storage source conflict with pool: '...' "

Эта ошибка может появляться на этапе создания хранилища типа dir или netfs. Означает, что на сервере уже существует хранилище данного типа, которое расположено в той же директории, что и создаваемое.

Решение: Найти и удалить существующее хранилище на всех узлах кластера:

virsh pool-list
virsh pool-dumpxml <pool-name>
virsh pool-destroy <pool-name>
virsh pool-undefine <pool-name>

Проблемы с RBD-хранилищем

Ошибка при добавлении хранилища на узел кластера

ceph auth get-or-create client.vmmgr mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=isptest' key for client.vmmgr exists but cap osd does not match

Решение: Зайдите на монитор и удалите пользователя client.vmmgr

ceph auth del client.vmmgr

Требуется сменить IP-адрес Ceph-монитора

Для создаваемых виртуальных машин:

Непосредственно на самом Ceph-мониторе IP-адрес может быть изменён вручную администратором Ceph-хранилища. В базе MySQL "vmmgr" на мастере VMmanager в таблице "metapool" необходимо заменить поле "srchostname" на новый узел. В таблице "rbdmonitor" убедитесь, что значение "metapool" соответствует значению "id" из таблицы "metapool". После правки базы удалите кэш:

rm -rf /usr/local/mgr5/var/.db.cache.vm*

Затем перезапустите панель управления:

killall core

Для существующих виртуальных машин выполните следующие команды:

sed -i 's/old_IP/new_IP/g' /etc/libvirt/qemu/*.xml
virsh define /etc/libvirt/qemu/*.xml
Пояснения

Проблемы с GlusterFS-хранилищем

При размещении двух хранилищ VMmanager в одном и том же томе и директории GlusterFS, но с разными типами (QCOW2 и RAW) невозможно выполнить перемещение виртуального диска между этими хранилищами

Используйте разные директории на сетевом хранилище для избежания такой ситуации.

Импорт виртуальных машин из другого VMmanager или из другого сервера с libvirt напрямую в хранилище GlusterFS не работает, так как драйвер libvirt не поддерживает запись содержимого диска из потока

Для решения проблемы при определении параметров импорта укажите перенос в хранилище другого типа, а затем переместите диски импортированных машин в хранилище GlusterFS.

Проблемы с NFS-хранилищем

Проблема при создании виртуального диска

Если libvirt не может создать образ в хранилище, а в логе /var/log/syslog присутствуют подобные строки:

rpc.idmapd[706]: nss_getpwnam: name 'root@testers' does not map into domain 'ispsystem.net'.

Для решения проблемы в файле /etc/idmapd.conf на сервере и клиенте укажите корректное и одинаковое значение параметра "Domain". После редактирования  перезагрузите сервер и клиент, повторно добавьте хранилище в VMmanager.

Проблема при удалении данных из хранилища

Если диски, созданные в хранилище NFS, не удаляются с ошибкой: Ошибка libvirt при выполнении операции "VolDelete": "cannot unlink file '/nfs-pool/volume': Permission denied".

В /var/log/messages содержится подобное сообщение:

Sep 16 13:11:07 client nfsidmap[7340]: nss_getpwnam: name 'www-data@lan' does not map into domain 'localdomain'

Для решения проблемы в файле /etc/idmapd.conf на сервере и клиенте укажите корректное и одинаковое значение параметра "Domain". После редактирования  перезагрузите сервер и клиент, повторно добавьте хранилище в VMmanager.

Проблемы с виртуальными дисками

Ошибка libvirt при изменении размера диска

Ошибка libvirt при выполнении операции "Grow": "unknown procedure: 260".

Эта ошибка чаще всего возникает из-за устаревшей версии libvirt. Обновите libvirt.

Ошибка: "Не удалось примонтировать диски виртуальной машины" при смене пароля

Проблема проявляется при попытке сменить пароль для виртуальной машины с файловой системой XFS внутри, размещённой на хост-сервере с ext4 и ядром версии менее 3.10. Для более точной диагностики запустите вручную команду:

guestmount -v -x -a <образ_диска> -i <путь к точке монтирования>

Если в выводе видны сообщения "mount: wrong fs type, bad option, bad superblock", то работа с этой машиной с помощью libguestfs невозможна. Причина — неполная поддержка гостевой xfs в ядре RHEL/CentOS 6. Подробнее см. virt-inspector can't obtain info from rhel7.3 guest image on rhel6.9 host. К сожалению, по заявлениям разработчиков libguestfs, это поведение не может быть исправлено.

Проблемы с настройкой сети

IPv6 на Ubuntu 12.04

При добавлении узла кластера с IPv6-адресом выводится ошибка: "Невозможно подключиться к серверу XXX. Возможно, на сервере не работают службы ssh или libvirt-bin".

В логах:

Mar 13 13:26:09 [2157:0x95E700] virt TRACE ErrorCallback libvirt error code=38 message=Cannot recv data: ssh: external/libcrypto.so.1.0.0: no version information available (required by ssh) : Connection reset by peertname [2a01:230:2:3::3]: Name or service not known
Mar 13 13:26:09 [2157:0x95E700] virt DEBUG vir_host.cpp:70 Connect to qemu+ssh://[2a01:230:2:3::3]/system?keyfile=etc/ssh_id_rsa
Mar 13 13:26:09 [2157:0x95E700] err ERROR Error: Type: 'vir_connection'
Mar 13 13:26:09 [2157:0x95E700] virt TRACE Fail libvirt message: 'Cannot recv data: ssh: external/libcrypto.so.1.0.0: no version information available (required by ssh)

Эта ошибка является багом Ubuntu 12.04. Подробнее см. на launchpad.

Решение: Добавьте узел с IPv4 адресом.

Проблемы с виртуальными машинами

Проблемы при создании виртуальных машин

Ошибка при создании виртуальной машины: "ERROR: Exception 1: Insufficient RAM for VM creation", хотя в Swap ещё достаточно оперативной памяти

Свободная оперативная память — это free + cached. Swap не учитывается.

При попытке создания виртуальной машины возникает ошибка. Ошибка libvirt при выполнении операции "Start": "internal error Process exited while reading console log output: qemu-kvm: -chardev pty,id=charserial0: Failed to create chardev".

Для решения проблемы выполните команду:

mount -n -t devpts -o remount,mode=0620,gid=5 devpts /dev/pts

При попытке создания виртуальной машины возникает ошибка. Ошибка libvirt при выполнении операции "Start": "internal error cannot create rule since ebtables tool is missing"

Проверьте вывод команды lsmod |grep ebt. Если нет результата, значит в ядре нет поддержки ebtables. Пересоберите ядро либо скачайте другое и правкой grub.conf измените порядок загрузки.

Проблемы с установкой операционной системы

Установщик не может скачать файл ответов

Эта ошибка может быть обнаружена при подключении к виртуальной машине по VNC.

Причин может быть несколько:

  1. IP-адрес виртуальной машины не может быть прикреплён к узлу кластера, на котором эта машина создана. Так бывает, например, если IP-адреса в дата-центре привязаны к MAC-адресам.
  2. Не работает резолвер на виртуальной машине. В качестве резолвера используется первый резолвер с родительского сервера (файл /etc/resolv.conf).
  3. VMmanager пытается предоставить файл ответов по внутреннему IP-адресу, который не доступен снаружи, а установщик скачивает файл ответов через внешнюю сеть.
  4. В настройках ihttpd настроен redirect для http-соединений. IP-адрес, на который будет предоставлен файл ответов, VMmanager получает от ihttpd и узнать его можно с помощью команды:
/usr/local/mgr5/sbin/ihttpd

Берётся верхний из списка IP-адрес, подходящий по протоколу. Если эта команда показывает верхним внутренний IP-адрес, установщик не сможет получить файл ответов. Сконфигурируйте ihttpd, первым указав внешний IP-адрес.

Не удаётся полностью получить preseed-файл при установке Debian

Для решения проблемы уберите опцию "nocunked" в файле конфигурации ihttpd (по умолчанию /usr/local/mgr5/etc/ihttpd.conf).

После этого перезапустите сервис ihttpd.

Проблемы с установкой Windows 2016 на виртуальной машине: В VNC наблюдается, что установка зависла на этапе загрузки

Встречается на серверах с версией QEMU 1.5, 0.12, 1.1.2.

Решение: при создании виртуальной машины включите режим эмуляции процессора host-passthrough. Для QEMU 2.6 установка этих шаблонов работает без необходимости изменения режима эмуляции, но иногда может потребоваться перезапуск службы libvirt (service libvirtd restart) (если было обновление системы).

При установке FreeBSD-amd64 на некоторых типах процессоров могут возникнуть проблемы:

  • установка зависает;
  • при подключении по VNC наблюдается ошибка:
  • нет реакции на нажатие клавиш.

В таких случаях рекомендуем использовать образы FreeBSDx32. Также для решения проблемы помогает установка kernel-lt. Подробнее см. http://elrepo.org/tiki/kernel-lt.

Проблемы с доступностью виртуальных машин

Виртуальная машина недоступна после перезагрузки

Проверьте следующее:

  1. Узлы кластера должны иметь связь с мастер-сервером.
  2. Сервис vmwatch-master на мастер-сервере слушает нужный IP-адрес (IP-адрес определяет параметр VmwatchListenIp конфигурационного файла VMmanager). Если адрес не задан явно, используется адрес подключённого локального узла кластера. Если локального узла кластера нет, используется первый IP-адрес первого интерфейса. После изменения конфигурации запустите переконфигурирование сервисов из консоли с помощью команды:
/usr/local/mgr5/sbin/mgrctl -m vmmgr vmwatch.configure

Проблемы с миграцией виртуальных машин

Ошибка, возникающая при живой миграции: virt TRACE ErrorCallback libvirt error code=38 message=Unable to read from monitor: Connection reset by peer.

Такая ошибка возникает в некоторых конфигурациях с версией libvirt 0.9.12.3 при выборе типа сетевого интерфейса виртуальной машины "virtio". Для успешной живой миграции в настройках сетевого интерфейса виртуальной машины укажите модель эмулируемого сетевого устройства отличную от "virtio", например "e1000". Для изменения этого параметра у существующей виртуальной машины потребуется её перезагрузка.

Ошибка: "internal error: unable to execute QEMU command 'migrate': this feature or command is not currently supported".

Эта ошибка возникает при попытке мигрировать включённую виртуальную машину на кластере с CentOS-7. Это вызвано ошибкой QEMU на CentOS-7.

Возможные пути решения:

  1. Отключите виртуальную машину и мигрируйте в выключенном состоянии.
  2. Установите QEMU из репозитория centos-release-qemu-ev. Все команды выполняются в консоли каждого узла кластера от имени суперпользователя (root):

    yum install centos-release-qemu-ev
    yum update


    Будут обновлены все установленные пакеты, для которых доступно обновление. В списке обновляемых пакетов должны присутствовать:

    libcacard-ev
    qemu-img-ev
    qemu-kvm-common-ev
    qemu-kvm-ev
    qemu-kvm-tools-ev

    После обновления QEMU/KVM перезапустите виртуальные машины и сервис libvirtd.

Ошибка миграции и резервного копирования для виртуальных машин с диском qcow2 на серверах с версией QEMU 2.6

Не создаются резервные копии и не выполняется миграция виртуальных машин с виртуальным диском qcow2 и созданным внутри снапшотом во включённом состоянии. Версия QEMU 2.6, версия libvirt 2.0.

Эта проблема является ошибкой QEMU 2.6. Исправление вошло в QEMU 2.7.

Возможные пути решения:

  1. Перезагрузите виртуальную машину. После перезагрузки можно продолжать работу;
  2. Обновите QEMU до версии 2.7. Этот вариант не тестировался и не гарантируется его эффективность. Используйте на свой страх и риск.

В процессе миграции виртуальной машины размер диска LVM незначительно изменяется в большую сторону

Эта проблема является ошибкой QEMU. Подробнее см. https://bugs.launchpad.net/qemu/+bug/1449687 https://bugzilla.redhat.com/show_bug.cgi?id=1219541.

Исправить её можно только в QEMU. Варианта два: мигрировать выключенную машину или использовать qemu-img convert после миграции для уплотнения диска.

Ошибка: "Attempt to migrate guest to the same host".

Если миграция виртуальной машины не происходит и в логе var/migratevm.log появляется эта ошибка, то причины могут быть следующие:

  1. На узлах кластера установлен один и тот же hostname. Решение: исправьте hostname. Отредактируйте файлы /etc/hostname и /etc/hosts, замените в них старое имя сервера на новое.
  2. Узлы кластера имеют одинаковый product_uuid. Для проверки запустите команду на всех узлах кластера:

    cat /sys/class/dmi/id/product_uuid

    Если значения совпадают, то проблема действительно в одинаковом product_uuid. Решение: на узлах кластера, у которых совпадают product_uuid, отредактируйте файл /etc/libvirt/libvirtd.conf. Раскомментируйте строку:

    #host_uuid = "00000000-0000-0000-0000-000000000000"

    Значение host_uuid заполните самостоятельно. Значение не может состоять из всех одинаковых цифр. Для создания uuid можно использовать утилиту uuidgen. После этого необходимо перезапустить Libvirt.

Ошибка libvirt при выполнении операции "Define": "unknown OS type hvm"

В большинстве случаев проблема решается перезагрузкой сервера. Также рекомендуется проверить состояние аппаратной виртуализации в BIOS:

modprobe kvm
egrep '^flags.*(vmx|svm)' /proc/cpuinfo

Если ответ пустой, то виртуализация отключена, включите.


Миграция виртуальной машины <наименование vm> невозможна: происходит процесс резервного копирования

Если в панели управления запущен процесс резервного копирования и виртуальная машина находится в списке для резервного копирования, то любые действия по отношению к данной виртуальной машине заблокированы. Блокировка продлится до окончания процесса резервного копирования.

Проблемы с импортом виртуальных машин

Ошибка ERROR Error: Type: 'host_missing' Object: Value: при импорте

Ошибка означает, что не найден ни один подходящий узел кластера для импорта. Убедитесь, что на хранилище, выбранном для импорта, достаточно свободного места. Убедитесь, что для создания виртуальной машины достаточно оперативной памяти.

Ошибка ERROR Error: Type: 'xml' Object: 'parse_file' Value: '/nfsshare/metainfo.xml' при импорте

Для решения проблемы создайте файл /nfsshare/metainfo.xml. Содержимое файла можно скопировать из metainfo.xml любого шаблона ОС.