Установка и настройка гипервизора KVM

Картинка
Обновлено: 2024-08-14 11:30:08

Ведение своего блога-шпаргалки хочу начать с установки и использования своего любимого гипервизора KVM.

Небольшой пролог ИМХО
Proxmox для эникейщиков.
Vmware - для крупного бизнеса.
Hyper-v - вообще зашквар.
Virtualbox я тут рассматривать не стану, это можно отнести к детскому саду.

Сперва необходимо убедиться, что наш процессор поддерживает аппаратную виртуализацию. Думаю, что на сегодняшний день этот шаг лишний, так как уже в каждом утюге поддержка сего есть, но тем не менее давайте проверим.

egrep -c '(vmx|svm)' /proc/cpuinfo

если выхлоп показывает больше нуля, двигаемся дальше.

Либо командой
lscpu | grep Virtualization

Для примера ответ должен быть таким
Virtualization: VT-x
Virtualization type: full

Опционально: ещё один способ проверить совместимость можно командой:
kvm-ok
выхлоп должен показать
INFO: /dev/kvm exists
KVM acceleration can be used

Если команда kvm-ok возвращает
-bash: kvm-ok: команда не найдена
либо
-bash: kvm-ok: command not found
необходимо сперва установить
apt install cpu-checker

Так как у нас абсолютно голый, ванильный дистрибутив Debian, на котором ничего нет, установим необходимое:

Предварительная подготовка:
  1. Обновим кэш пакетов - apt update
  2. Ставим SSH, [настраиваем] и убираем сервачок куда-нибудь на антресоль, чтоб не мешался. Далее подключаемся к нему и продолжаем настройку.
  3. apt install chrony для того, чтоб иметь самое точное время
  4. apt install htop - будем поглядывать на нагрузку
  5. apt install vim - для редактирования конфигов
  6. timedatectl set-timezone Asia/Vladivostok - станвим часовой пояс. В моём случае это Владивосток
  7. Обязательно добавить к переменной PATH путь /sbin в .bashrc рута
  8. export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ну и для применения всего сделанного отправим сервер (чтоб наверняка) в ребут.

Предлагаю придерживаться правила хранения дистрибутивов и виртуальных образов в одном месте, а не там, куда тулит их гипервизор. Поэтому создаём в корне следующие папки:
mkdir -p /kvm/{images,iso}

Ну и сопсна ставим всё необходимое
apt install qemu-kvm libvirt-daemon libvirt-daemon-system virtinst libosinfo-bin osinfo-db-tools bridge-utils

  • qemu-kvm - основной пакет виртуализации на базе ядра KVM, который позволяет использовать технологию аппаратной виртуализации
  • libvirt-daemon - это демон виртуализации
  • libvirt-daemon-system — файлы конфигурации демона libvirt
  • virtinst — утилита управления виртуальными машинами
  • libosinfo-bin — для просмотра семейств возможных для установки ОС (osinfo-query os)
  • osinfo-db-tools — Для обновления семейства ОС
  • bridge-utils — Для организации сетевого моста виртуальных машин

Вышеупомянутая команда вытянет ещё кучу зависимостей, не переживайте — это необходимо

Как правило список семейств ОС утилиты libosinfo-bin устаревший, поэтому мы актуализируем его ручками.
Переходим на сайт
https://releases.pagure.org/libosinfo/
сливаем wget’ом актуальный файл osinfo-db-годмесяцчисло.tar.xz
В моём примере
wget https://releases.pagure.org/libosinfo/osinfo-db-20240701.tar.xz

Обновляем БД семейства ОС
osinfo-db-import --system osinfo-db-20240701.tar.xz

Запускаем демон виртуализации
systemctl enable --now libvirtd

Для безопасности ограничим запуск от обычного пользователя
usermod -aG libvirt,kvm <имя пользователя, кому предоставляем доступ>

Настраиваем сеть
Приводим главный сетевой конфиг к следующему виду
vim /etc/network/interfaces

auto eno1
iface eno1 inet manual

Далее создаём конфиг бриджа
vim /etc/network/interfaces.d/brkvm0

auto brkvm0
iface brkvm0 inet dhcp
bridge_ports eno1
bridge_stp off
bridge_waitport 0
bridge_fd 0

Далее переходим в папку images
cd /kvm/images

Скачиваем дистрибутив, который будем устанавливать. Для примера возьмём мой любимый Debian. Идём на сайт debian, жмём правой кнопкой на ссылке скачивания, копируем ссылку, в консоли нашего сервера пишем wget и жмём сочетание клавиш shift + insert

Если будет ответ
bash: wget: команда не найдена
или
bash: wget: command not found

То ставим необходимый пакет
apt install wget

жмём два раза вверх на курсоре, что повторить предыдущую команду для скачивания дистрибутива и жмём enter

Ну и разворачиваем виртуальную машину с debian

Сперва создадим диск для неё
qemu-img create -f qcow2 -o size=50G /images/test.qcow2

Далее запускаем установку самого debian
virt-install -n test \
--autostart \
--noautoconsole \
--network=bridge:brkvm0 \
--ram=4096 --arch=x86_64 \
--vcpus=2 --cpu host-passthrough --check-cpu \
--disk path=/kvm/images/test1.qcow2 \
--cdrom /kvm/iso/debian-12.6.0-amd64-netinst.iso \
--graphics vnc,listen=0.0.0.0,password=123 \
--os-variant=debian12 --boot cdrom,hd,menu=on

Для подключения к виртуальной машине рекомендую использовать TightVNC
Узнаём порт
virsh vncdisplay test
:1

Отсчёт идёт с 5900, то есть к 5900 прибавляем 1 = 5901
Узнаём IP адрес нашего гипервизора
ip a | grep inet
Открываем tightvnc вводим ip адрес гипервизора с портом
172.16.14.6:5901