Наиболее частые проблемы с VMmanager и их решение

Материал из ISPWiki
Версия от 10:48, 10 ноября 2016; Asgard (обсуждение | вклад) (Установка QEMU из репозитория centos-release-qemu-ev)
Перейти к: навигация, поиск

Содержание

Типы проблем

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

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

Общие проблемы

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

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

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

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

Убедитесь, что cron запущен и в cron есть задание

/usr/local/mgr5/sbin/mgrctl -m vmmgr check.running

Также убедитесь, что на мастер сервере нет зависших заданий checkrunning --node <id ноды>. Если же они есть, необходимо завершить эти процессы.

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

Ошибка 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": "Unable to create cgroup for test: No such device or address"

Проблема в ядре Debian. В данный момент сервер нужно загрузить с опцией ядра cgroup_enable=memory для нормальной работы

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

Ошибка libvirt при выполнении операции "Start": "internal error cannot create rule since ebtables tool is missing."

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

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

Недостаточно места для создания VDS

Во всех хранилищах VMmanager резервирует 10% свободного места. Поэтому даже если у вас свободно 100Gb в хранилище, полностью использовать этот объем вы не сможете. В версиях 5.5.0 и выше добавлена возможность задавать размер места в хранилище, которое будет резервироваться для нужд системы.

Сетевое хранилище NFS

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

libvirt не может создать виртуальный диск в сетевом хранилище.

  • Примонтированная директория, в которой создаются образы, имеет владельца nobody и группу nogroup.

В этом случае libvirt не может создать образ, в логе /var/log/syslog можно увидеть строки

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

Решение: необходимо отредактировать файл /etc/idmapd.conf на сервере и клиенте, раскомментировать строку

Domain = localdomain

и изменить значение Domain на ваше собственное, например,

Domain = domain.com

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

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

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

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

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 адресом.

Не добавляется узел на Debian 7

При добавлении узла кластера выводится ошибка:

"Невозможно подключиться к серверу 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)

Решение: установите пакет netcat-openbsd

Не добавляется узел с 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.

Проблемы при миграции VM

Для того, чтобы перенести VM с одного VMmamanager на другой, необходимо подключить источник как ноду в новый VMmanager и запустить перенос VM средствами VMmanager.

Attempt to migrate guest to the same host

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

  • На узлах кластера установлен один и тот же hostname.

Решение: Исправить hostname. Отредактируйте файлы /etc/hostname и /etc/hosts, замените в них старое имя сервера на новое.

  • Узлы кластера имеют одинаковый product_uuid.

Чтобы проверить, запустите

cat /sys/class/dmi/id/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

Если в ответ ничего, то выключена - нужно включать.

Проверить, подгружен ли kvm

service kvm status

not_enought_freemem (не хватает оперативной памяти)

VMmanager резервирует около 10% оперативной памяти на сервере и не позволяет мигрировать виртуальную машину, если оставшейся свободной памяти меньше, чем нужно виртуальной машине.

Можно остановить одну из виртуальных машин на сервере, мигрировать нужную, затем запустить обе.

Живая миграция на CentOS-7: 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

Установка 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 следует перезапустить виртуальные машины.

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

Requested operation is not valid: storage pool is not active

Возникает если есть проблемы с iSCSI хранилищем. Что стоит проверить:

  • На сервере с хранилищем запущена служба tgtd.
  • Если проблема появляется при добавлении нового узла, то зайдите по ssh на добавляемый узел. Выполните:
[root@free ~]# virsh  pool-list --all
Имя               Статус Автозапуск
-----------------------------------------
File                 активен yes       
iSCSI-UGLY_004       не активен yes

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

root@free ~]# virsh pool-undefine iSCSI-UGLY_004
Определение пула 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>