В данной статье мы рассмотрим установку и базовую настройку гипервизора KVM на сервере под управлением Linux CentOS. Покажем, как создать виртуальную машину в KVM, изменить ее настройки, установить гостевую операционную систему и основные команды управления ВМ.
KVM (Kernel-based Virtual Machine) средство виртуализации в среде Linux, которое использует аппаратную виртуализацию на базе Intel VT или AMD SVM . С помощью KVM вы можете создавать изолированные виртуальные машины с собственным виртуальным аппаратным обеспечением: сетевыми картами, дисками, видеокартами и другими устройствами. На виртуальные машины можно уставить любую ОС (не только Linux).
Установка KVM в CentOS
При настройке KVM на сервере, нужно начать с проверки вашего процессора. Нужно узнать, поддерживает ли аппаратную виртуализацию CPU, установленный на вашем сервере. Из консоли сервера, выполните команду:
# cat /proc/cpuinfo | egrep "(vmx|svm)"
Если ваш процессор поддерживает технологию VT-x , у вас должен быть примерно такой вывод:
Если же команда ничего не выдала, но ваш процессор точно поддерживает виртуализацию, проверьте, вохможно данная опция отключена в BIOS сервера. Ищите параметры “Intel Virtualization Technology” или “SVM MODE” .
На моем сервере поддержка данной технологии включена, поэтому можно приступать к установке необходимых компонентов в CentOS через пакетный менеджер yum /dnf:
# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y
- qemu-kvm – сам гипервизор KVM;
- libvirt – библиотеки управления вирилизацией;
- virt-install – команды для управления виртуальными машинами KVM.
На сервер будет установлено большое количество пакетов, следите, чтобы у вас не возникло ошибок в процессе установки.
Теперь нужно добавить сервис libvirtd в автозагрузку и запустить его:
# systemctl enable libvirtd
# systemctl start libvirtd
Проверьте, загрузились ли модули ядра kvm_intel и kvm :
[root@localhost /]# lsmod | grep kvm
kvm_intel 188688 0_x000D_kvm 636931 1 kvm_intel_x000D_irqbypass 13503 1 kvm
Если у вас ничего не выводится, перезагрузите сервер и проверьте повторно.
Настройка сети в KVM
Теперь создадим каталоги, в которых будут храниться диски виртуальных машин и iso образы:
# mkdir -p /vz/{disk,iso}
Чтобы созданные виртуальные машины имели доступ в интернет, нам нужно настроить сеть через bridge . Для этого потребуется пакет bridge-utils , проверьте установлен ли он в Linux командой:
# rpm -qa | grep bridge-utils
Если нужно, установите его:
# yum install bridge-utils -y
После установки пакетов для KVM, в системе появился сетевой интерфейс virbr0 :
# ip a
Чтобы создать сетевой мост( bridge ), нужно настроить файл конфигурации для сетевого интерфейса сервера:
# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak
– делаем бэкап файла
# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0
— открываем для редактирования
Удалите все содержимое и замените на следующее:
DEVICE="enp1s0f0"_x000D_ONBOOT="yes"_x000D_BRIDGE=br0
В вашем случае, имя интерфейса может отличаться (смотрите через команду ip a).
После чего создайте файл:
# nano /etc/sysconfig/network-scripts/ifcfg-br0
с содержимым:
DEVICE="br0"_x000D_TYPE=BRIDGE_x000D_ONBOOT=yes_x000D_BOOTPROTO=static_x000D_IPADDR="IP_адрес_сервера"_x000D_ NETMASK="255.255.255.0"_x000D_GATEWAY="Основной_шлюз"_x000D_DNS1="77.88.8.8"_x000D_DNS2="8.8.4.4"
Где укажите свои данные: IP-адрес сервера и основной шлюз. После правки конфигурационных файлов сетевых интерфейсов нужно перезапустить есервис:
# service network restart
Чтобы проверить состояние bridge, используйте команду:
# brctl show
bridge name bridge id STP enabled interfaces_x000D_br0 8000.ac1f6b945206 no enp1s0f0_x000D_virbr0 8000.5254003f23cf yes virbr0-nic
Последним шагом нужно настроить перенаправление сетевого трафика:
# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
Теперь перезапустите сервис libvirtd :
# service libvirtd restart
На этом базовая настройка KVM закончена, можно создать виртуальную машину.
KVM: создание виртуальной машины
Перед созданием виртуальной машины, я скачал образ CentOS 8 с официального зеркала в директорию /vz/iso :
# cd /vz/iso && wget https://mirror.yandex.ru/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso
Чтобы создать новую виртуалную машину KVM, выполните:
virt-install -n test-centos
--noautoconsole
--network=bridge:br0
--ram 2048 --arch=x86_64
--vcpus=4 --cpu host --check-cpu
--disk path=/vz/disk/test-centos.img,size=32
--cdrom /vz/iso/CentOS-8.1.1911-x86_64-dvd1.iso
--graphics vnc,listen=IP,password=123456789
--os-type linux --os-variant=rhel7 --boot cdrom,hd,menu=on
- test-centos — имя ВМ;
- noautoconsole – после создания не нужно подключаться к консоли виртуальной машины автоматически;
- network – тип сети(в нашем случае bridge);
- ram — количество оперативной памяти в ВМ;
- vcpus – количество ядер процессора ( настройка vCPU в KVM );
- disk – виртуальный диск, path – путь до диска. size – объем (в дальнейшем его можно расширить/уменьшить );
- сdrom – виртуальный cdrom, в который монтируется iso образ для установки гостевой ОС;
- graphics — параметры подключения к машине с помощью графической консоли. Мы подключаемся через VNC, поэтому в listen указывает IP сервера, где создали ВМ и пароль для подключения в консоли виртуальной машины (password).
Чтобы ВМ загружалась автоматически, выполните:
# virsh autostart test-centos
Подключение к ВМ на KVM через VNC, установка ОС
Чтобы подключиться к виртуальной машине через VNC, нам нужно узнать порт, на котором она работает:
[root@local vz]# virsh vncdisplay test-centos
IP:0
0 означает, что порт для подключения по VNC 5900, если у вас будет другой результат, просто прибавляйте к 5900 цифру, которую выдаст вам команда.
Для подключения по VNC к серверам, я использую утилиту TightVNC . Запустите ее и укажите IP-адрес сервера и VNC порт, который мы узнали ранее (через двойное двоеточие).
Нажмите “ Connect ”, в открывшемся окне укажите пароль, который задали при создании ВМ. Если все сделали верно, у вас откроется консоль сервера, на которой запущена установка CentOS (или другой ОС, образ которой вы смонтировали).
Если у вас на сервере установлен файервол, откройте сетевые порты для VNC 5900-5910 в firewalld / iptables , этого количества должно хватить. После установки гостевой ОС на виртуальную машину, запустите ВМ с консоли сервера:
Чтобы выключить виртуальную машину KVM, используйте команду:
# virsh shutdown test-centos
Чтобы вывести список всех зарегистрированных виртуальных машин KVM:
# virsh list --all
Если вы предпочитаете графической управление, можете испольховат графическую консоль KVM — virt-manager .
На этом базовая настройка сервера для KVM и создание виртуальной машины окончено. На KVM можно создать неограниченное количество виртуальных машин, все зависит от ресурсов вашего сервера и ваших потребностей.