Vmmanager 6: представляем коробку и сравниваем с предыдущим поколением
Содержание:
Управление виртуальными машинами
Управление осуществляется в Управление → Виртуальные машины.
Нажмите Конвертировать для преобразования файловой системы виртуальной машины из simfs в ploop.
Нажмите Сжать для уменьшения контейнера. содержащего файловую систему виртуальной машины.
Нажмите Миграция для переноса виртуальной машины на другой узел кластера. Подробнее см. в статье Миграция виртуальных машин.
Нажмите Пароль для смены пароля виртуальной машины. Опция доступна только для виртуальных машин с операционными системами Linux, диски которых расположены в любом хранилище кроме RBD. Для смены пароля используется метод mount.linux. Метод использует пакет guestfish.
Алгоритм работы метода:
-
VMmanager останавливает виртуальную машину и монтирует виртуальный диск:
guestmount -a <образ_диска> -i <путь к точке монтирования>
-
VMmanager выполняет chroot:
mount -t proc proc <путь к точке монтирования>/proc mount -o bind /dev <путь к точке монтирования>/dev mount -o bind /sys <путь к точке монтирования>/sys chroot <путь к точке монтирования>
-
VMmanager меняет пароль:
usermod -p 'новый-пароль' root
- VMmanager выполняет unmount.
Нажмите IP-адреса для управления IP-адресами виртуальной машины.
Нажмите Снимки для создания и управления снимками виртуальной машины. Подробнее о снимках см. в статье Резервное копирование.
Установка гостевой Windows 10
Запускаем стандартную установку данной ОС, выбираем редакцию, вводим или пропускаем (для получения 30 дневной пробной версии) серийный номер, принимаем лицензионное соглашение с конечным пользователем, затем Выборочная установка ибо нам требуется создать разделы на диске и установить драйвер VirtIO для ранней стадии загрузки системы.
Когда появится сообщение об ошибке о том, что не удалось загрузить драйверы, нажмём кнопку Загрузить, а затем в появишемся окне разрешим автоматический поиск при помощи нажатия OK.
Ошибка, связанная с отсутствием драйвера VirtIO
Укажем версию драйвера Red Hat VirtIO SCSI controller для Windows 10 и нажмём Далее.
Ручная установка драйвера VirtIO
С этого момента программа установки наконец обнаружит наш виртуальный накопитель и предложит создать разделы, а затем установить на него операционную систему.
Далее весь процесс установки вполне стандартный и описывать его мы не будем.
Архитектура подсистемы
Подсистема состоит из двух сервисов: vmwatch-master и vmwatch-node. Для взаимодействия между сервисами используется очередь сообщений. Очередь реализована с помощью библиотеки ZeroMQ по схеме PUSH-PULL.
Сервис vmwatch-master
Выполняется на узле, где расположена панель управления. Сервис принимает сообщения на указанном в конфигурационном файле IP-адресе и порту, обрабатывает их и выполняет вызовы соответствующих функций API панели управления для передачи информации об изменении состояния виртуальных машин.
Сервис vmwatch-node
Выполняется на каждом узле кластера. Сервис отправляет сообщения на указанный в конфигурационном файле IP-адрес и порт. Информацию об изменении состояния виртуальных машин сервис получает от сервиса libvirtd. В случае потери соединения с libvirtd сервис завершает работу.
Подготовка сервера
Желательно, чтобы система была чистой — без установленных программных продуктов и измененных репозиториев. Установщик VMmanager сам развернет все необходимые пакеты и внесет настройки в систему.
Для подготовки мы проверим, что наш сервер поддерживает технологию виртуализации, соответствует системным требованиям платформы и отключим SELinux.
Системные требования
Для каждой версии VMmanager свои системные требования. Найти подробный список можно на официальном сайте разработчика.
Особое внимание стоит обратить на программные требования и операционную систему, которая поддерживается устанавливаемой платформой
Поддержка виртуализации
Для установка VMmanager для KVM проверяем, что на нашем сервере включена поддержка виртуализации:
cat /proc/cpuinfo | egrep «(vmx|svm)»
Мы должны получить что-то на подобие:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec arat pku ospke spec_ctrl intel_stibp flush_l1d arch_capabilities
Если команда ввела пустую строку, необходимо в БИОС в настройках процессора активировать технологию виртуализации (Intel Virtualization Technology или AMD Virtualization).
Для развертывания VMmanager на другой виртуальной машине, необходимо настроить последнюю для поддержки виртуализации, например, в VMware при настройке процессора нужно установить галочку Expose hardware assisted virtualization to the guest OS:

