- Управление виртуальными машинами KVM из консоли
- Virsh: команды управления виртуальной машиной KVM
- Добавление памяти и vCPU виртуальной машине KVM
- KVM: добавление диска в виртуальную машину
- KVM: добавление сетевой карты для виртуальной машины
- How to enable nested virtualization in KVM
- Enabling nested virtualization in KVM
- Checking if nested virtualization is supported
- Enabling nested virtualization
- Configuring nested virtualization in virt-manager
- Запускаем Windows в KVM на Fedora
- Введение
- Установка KVM
- Выбор режима работы KVM
- Настройка системного сеанса KVM
- Настройка прав доступа
- Создание подключения к пулу
- Создание каталогов для образов
- Настройка пользовательского сеанса KVM
- Создание подключения к сеансу
- Создание каталогов для образов
- Настройка сети в пользовательском сеансе
- Подготовка к установке
- Создание гостевой ОС Windows 10
- Настройка гостевой ОС Windows 10
- Установка гостевой Windows 10
- Установка драйверов Virtio гостевой ОС
- Установка гостевых дополнений SPICE
- 2 комментария к записи
Управление виртуальными машинами KVM из консоли
В предыдущей статье мы рассмотрели установку гипервизора KVM и создание виртуальной машины. В рамках одной статьи, мы не смогли охватить все нюансы управления виртуальными машинами, а затронули лишь их часть. Сегодня, мы постараемся рассказать все об управлении виртуальными машинами из консоли сервера: как изменить параметры ВМ, добавить дополнительные устройства и рассмотрим основные команды, которые используются для администрирования виртуальных машин KVM.
Virsh: команды управления виртуальной машиной KVM
Первый вопрос, который возникает у начинающего администратора KVM: как увидеть созданные виртуальные машины, как остановить, запустить и удалить их. Для управления ВМ в KVM из консоли можно использовать утилиту virsh (использует libvirt API). С помощью утилиты virsh можно выполнить практически все операции с виртуальными машинами KVM.
# virsh list – показать список запущенных ВМ
# virsh list —all – показать список всех машин (в том числе выключенных)
Как видно из скриншота, в первом случае отключенная ВМ не была отображена.
# virsh shutdown — выключить виртуальную машину
# virsh start — запустить виртуальную машину
# virsh suspend — приостановить виртуальную машину
# virsh resume — запустить приостановленную виртуальную машину
# virsh reboot — перезапустить виртуальную машину
# virsh destroy — уничтожить виртуальную машину
# virsh undefine — удалить машину из списка и удалить все файлы, принадлежащие ей (обычно применяется после выполнения команды virsh destroy).
# virsh vcpuinfo — информация о процессоре на виртуальной машине (информацию о железе физического Linux сервера можно получить так)
Еще несколько команд по получению различной информации о виртуальной машине:
# virsh domid — получить идентификатор виртуальной машины
# virsh domuuid — получить UUID виртуальной машины
# virsh dominfo — получить сведения о виртуальной машине
# virsh domstate — просмотр состояния виртуальной машины
# virsh dumpxml — вывести файл конфигурации указанной виртуальной машины в XML формате
Добавление памяти и vCPU виртуальной машине KVM
В консоли KVM вы можете добавить или уменьшить ресурсы процессора и памяти, выделенные для ВМ двумя способами:
- С помощью virsh
- Через конфигурационный XML файл ВМ
Если виртуальная машина запущена, ее нужно остановить:
# virsh shutdown test-centos
Теперь с помощью virsh изменим количество виртуальных процессоров до 6 (vCPU):
# virsh setvcpus —config
— количество ядер процессора
# virsh setvcpus test-centos 6 —config
Но при применении этой команды, у меня сразу же появилась ошибка:
Мы не можем установить количество ядер процессора, больше, чем максимальное количество. Чтобы увеличить максимальное количество ядер ВМ, выполните команду:
# virsh setvcpus test-centos 6 —config —maximum
Повторите первую команду и запустите виртуальную машину:
Проверим количество процессоров в настройках ВМ: овленное количество процессоров:
# virsh dumpxml test-centos
Аналогичным образом добавим память виртуальной машине:
# virsh setmem —config
# virsh setmem test-centos 4G —config
Все по той же причине, сразу же вышла ошибка:
Увеличим максимальное значение памяти::
# virsh setmaxmem test-centos 6G —config
Теперь можно увеличить память ВМ.
Перед всеми изменениями не забывайте останавливать ВМ, а после запускать ее.
Также вы можете изменить ресурсы ВМ KVM через ее конфигурационный XML файл. Можно изменить файл в режиме онлайн или же сделав бэкап XML файла ВМ, изменить его и применить к виртуальной машине.
Отредактируем XML файл ВМ в онлайн режиме:
В открывшемся редакторе vi внесите изменения, нажав кнопку “Insert”.
Например, зададим для ВМ 2 ядра и 1Гб памяти:
Сохраните изменения в файле и перезапустите ВМ:
Проверьте настройки ВМ:
Тоже самое можно сделать, сделав бэкап XML файла:
# virsh dumpxml > /root/test.xml
# vi /root/test.xml
Измените нужные вам параметры, сохраните файл и примените к виртуальной машине:
# virsh shutdown test-centos
# virsh define /root/test.xml
# virsh start test-centos
KVM: добавление диска в виртуальную машину
В одной из наших статей, мы описывали процесс расширения и уменьшения дисков виртуальных машин в KVM. Но мы не описывали вариант по добавлению дополнительного диска.
Сначала нужно создать дополнительный файл диска для виртуальной машины:
# qemu-img create -f qcow2 -o size=20G /vz/disk/test.img
Вместо qcow2 вы можете указать нужный формат диска, так же нужно указать путь до файла. У меня хранилище для дисков /vz/disk/.
После этого, можно добавить устройство виртуального диска к самой ВМ:
# virsh attach-disk /vz/disk/test.img vdb —type disk —persistent
Остановите и запустите ВМ, проверьте что получилось:
# virsh shutdown test-centos
# virsh start test-centos
# virsh dumpxml test-centos
Как видим, диск добавлен. После данных манипуляций, на виртуальной машине нужно разметить этот диск под ваши нужды.
KVM: добавление сетевой карты для виртуальной машины
Попрьуем добавить дополнительный сетевой интерфейс для ВМ. Сначала проверим, какие сетевые интерфейсы созданы на хосте:
У меня на KVM сервере создана одна виртуальная машина, с одним сетевым интерфейсом. К br0 нам нужно прикрепить еще один виртуальный сетевой интерфейс. Выполните команды:
# virsh shutdown test-centos
# virsh attach-interface test-centos —type bridge —source br0 —persistent
# virsh start test-centos
Проверьте, что у ВМ появился дополнительный сетевой интерфейс:
Также вы можете изменить сетевые настройки виртуальной машины напрямую через XML файл: # virsh edit test-centos
После первого сетевого интерфейса добавьте следующие строки:
Сохраните файл и запустите ВМ. Остальную конфигурацию, KVM добавит сам (mac address и тд).
В данной статье мы затронули основные моменты, которые могут вам понадобиться при управлении виртуальными машинами KVM из консоли Linux сервера. В следующей статье мы рассмотрим управление виртуальными машинами через графический менеджер virt-manager.
How to enable nested virtualization in KVM
Learn how to run a virtual machine within a virtual machine.
Enabling nested virtualization in KVM
Nested virtualization allows you to run a virtual machine (VM) inside another VM while still using hardware acceleration from the host.
Checking if nested virtualization is supported
For Intel processors, check the /sys/module/kvm_intel/parameters/nested file. For AMD processors, check the /sys/module/kvm_amd/parameters/nested file. If you see 1 or Y , nested virtualization is supported; if you see 0 or N , nested virtualization is not supported.
Enabling nested virtualization
To enable nested virtualization for Intel processors:
Shut down all running VMs and unload the kvm_probe module:
Activate the nesting feature:
Nested virtualization is enabled until the host is rebooted. To enable it permanently, add the following line to the /etc/modprobe.d/kvm.conf file:
To enable nested virtualization for AMD processors:
Shut down all running VMs and unload the kvm_amd module:
Activate the nesting feature:
Nested virtualization is enabled until the host is rebooted. To enable it permanently, add the following line to the /etc/modprobe.d/kvm.conf file:
Configuring nested virtualization in virt-manager
Configure your VM to use nested virtualization:
Open virt-manager, double-click the VM in which you wish to enable nested virtualization, and click the Show virtual hardware details icon.
Click CPUs in the side menu. In the Configuration section, there are two options — either type host-passthrough in the Model: field, or select the Copy host CPU configuration check box (that fills the host-model value in the Model field).
Запускаем Windows в KVM на Fedora
В данной статье мы подробно рассмотрим как правильно настроить систему виртуализации KVM/libvirt в Fedora и установим в качестве гостевой ОС Microsoft Windows 10.
Введение
Многие пользователи для запуска виртуальных машин до сих пор предпочитают использовать VirtualBox, поэтому в данной статье мы решили рассмотреть альтернативу, имеющую ряд серьёзных преимуществ:
- нет необходимости в установке out-of-tree модулей ядра, т.к. они уже входят в его состав;
- корректная работа на конфигурациях с активной технологией UEFI Secure Boot;
- более быстрая работа гипервизора за счёт отсутствия необходимости переключения между режимами ядра и пользователя.
Установка KVM
Первым делом установим ряд необходимых пакетов:
По окончании активируем автоматическую загрузку сервиса libvirtd при помощи systemd:
Внимание! Сразу после этого действия может отключиться текущее сетевое соединение из-за изменения в конфигурации адаптеров и появления новых виртуальных. Это нормальное явление. Именно по этой причине не следует пытаться установить KVM через SSH подключение.
Выбор режима работы KVM
KVM поддерживает работу в двух режимах:
- системный сеанс — qemu:///system — виртуальные машины будут запускаться с повышенными правами от имени пользователя libvirt с полноценной поддержкой сети и общими для всех пулами данных;
- пользовательский сеанс — qemu:///session — виртуальные машины будут запускаться с правами текущего пользователя с индивидуальным пулом и поддержкой сети при помощи qemu-bridge.
Более полное сравнение можно найти здесь (на английском языке).
Системный сеанс считается enterprise-ready решением, а пользовательский наиболее безопасным.
Настройка системного сеанса KVM
Настройка прав доступа
Для работы с виртуальными машинами внутри системного сеанса необходимо состоять в особой группе libvirt, поэтому добавим нашу основную учётную запись в неё:
Создание подключения к пулу
Запустим Менеджер виртуальных машин (virt-manager) из меню используемой графической среды.
Главное окно Virt Manager
Если в списке отсутствует пункт QEMU/KVM, добавим его, вызвав диалог создания нового подключения через меню Файл — Добавить соединение.
Создание подключения
В поле Гипервизор выберем пункт QEMU/KVM, затем установим флажок в чекбокс Подключаться автоматически и нажмём Подключиться. Новый пункт появится в списке как показано на скриншоте выше.
Создание каталогов для образов
По умолчанию предлагается использовать каталог /var/lib/libvirt/images для хранения дисковых образов виртуальных машин, однако место внутри корневого раздела у большинства ограничено, поэтому мы создадим новое на отдельном разделе диска.
Внимание! Для системного сеанса не следует указывать в качестве хранилища каталоги, расположенные внутри /home, т.к. SELinux настроен на полную блокировку доступа к домашним каталогам пользователей для любых системных сервисов и по этой причине гипервизор не сможет работать с ними.
В главном окне менеджера выделим пункт QEMU/KVM, затем в меню Правка выберем пункт Свойства подключения и переключимся на вкладку Пространство данных.
Стандартные настройки хранения образов
Создадим новый раздел диска, отформатируем его в любую поддерживающую Unix-права доступа файловую систему (рекомендуется ext4 или xfs), пропишем в /etc/fstab и смонтируем например в качестве /media/virt.
Перейдём в созданный раздел и создадим два каталога: images для дисковых образов виртуальных машин и iso для ISO образов, из которых будет производиться установка операционных систем:
В левой панели окна менеджера пространств данных нажмём кнопку Добавить пул (с символом плюс).
Добавление нового пула
В поле Название для пула с дисковыми образами укажем images, Тип — каталог в файловой системе, а Target Path — каталог на диске (в нашем случае — созданный ранее /media/virt/images). Нажмём Готово и пул появится в списке. Подтвердим сохранение изменений.
Повторим то же самое, но для ISO образов:
- название — iso;
- target path — /media/virt/iso.
Настроенные пулы хранения данных и образов
Если всё сделано верно, в левой панели появятся два новых пула — images и iso. Выберем каждый и убедимся, что в чекбоксе Автозапуск при загрузке установлен флажок. Если это не так, исправим и нажмём Применить.
Пул с именем default теперь допускается удалить, хотя это и не обязательно. Для этого выберем его, нажмём кнопку Остановить пул, а затем Удалить пул и подтвердим намерение.
На этом базовая настройка завершена и можно приступать к установке гостевых операционных систем.
Настройка пользовательского сеанса KVM
Создание подключения к сеансу
Запустим Менеджер виртуальных машин (virt-manager) из меню используемой графической среды.
Главное окно Virt Manager
В главном окне менеджера виртуальных машин, нажмём правой кнопкой мыши по QEMU/KVM, затем в контекстном меню выберем вариант Отключиться и Удалить. Подтвердим удаление.
В меню Файл выберем Добавить соединение.
Создание пользовательского сеанса KVM
В поле Гипервизор выберем пункт QEMU/KVM сеанс пользователя, затем установим флажок в чекбокс Подключаться автоматически и нажмём Подключиться. Новый пункт появится в списке.
Создание каталогов для образов
По умолчанию предлагается использовать каталог
/.local/share/libvirt/images для хранения дисковых образов виртуальных машин, однако для удобства мы создадим новые.
Это опциональное действие. Можно использовать пул default для любых целей.
В главном окне менеджера выделим пункт QEMU/KVM сеанс пользователя, затем в меню Правка выберем пункт Свойства подключения и переключимся на вкладку Пространство данных.
Настройки пула пользовательского сеанса
Создадим два каталога: images для дисковых образов виртуальных машин и iso для ISO образов, из которых будет производиться установка операционных систем:
В левой панели окна менеджера пространств данных нажмём кнопку Добавить пул (с символом плюс).
Добавление пользовательского пула
В поле Название для пула с дисковыми образами укажем images, Тип — каталог в файловой системе, а Target Path — каталог на диске (в нашем случае — созданный ранее
/virt/images). Нажмём Готово и пул появится в списке. Подтвердим сохранение изменений.
Повторим то же самое, но для ISO образов:
- название — iso;
- target path —
/virt/iso.
Настроенные пулы пользовательского сеанса
Если всё сделано верно, в левой панели появятся два новых пула — images и iso. Выберем каждый и убедимся, что в чекбоксе Автозапуск при загрузке установлен флажок. Если это не так, исправим и нажмём Применить.
Пул с именем default теперь допускается удалить, хотя это и не обязательно. Для этого выберем его, нажмём кнопку Остановить пул, а затем Удалить пул и подтвердим намерение.
Настройка сети в пользовательском сеансе
Создадим сетевой мост для виртуальных машин:
Разрешим использование моста в qemu-bridge-helper:
Добавим правила для файрвола:
На этом настройка пользовательского сеанса завершена и можно приступать к установке гостевых операционных систем.
Подготовка к установке
Для установки нам потребуются:
- официальный ISO образ операционной системы Windows 10, который можно скачать с официального сайта Microsoft (30-дневная пробная версия);
- ISO образ с набором драйверов Virtio для гостевых операционных систем;
- образ дискеты с драйверами Virtio для ранней стадии установки.
Скачаем указанные образы, скопируем их в каталог /media/virt/iso (системный сеанс), либо
/virt/iso (пользовательский сеанс).
Создание гостевой ОС Windows 10
На главной панели инструментов нажмём кнопку Создать виртуальную машину или выберем одноимённый пункт из меню Файл.
В появившемся окне мастера на первом шаге выберем пункт Локальный ISO или cdrom.
Мастер создания виртуальной машины
На втором шаге мастера нажмём кнопку Обзор, выберем из списка загруженный ранее ISO образ и нажмём Выбор тома.
Оставляем флажок в чекбоксе Automatically detect from installation media/source, чтобы Virt Manager самостоятельно подобрал оптимальные параметры для виртуальной машины и жмём Вперёд.
Установка гостевой ОС из ISO образа
Указываем выделяемый виртуальной машине объём оперативной памяти и количество ядер процессора.
Выбор ресурсов CPU и GPU
Теперь создадим локальный дисковый образ для гостевой ОС.
Выбор пространства данных для VM
Установим флажок в чекбокс Настроить пространство хранения данных, а также точку около пункта Выбрать или создать дополнительное пространство данных и нажмём кнопку Настроить.
Создание нового тома внутри пула
В левой панели переключимся на пул images, затем нажмём кнопку Создать том.
Создание нового тома
Создадим новый том для гостевой ОС:
- название — любое, но без пробелов и русских букв;
- формат — qcow2;
- максимальный размер — не менее 40 ГБ.
Выбор созданного тома хранения данных
Выберем созданный том в списке и нажмём кнопку Выбор тома.
На заключительном шаге мастера будет предложено указать название для виртуальной машины (пробелы и русские буквы также не допускаются).
Финальный шаг мастера создания VM
Обязательно установим флажок в Проверить конфигурацию перед установкой и нажмём Готово.
Настройка гостевой ОС Windows 10
Мы не будем подробно описывать все параметры конфигурации гостевой ОС, а лишь остановимся лишь на самых важных, от правильной установки которых зависит успех всей нашей задачи.
Переключимся на страницу SATA диск 1, выберем пункт Дополнительные параметры и изменим шину диска с SATA на VirtIO.
Тонкие настройки виртуального накопителя
Здесь же допускается явно задать серийный номер накопителя, который будет передан гостевой ОС (если не указано, то генерируется автоматически), а также включить поддержку процедуры TRIM в случае если хранилище было создано на SSD накопителе.
Нажмём кнопку Добавить оборудование, выберем тип Хранилище.
Подключение дискеты с драйверами
Изменим Тип устройства на Устройство чтения дискет, затем установим точку в Выбрать или создать дополнительное пространство данных и нажмём кнопку Настроить.
Выбор файла образа дискеты с драйверами
В появившемся окне переключимся на пул iso, выберем образ дискеты, нажмём Выбор тома, а затем Готово.
Переключимся на страницу Видео и в поле Модель убедимся, что установлено значение QXL. Если это не так, внесём правки.
Все остальные параметры оставим по умолчанию и нажмём кнопку Начать установку.
Установка гостевой Windows 10
Запускаем стандартную установку данной ОС, выбираем редакцию, вводим или пропускаем (для получения 30 дневной пробной версии) серийный номер, принимаем лицензионное соглашение с конечным пользователем, затем Выборочная установка ибо нам требуется создать разделы на диске и установить драйвер VirtIO для ранней стадии загрузки системы.
Когда появится сообщение об ошибке о том, что не удалось загрузить драйверы, нажмём кнопку Загрузить, а затем в появишемся окне разрешим автоматический поиск при помощи нажатия OK.
Ошибка, связанная с отсутствием драйвера VirtIO
Укажем версию драйвера Red Hat VirtIO SCSI controller для Windows 10 и нажмём Далее.
Ручная установка драйвера VirtIO
С этого момента программа установки наконец обнаружит наш виртуальный накопитель и предложит создать разделы, а затем установить на него операционную систему.
Далее весь процесс установки вполне стандартный и описывать его мы не будем.
Установка драйверов Virtio гостевой ОС
По окончании установки сразу завершаем работу виртуальной машины (Пуск — Выключение), нажимаем кнопку Показать виртуальное оборудование на панели инструментов, переходим на страницу SATA CDROM 1, жмём Browse и внутри пула iso выбираем ISO-образ с гостевыми драйверами Virtio.
Подключение образа гостевых драйверов
Применим изменения, а затем перейдём на страницу Дисковод 1, нажмём кнопку Удалить и Применить, т.к. он более нам не требуется.
Удаление образа FDD с драйверами
На панели инструментов нажмём кнопку Показать графическую консоль, а затем Включить виртуальную машину.
Откроем Проводник Windows, перейдём на виртуальный CD диск D: и запустим программу установки virtio-win-gt-x64.exe.
Запуск установки гостевых дополнений Virtio
Выберем рекомендуемые Red Hat компоненты.
Выбор компонентов пакета драйверов Virtio
Разрешим установку драйверов с цифровой подписью Red Hat, нажав Установить.
Подтверждение установки драйверов Virtio
Установка гостевых дополнений SPICE
Для того, чтобы в гостевой ОС появилась полная поддержка обмена данными с буфером обмена хостовой ОС, динамическое изменение разрешения виртуального дисплея и т.д., установим внутри гостя пакет SPICE Guest Tools по прямой ссылке.
Запустим скачанный файл и выполним установку всех предложенных по умолчанию компонентов, включая дополнительные драйверы виртуального дисплея QXL. Перезагрузим виртуальную машину для вступления изменений в силу.
2 комментария к записи
На моей системе модуль вывода видео QXL работает значительно лучше Virtio и поддерживает автоматическое изменение разрешения виртуального экрана в зависимости от размера окна virt-manager.
Драйверы QXL входят в комплект гостевых дополнений Virtio.
Драйвер Virtio тоже должен поддерживать динамическое изменения размера.