Как установить и настроить KVM на Ubuntu

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *