
В этом подробном руководстве мы расскажем, как установить и настроить 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 и создать надежные виртуализированные среды. Это позволит вам консолидировать серверы, изолировать службы и воспользоваться мощными функциями управления ВМ.