В данной статье мы рассмотрим установку и базовую настройку гипервизора KVM на сервере под управлением Linux CentOS. Покажем, как создать виртуальную машину в KVM, изменить ее настройки, установить гостевую операционную систему и основные команды управления ВМ.
KVM (Kernel-based Virtual Machine) средство виртуализации в среде Linux, которое использует аппаратную виртуализацию на базе Intel VT или AMD SVM. С помощью KVM вы можете создавать изолированные виртуальные машины с собственным виртуальным аппаратным обеспечением: сетевыми картами, дисками, видеокартами и другими устройствами. На виртуальные машины можно уставить любую ОС (не только Linux).
Содержание[Скрыть]
Установка KVM в CentOS
При настройке KVM на сервере, нужно начать с проверки вашего процессора. Нужно узнать, поддерживает ли аппаратную виртуализацию CPU, установленный на вашем сервере. Из консоли сервера, выполните команду:
1 |
# cat /proc/cpuinfo | egrep "(vmx|svm)" |
Если ваш процессор поддерживает технологию VT-x, у вас должен быть примерно такой вывод:
Если же команда ничего не выдала, но ваш процессор точно поддерживает виртуализацию, проверьте, вохможно данная опция отключена в BIOS сервера. Ищите параметры “Intel Virtualization Technology” или “SVM MODE”.
На моем сервере поддержка данной технологии включена, поэтому можно приступать к установке необходимых компонентов в CentOS через пакетный менеджер yum/dnf:
1 |
# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y |
- qemu-kvm – сам гипервизор KVM;
- libvirt – библиотеки управления вирилизацией;
- virt-install – команды для управления виртуальными машинами KVM.
На сервер будет установлено большое количество пакетов, следите, чтобы у вас не возникло ошибок в процессе установки.
Теперь нужно добавить сервис libvirtd в автозагрузку и запустить его:
1 2 |
# systemctl enable libvirtd # systemctl start libvirtd |
Проверьте, загрузились ли модули ядра kvm_intel и kvm:
1 |
[root@localhost /]# lsmod | grep kvm |
1 2 3 |
kvm_intel 188688 0 kvm 636931 1 kvm_intel irqbypass 13503 1 kvm |
Если у вас ничего не выводится, перезагрузите сервер и проверьте повторно.
Настройка сети в KVM
Теперь создадим каталоги, в которых будут храниться диски виртуальных машин и iso образы:
1 |
# mkdir -p /vz/{disk,iso} |
Чтобы созданные виртуальные машины имели доступ в интернет, нам нужно настроить сеть через bridge. Для этого потребуется пакет bridge-utils, проверьте установлен ли он в Linux командой:
1 |
# rpm -qa | grep bridge-utils |
Если нужно, установите его:
1 |
# yum install bridge-utils -y |
После установки пакетов для KVM, в системе появился сетевой интерфейс virbr0:
1 |
# ip a |
Чтобы создать сетевой мост(bridge), нужно настроить файл конфигурации для сетевого интерфейса сервера:
1 |
# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak – делаем бэкап файла |
1 |
# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 — открываем для редактирования |
Удалите все содержимое и замените на следующее:
1 2 3 |
DEVICE="enp1s0f0" ONBOOT="yes" BRIDGE=br0 |
В вашем случае, имя интерфейса может отличаться (смотрите через команду ip a).
После чего создайте файл:
1 |
# nano /etc/sysconfig/network-scripts/ifcfg-br0 |
с содержимым:
1 2 3 4 5 6 7 8 9 |
DEVICE="br0" TYPE=BRIDGE ONBOOT=yes BOOTPROTO=static IPADDR="IP_адрес_сервера" NETMASK="255.255.255.0" GATEWAY="Основной_шлюз" DNS1="77.88.8.8" DNS2="8.8.4.4" |
Где укажите свои данные: IP-адрес сервера и основной шлюз. После правки конфигурационных файлов сетевых интерфейсов нужно перезапустить сервис:
1 |
# service network restart |
Если у вас после рестарта network пропал доступ к серверу, попробуйте перезагрузить его. Иногда это требуется для корректной настройки bridge.
Чтобы проверить состояние bridge, используйте команду:
1 |
# brctl show |
1 2 3 |
bridge name bridge id STP enabled interfaces br0 8000.ac1f6b945206 no enp1s0f0 virbr0 8000.5254003f23cf yes virbr0-nic |
Последним шагом нужно настроить перенаправление сетевого трафика:
1 |
# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p |
Теперь перезапустите сервис libvirtd:
1 |
# service libvirtd restart |
На этом базовая настройка KVM закончена, можно создать виртуальную машину.
KVM: создание виртуальной машины
Перед созданием виртуальной машины, я скачал образ CentOS 8 с официального зеркала в директорию /vz/iso:
1 |
# cd /vz/iso && wget |
Чтобы создать новую виртуалную машину KVM, выполните:
1 2 3 4 5 6 7 8 9 |
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).
Чтобы ВМ загружалась автоматически, выполните:
1 |
# virsh autostart test-centos |
Подключение к ВМ на KVM через VNC, установка ОС
Чтобы подключиться к виртуальной машине через VNC, нам нужно узнать порт, на котором она работает:
1 |
[root@local vz]# virsh vncdisplay test-centos |
1 |
IP:0 |
0 означает, что порт для подключения по VNC 5900, если у вас будет другой результат, просто прибавляйте к 5900 цифру, которую выдаст вам команда.
Для подключения по VNC к серверам, я использую утилиту TightVNC. Запустите ее и укажите IP-адрес сервера и VNC порт, который мы узнали ранее (через двойное двоеточие).
Нажмите “Connect”, в открывшемся окне укажите пароль, который задали при создании ВМ. Если все сделали верно, у вас откроется консоль сервера, на которой запущена установка CentOS (или другой ОС, образ которой вы смонтировали).
Если у вас на сервере установлен файервол, откройте сетевые порты для VNC 5900-5910 в firewalld/iptables, этого количества должно хватить. После установки гостевой ОС на виртуальную машину, запустите ВМ с консоли сервера:
Чтобы выключить виртуальную машину KVM, используйте команду:
1 |
# virsh shutdown test-centos |
Чтобы вывести список всех зарегистрированных виртуальных машин KVM:
1 |
# virsh list --all |
Если вы предпочитаете графической управление, можете испольховат графическую консоль KVM — virt-manager.
На этом базовая настройка сервера для KVM и создание виртуальной машины окончено. На KVM можно создать неограниченное количество виртуальных машин, все зависит от ресурсов вашего сервера и ваших потребностей.
Ваш комментарий будет первым