SELinux
Для VMmanager также рекомендуется отключить SELinux. Если в нашей системе он используется, выполняем команду:
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
… и перезагружаем сервер:
shutdown -r now
Конфигурация сервисов
Запуск и автозапуск сервисов контролируется системой System V (System D для CentOS 7). Сервис vmwatch-master и его управляющий скрипт находятся в пакете vmmanager-kvm для VMmanager KVM. Сервис vmwatch-node и его управляющий скрипт находятся в пакете vmmanager-pkg-vmnode.
Запуск сервисов выполняется автоматически в процессе загрузки ОС или панелью управления в процессе настройки.
После установки VMmanager сервис vmwatch-master находится в заблокированном состоянии до тех пор, пока не будет добавлен первый узел в состав кластера.
Параметры работы сервисов записываются в конфигурационных файлах vmwatch-master.conf и vmwatch-node.conf соответственно, которые располагаются в каталоге /usr/local/mgr5/etc. Конфигурационные файлы формируются панелью управления автоматически.
Конфигурационные файлы записываются в формате ИМЯ_ПАРАМЕТРА=ЗНАЧЕНИЕ, по одному параметру на строке.
Конфигурационный файл vmwatch-master.conf
Может содержать следующие параметры:
- disabled — наличие параметра со значением yes блокирует выполнение сервиса;
- listen — значение параметра в формате ‘протокол://IP:порт’ определяет сокет, на котором сервис принимает сообщения;
- secret — произвольная строка символов (A-Z, 0-9), значение параметра используется для аутентификации входящих сообщений.
Конфигурационный файл vmwatch-node.conf
Может содержать следующие параметры:
- connect — значение параметра в формате протокол://IP:порт определяет сокет, на который сервис отправляет сообщения;
- secret — значение параметра используется для аутентификации исходящих сообщений. Должно совпадать со значением параметра secret конфигурационного файла vmwatch-master;
- node_id — идентификатор узла кластера, используется в сообщениях для идентификации источника сообщения.
Настройка сервисов
Настройка сервисов выполняется панелью в автоматическом режиме по необходимости:
- при выполнении обновления до версии, поддерживающей подсистему мониторинга, и при наличии узлов в составе кластера;
- при добавлении узла в состав кластера.
Определение IP-адреса, на котором vmwatch-master будет принимать сообщения, выполняется следующим образом:
- проверяется значение параметра VmwatchListenIp конфигурационного файла панели;
- если IP-адрес не задан параметром, выполняется поиск узла кластера, на котором расположена панель управления;
- если локального узла кластера нет, выполняется сканирование IP-адресов на всех сетевых интерфейсах сервера, на котором располагается панель управления. Выбирается первый из списка IP-адрес, который не является локальным.
Порт, на котором vmwatch-master принимает сообщения, определяется параметром VmwatchListenPort конфигурационного файла панели. Значение по умолчанию — 1515.
Для изменения IP-адреса и/или порта запишите соответствующие параметры в конфигурационный файл панели управления, перезапустите панель и вызовите функцию API vmwatch.configure. Эта функция сконфигурирует все сервисы мониторинга в соответствии с указанными параметрами.
KVM: резервное копирование без остановки виртуальной машины
Естественно, в большинстве случае администраторы хотят использовать вариант “живого” резервного копирования виртуальных машин KVM без остановки. Он немного сложнее первого варианта и требует дополнительных действий. В данном варианте используется создание снапшота и последующее его объединение с файлом диска виртуальной машины. В самом начале статьи я писал, что использую формат дисков qcow2 и как раз это и позволяет создать живой бэкап. Для того, чтобы вы могли корректно создать копию виртуальной машины, в ВМ должен быть добавлен Channel Device с именем org.qemu.guest_agent.0 (можно добавить через конфигурационный файл или virt-manager).
Совет. Если не установить настроить агент для гостевые ВМ, при создании снапшота будет появляться ошибка:
error: argument unsupported: QEMU guest agent is not configured
Не забудьте добавить конфигурационный XML файл виртуальной машины следующий блок:
<channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>
Добавляется он в секцию “Device”, после чего нужно сохранить конфигурацию и выполнить ребут машины.
Затем в гостевой ОС нужно установить пакет qemu-guest-agent (установите его через yum/dnf):
Для создания снашшотов ВМ с Windows нужно установить virtio-win.
Для создания снапшота ВМ используется следующая команда:
Где VM — это имя виртуальной машины. Далее нужно создать бэкап файла диска:
После того, как диск виртуальной машины будет скопирован, нужно выполнить объединение его со снапшотом:
Где vda – это результат выполнения команды:
Я переделав предыдущий скрипт бэкапа с остановкой виртуальных машин. Теперь резервное копирование запускается по cron с созданием снапшотов и объединением его с диском виртуальной машины:Данный скрипт выполнит резервное копирование подобно первому варианту, только без остановки виртуальной машины (работает корректно, протестировано на виртуальных серверах с postgresql, mariadb и nginx с php-fpm). Конечный результат будет точно такой же, у вас будет бэкап конфигурационного файла и файла диска. 
Для хранения резервных копий вы можете использовать удаленные сервера (можно копировать данные через Rsync) или хранилища . В одной из статей мы настраивали подключения к популярным облачным сервисам, таким образом вы можете сэкономить дисковое пространство на своем сервере.
Помощь по поиску
- Общие
- Подстановочные символы
- Другие
Для поиска контента, содержащего точную фразу «мел и сыр», введите:
"мел и сыр"
Для поиска контента, содержащего одного из выражений «мел» или «сыр», введите:
"мел OR сыр"
Для поиска контента, содержащего оба выражения «мел» и «сыр», введите:
"мел AND сыр"
Для поиска контента, который содержит «мел», но не содержит «сыр», введите:
"мел NOT сыр"
Исключение выражений из поиска
Аналогично поиску с NOT, для поиска контента, который содержит «мел» и «масло», но не содержит «сыр»,
введите:
мел масло -сыр
Группировка выражений поиска
Для поиска контента, который обязательно должен содержать «мел», и возможно содержит «сыр» или
«масло», введите:
(сыр OR масло) AND мел
Для поиска контента, в Заголовок которого входит «мел», используйте ключевое слово title:
title:мел
Одиночный символ
Для поиска контента, содержащего «лак» или «лук», можно использовать символ ? :
л?к
Для поиска контента, содержащего «хлеб» или «хлебный», можно использовать символ * :
хлеб*
Множественные символы
Для поиска «хлеб» или «хлебный»:
х*б*
Допускается комбинирование подстановочных символов, для уточнения условий. Например, поисковый запрос
ниже позволит найти контент, содержащий «масло», но не «масленый»:
м*л?
Используйте префикс «labelText:», чтобы искать содержимое с конкретной меткой.
labelText:шоколад
Поиск близких выражений
Следующее поисковое выражение позволяет найти все фразы, в которых указанные слова отстоят друг от
друга на точно указанное количество слов.
"бутерброд сыром"~2
Фраза «будерброд с плавленым сыром» удовлетворяет условиям поиска.
Неточный поиск
Этот способ поиска позволяет искать слова, близкие по написанию. Для поиска «масленый», если есть
неуверенность в написании:
масленый~
Фраза «масляный» удовлетворяет условиям поиска.
Настройка пользовательского сеанса KVM
Создание подключения к сеансу
Запустим Менеджер виртуальных машин (virt-manager) из меню используемой графической среды.
Главное окно Virt Manager
В главном окне менеджера виртуальных машин, нажмём правой кнопкой мыши по QEMU/KVM, затем в контекстном меню выберем вариант Отключиться и Удалить. Подтвердим удаление.
В меню Файл выберем Добавить соединение.
Создание пользовательского сеанса KVM
В поле Гипервизор выберем пункт QEMU/KVM сеанс пользователя, затем установим флажок в чекбокс Подключаться автоматически и нажмём Подключиться. Новый пункт появится в списке.
По умолчанию предлагается использовать каталог ~/.local/share/libvirt/images для хранения дисковых образов виртуальных машин, однако для удобства мы создадим новые.
Это опциональное действие. Можно использовать пул default для любых целей.
В главном окне менеджера выделим пункт QEMU/KVM сеанс пользователя, затем в меню Правка выберем пункт Свойства подключения и переключимся на вкладку Пространство данных.
Настройки пула пользовательского сеанса
Создадим два каталога: images для дисковых образов виртуальных машин и iso для ISO образов, из которых будет производиться установка операционных систем:
mkdir -p ~/virt/{images,iso}
В левой панели окна менеджера пространств данных нажмём кнопку Добавить пул (с символом плюс).
Добавление пользовательского пула
В поле Название для пула с дисковыми образами укажем images, Тип — каталог в файловой системе, а Target Path — каталог на диске (в нашем случае — созданный ранее ~/virt/images). Нажмём Готово и пул появится в списке. Подтвердим сохранение изменений.
Повторим то же самое, но для ISO образов:
- название — iso;
- target path — ~/virt/iso.
Настроенные пулы пользовательского сеанса
Если всё сделано верно, в левой панели появятся два новых пула — images и iso. Выберем каждый и убедимся, что в чекбоксе Автозапуск при загрузке установлен флажок. Если это не так, исправим и нажмём Применить.
Пул с именем default теперь допускается удалить, хотя это и не обязательно. Для этого выберем его, нажмём кнопку Остановить пул, а затем Удалить пул и подтвердим намерение.
Настройка сети в пользовательском сеансе
Создадим сетевой мост для виртуальных машин:
sudo nmcli con add type bridge ifname virbr0 ipv4.method shared ipv4.address 192.168.122.1/24
Разрешим использование моста в qemu-bridge-helper:
echo allow virbr0 | sudo tee -a /etc/qemu/bridge.conf
Добавим правила для файрвола:
sudo firewall-cmd --zone libvirt --add-interface virbr0 --permanent sudo firewall-cmd --zone libvirt --add-service dhcp --permanent sudo firewall-cmd --zone libvirt --add-service dhcpv6 --permanent sudo firewall-cmd --zone libvirt --add-service dns --permanent sudo firewall-cmd --reload
На этом настройка пользовательского сеанса завершена и можно приступать к установке гостевых операционных систем.
Создание виртуальной машины
Нажмите Управление → Виртуальные машины → Создать. Укажите настройки в блоках Основное, Тонкая настройка, Ограничения, SSH, Примечания.
Основное
Укажите:
- Наименование;
- Владелец;
- Узел кластера — сервер для создания. По умолчанию — Автоматический выбор — выбирается наиболее подходящий узел кластера. Подробнее об алгоритме выбора см. статью Настройка распределения виртуальных машин по узлам кластера;
- Шаблон VM — шаблон для создания виртуальной машины;
- Тип установки — способ установки ОС:
- Установка из шаблона ОС — подробнее о шаблонах ОС см. в статье Шаблоны ОС;
- Установка из ISO — ISO-образы загружаются в Управление → ISO-образы.
- Рецепт — скрипт для подготовки виртуальной машины после установки ОС. Подробнее о рецептах см. в статье Рецепты;
- Операционная система — произвольное наименование;
- Тип IP-адреса:
- Публичный — с доступом из сети Internet;
- Приватный — без доступа из сети Internet;
- NAT — для использования с сетями NAT.
- IP-адрес — адрес виртуальной машины. Если выбрано несколько IP-адресов, то все они добавляются на интерфейс виртуальной машины;
- Домен — доменное имя виртуальной машины;
- Размер основного диска — объём в MiB. Размер дисков в LVM-хранилище должен быть кратен значению PE Size физического тома;
- Оперативная память — объём в MiB;
- Количество процессоров;
- Пароль — используется как пароль суперпользователя, а также для доступа по VNC (первые 8 символов пароля).
Тонкая настройка
Укажите:
- Режим эмуляции процессора — способ определения спецификаций процессора виртуальной машины:
- По умолчанию — эмулируется виртуальный процессор QEMU;
- Host-model — эмулируемый процессор будет обладать теми же флагами функций, что и процессор хост-машины;
- Host-passthrough — эмулируемый процессор будет не только обладать флагами функций, что и процессор хоста, но и точь-в-точь ему соответствовать. Такой режим эмуляции позволяет получить лучшую производительность, а также может быть обязательным для некоторых приложений. Однако миграция такой виртуальной машины возможна только на полностью совпадающий процессор;
- Пользовательский — настройки эмуляции процессора указываются вручную:
- Модель процессора — например, «pentium3», «core2duo». Полный список доступен в libvirt: файл /usr/share/libvirt/cpu_map.xml;
- Перечень возможностей процессора — возможности процессора, включаемые в обязательном порядке. Перечень всех возможностей процессора доступен в выводе консольной команды virsh capabilities на узле кластера.
- MAC-адрес;
- Установка времени — способ синхронизации часов виртуальной машины с часами сервера.
Ограничения
Укажите:
- Вес CPU — приоритет в использовании процессора. Значение в диапазоне от 128 до 10000 включительно;
- Вес использования I/O — приоритет на дисковые операции. Значение в диапазоне от 100 до 1000 включительно;
- Входящий трафик, KiB/sec — ограничение входящего трафика;
- Исходящие трафик, KiB/sec — ограничение исходящего трафика;
- Количество снимков — ограничение на количество снапшотов.
Укажите:
Публичные SSH-ключи — ключи, которые будут добавлены в устанавливаемую операционную систему.
Примечания
Укажите:
Примечания — дополнительная информация, отображается в списке виртуальных машин в столбце Состояние.
После подтверждения введённых настроек создаётся виртуальная машина и запускается процесс установки операционной системы в соответствии с выбранными шаблоном ОС или ISO-образом и рецептами. После окончания процесса установки виртуальная машина готова к эксплуатации.