KVM (Kernel-based Virtual Machine) — это технология виртуализации с открытым исходным кодом, которая позволяет создавать и запускать виртуальные машины в Linux. KVM требует поддержки аппаратной виртуализации, которая есть в большинстве современных процессоров.В этом подробном руководстве мы расскажем, как установить и настроить KVM на Ubuntu 20.04/22.04. Мы пройдем через следующие шаги:
- Установите необходимые пакеты
- Проверьте аппаратную поддержку виртуализации
- Загрузка модулей ядра KVM
- Создайте группу пользователей KVM
- Создание виртуальной машины KVM с помощью CLI
- Создание виртуальной машины KVM с помощью Virt Manager (GUI)
- Управление виртуальными машинами KVM
- Оптимизации и лучшие практики
К концу этого руководства у вас будет установлен и настроен KVM, и вы сможете создавать виртуальные машины как с помощью CLI, так и с помощью графического интерфейса. Давайте приступим!
Предварительные условия
Прежде чем устанавливать KVM, давайте пройдемся по предварительным требованиям:
- Операционная система Ubuntu 20.04/22.04
- Доступ администратора (root) к системе
- Поддержка виртуализации процессора Intel VT-x или AMD-V включена в BIOS
- Не менее 2 ГБ оперативной памяти (рекомендуется 4 ГБ)
Чтобы проверить, поддерживает ли ваш процессор аппаратную виртуализацию, выполните эту команду:
$ egrep -c '(vmx|svm)' /proc/cpuinfoЕсли результат равен 1 или больше, ваш процессор поддерживает аппаратную виртуализацию.
Также необходимо убедиться, что виртуализация включена в BIOS. Перезагрузите систему, войдите в BIOS setup и включите Intel VT-x/AMD-V.
Теперь перейдем к установке KVM.
Установка KVM и других необходимых пакетов
Для использования KVM нам нужно установить несколько пакетов. Выполните эти команды, чтобы установить KVM и другие необходимые утилиты:
$ sudo apt update
$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-managerЭто установит основные пакеты:
- qemu-kvm — гипервизор KVM и эмулятор процессора
- libvirt-daemon-system — Главный демон, управляющий виртуальными машинами и гипервизором
- libvirt-clients — Клиентские инструменты для взаимодействия с libvirt
- bridge-utils — Необходим для создания сетевого моста
- virt-manager — графический интерфейс для управления виртуальными машинами (опционально)
Убедитесь в правильности установки, проверив версию KVM:
$ kvm --versionВ результате должна отобразиться версия установленного KVM:
QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.28)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developersТеперь KVM и связанные с ним утилиты установлены. Далее мы загрузим необходимые модули ядра.
Загрузка модулей ядра KVM
Для работы KVM требуется kvm и kvm_intel/kvm_amd загружаемые модули ядра.
Проверьте, загружены ли они:
$ lsmod | grep kvmЕсли они не загружены, выполните команду:
$ sudo modprobe kvm
$ sudo modprobe kvm_intelЭто загрузит kvm и kvm_intel модули. Убедитесь, что они загружены:
$ lsmod | grep kvmВ выводе должны появиться модули:
kvm_intel 204800 0
kvm 593920 1 kvm_intelМодули KVM теперь загружены и готовы к использованию.
Настройка группы пользователей KVM
Для повышения безопасности и контроля доступа мы создадим специальную группу KVM и добавим в нее пользователей.
Создайте kvm группу:
$ sudo groupadd kvm Добавьте своего пользователя в kvm группу:
$ sudo usermod -aG kvm $USERДобавьте всех остальных пользователей, которым нужен доступ к KVM, в группу kvm группу.
Теперь мы можем продолжить создание виртуальных машин.
Создание виртуальной машины KVM (CLI)
Давайте создадим виртуальную машину KVM с помощью инструментов командной строки.
Выполним следующие действия:
- Создание хранилища для ВМ
- Создайте виртуальный сетевой мост
- Определите ресурсы виртуальной машины — ядра процессора, память и т. д.
- Запустите установку виртуальной машины
Сначала создайте образ диска, который будет использоваться для хранения ВМ:
$ sudo qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu-20.qcow2 10GЭто создаст образ диска формата qcow2 по адресу /var/lib/libvirt/images/ubuntu-20.qcow2 емкостью 10 ГБ.
Далее нам нужно создать сетевой мост, чтобы ВМ могла подключаться к сети.
Редактировать /etc/netplan/00-installer-config.yaml и добавьте сетевой мост:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
enp0s8:
dhcp4: yes
bridges:
br0:
interfaces: [enp0s3]
dhcp4: no
addresses: [192.168.122.1/24]
gateway4: 192.168.122.1
nameservers:
addresses: [8.8.8.8,1.1.1.1]Это создаст мост для интерфейса enp0s3 и назначит ему IP-адрес 192.168.122.1.
Примените конфигурацию:
$ sudo netplan applyТеперь у нас готовы хранилище и сеть. Давайте определим ресурсы ВМ с помощью файла определения CLI под названием ubuntu-vm.xml:
$ sudo nano ubuntu-vm.xmlДобавьте это содержимое:
<domain type="kvm">
<name>ubuntu-vm</name>
<memory unit="GiB">2</memory>
<vcpu>2</vcpu>
<os>
<type arch="x86_64">hvm</type>
</os>
<devices>
<disk type="file" device="disk">
<source file="/var/lib/libvirt/images/ubuntu-20.qcow2"/>
<target dev='vda'/>
</disk>
<interface type="bridge">
<source bridge="br0"/>
</interface>
<graphics type="vnc" listen='0.0.0.0' port="-1"/>
</devices>
</domain>Это определяет домен KVM с:
- 2 ГБ ОЗУ
- 2 виртуальных процессора
- Диск, указывающий на образ ubuntu-20.qcow2
- Сетевой интерфейс, подключенный к мосту br0
- Графика VNC для удаленного доступа
Теперь запустим установку виртуальной машины:
$ sudo virt-install --import --name ubuntu-vm --ram 2048 --disk /var/lib/libvirt/images/ubuntu-20.qcow2,size=10 --vcpus 2 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics vnc --noautoconsole --print-xml > ubuntu-vm.xml
$ sudo virsh define ubuntu-vm.xml
$ sudo virsh start ubuntu-vmЭто запустит установку Ubuntu 20.04 из ISO-образа. Вы можете подключиться к консоли VNC для завершения установки.
После завершения установки и загрузки виртуальной машины проверьте, работает ли она:
$ sudo virsh listВ результате будет показана работающая ВМ:
Id Name State
----------------------------------------------------
2 ubuntu-vm runningМы успешно создали виртуальную машину KVM с помощью инструментов CLI!
Создание виртуальной машины KVM (графический интерфейс)
Для управления виртуальными машинами KVM можно также использовать графический интерфейс, например Virt Manager.
Установите Virt Manager, если вы еще этого не сделали:
$ sudo apt install virt-managerЗапустите Virt Manager из командной строки или из среды рабочего стола.
Нажмите кнопку Создать новую виртуальную машину, чтобы запустить мастер создания новой виртуальной машины.
Пройдите через мастер, чтобы определить ресурсы виртуальной машины, хранилище, сеть и т. д.
Например, выберите импорт существующего образа диска, введите путь к созданному ранее образу qcow2, например /var/lib/libvirt/images/ubuntu-20.qcow2.
Выполните оставшиеся шаги, просмотрите сводку и нажмите Finish, чтобы создать ВМ.
Теперь виртуальная машина должна быть создана и выключена. Щелкните на ней правой кнопкой мыши и выберите Run (Запустить), чтобы запустить ее.
Подключитесь к консоли VNC, чтобы завершить установку ОС.
Теперь мы создали виртуальную машину KVM с помощью графического инструмента virt-manager. Использование графического интерфейса может упростить управление несколькими виртуальными машинами.
Управление виртуальными машинами KVM
Теперь у нас установлен KVM и созданы виртуальные машины, давайте перейдем к управлению виртуальными машинами.
Перечислите все виртуальные машины:
$ sudo virsh list --allЭто позволит перечислить все активные и неактивные виртуальные машины.
Запуск виртуальной машины:
$ sudo virsh start ubuntu-vmВыключение ВМ:
$ sudo virsh shutdown ubuntu-vmПринудительное отключение питания ВМ:
$ sudo virsh destroy ubuntu-vmУдалить ВМ:
$ sudo virsh undefine ubuntu-vmЭто приведет к удалению конфигурации ВМ, но не удалит образ диска.
Приостановить/возобновить работу ВМ:
$ sudo virsh suspend ubuntu-vm
$ sudo virsh resume ubuntu-vmПерезагрузить ВМ:
$ sudo virsh reboot ubuntu-vmПодключение к консоли VNC:
$ sudo virt-viewer ubuntu-vmОткроется окно VNC для взаимодействия с графической консолью виртуальной машины.
Состояние ВМ:
$ sudo virsh domstate ubuntu-vmСтатистика ВМ:
$ sudo virsh domstats ubuntu-vmЗдесь рассмотрены основные задачи управления ВМ с помощью KVM. Для более сложных операций управления вы можете обратиться к man-страницам virsh.
Оптимизации и лучшие практики
Вот несколько советов по оптимизации производительности и эффективности KVM:
- Используйте паравиртуализированные драйверы (virtio) для дисков и сети. Это повышает пропускную способность ввода-вывода.
- Используйте хранилище на базе LVM. Создайте группу томов для образов виртуальных машин, чтобы обеспечить гибкое распределение.
- Используйте сетевые мосты вместо NAT для повышения производительности сети.
- Включите вложенную виртуализацию, если вы хотите запускать виртуальные машины внутри гостевых виртуальных машин.
- Выделяйте ядра процессора/память в соответствии с рабочей нагрузкой. Не перераспределяйте ресурсы.
- Регулярно делайте снимки ВМ перед серьезными изменениями конфигурации.
- Контролируйте использование ресурсов ВМ для выявления узких мест.
- Размещайте критически важные ВМ на машинах с резервным хранилищем/сетью (высокая доступность).
- Изолируйте типы ВМ, используя различные мостовые сети и VLAN.
Соблюдение лучших практик поможет обеспечить безопасность, стабильность и масштабируемость вашей инфраструктуры KVM.
Заключение
Мы установили KVM на Ubuntu 20.04/22.04, создали виртуальные машины с помощью CLI и Virt Manager, а также рассмотрели управление и оптимизацию KVM.
KVM представляет собой экономичное решение для виртуализации в Linux с открытым исходным кодом. Благодаря отличной производительности и широкому распространению, это отличный гипервизор для запуска гостевых виртуальных машин Linux.
Мы рекомендуем вам продолжить изучение возможностей KVM и создать надежные виртуализированные среды. Это позволит вам консолидировать серверы, изолировать службы и воспользоваться мощными функциями управления ВМ.