Базовая настройка виртуализации KVM с OvS на CentOS 7
Руководство по настройке KVM виртуализации на CentOS 7 с программным коммутатором Open vSwitch
Установка Open vSwitch
Open vSwitch — программный многоуровневый коммутатор с открытым исходным кодом, предназначенный для работы в гипервизорах и на компьютерах с виртуальными машинами.
Имея один активный физический интерфейс на сервере, базовая конфигурация Open vSwitch будет выглядеть следующим образом:
Добавляем бридж и в него добавляем наш физический интерфейс:
ovs-vsctl add-br ovs-br0 ovs-vsctl add-port ovs-br0 eno1
Проверяем:
# ovs-vsctl show 393b7f74-1112-4a02-a2c7-8fbd8fbdfe01 Bridge "ovs-br0" Port "ovs-br0" Interface "ovs-br0" type: internal Port "eno1" Interface "eno1" ovs_version: "2.5.0"
Вносим изменения в настройки интерфейсов:
/etc/sysconfig/network-scripts/ifcfg-eno1
TYPE=OVSPort DEVICETYPE=OVSIntPort OVS_BRIDGE=ovs-br0 NAME=eno1 UUID=dd849b3c-5fae-4f33-bc40-e7bbb4eba55b DEVICE=eno1 ONBOOT=yes IPV6INIT=no
/etc/sysconfig/network-scripts/ifcfg-ovs-br0
DEVICE=ovs-br0 NM_CONTROLLED=no PEERDNS=yes ONBOOT=yes TYPE=OVSBridge BOOTPROTO=static IPADDR=XX.XX.XX.XX NETMASK=255.255.255.0 GATEWAY=X.XX.XX.XX DNS1=X.XX.XX.XX HOTPLUG="no"
Перезагружаем сеть.
systemctl restart network.service
Установка необходимых пакетов и инструментов виртуализации
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
Создаем каталог для хранения образов виртуальных серверов и образов ОС:
mkdir /home/vm mkdir /home/iso
Для удобства я использую симлинки в директорию пользователя:
cd /var ln -s /home/vm ln -s /home/iso
А также создаем отдельную папку под конфигурацию:
mkdir /home/config
Создание виртуального сервера
Создаем тестовый сервер с настройками по умолчанию. Не забываем загрузить образ системы, которую будем устанавливать.
virt-install --network network=default --name TestVM --ram=1024 --vcpus=1 --disk path=/var/vm/testvm.img,size=20,format=qcow2 --graphics vnc,password=password --cdrom /var/iso/CentOS-7-x86_64-Minimal-1511.iso --boot cdrom,hd,menu=on
Команды можно вводить одной строкой.
virt-install --network network=default --name TestVM --ram=1024 --vcpus=1 --disk path=/var/vm/testvm.img,size=20,format=qcow2 --graphics vnc,password=password --cdrom /var/iso/CentOS-7-x86_64-Minimal-1511.iso --boot cdrom,hd,menu=on
Базовые параметры:
–network network=default
: Подключаем виртуальный сервер к виртуальной сети с именем default
–name
: Указываем имя виртуального сервера
–ram=
: Указываем размер выделяемой оперативной памяти для сервера
–vcpus=
: Указываем количество процессоров которое выделяем для сервера
–disk
: Указываем расположение, формат и размер виртуального диска
–graphics vnc,password=password
: Указываем пароль и возможность подключатся к терминалу виртуального сервера через VNC
–cdrom
: Указываем расположение образа с которого будем устанавливать систему
–boot
: Указываем что подключено при загрузке
После запуска можем наблюдать приблизительно следующую информацию:
Запуск установки... Выделение ресурсов «testvm.img»... 20 GB 00:00:00 Создание домена... 0 B 00:00:00 Установка домена продолжается. Ожидание до завершения установки...
В настройках при создании сервера мы указали что можем подключатся к терминалу через VNC ключом –graphics vnc,password=password
. Подключаемся. Узнать порт, который был назначен виртуальном серверу можно командой:
virsh vncdisplay TesVM
Порт VNC как правило 5900+0=5900
. Если результат предыдущей команды был 127.0.0.1:1
, то порт VNC будет 5901
. И так далее..
Подключаться к порту необходимо по IP хост-сервера.
В случае успешной установки ОС, в консоли хоста наблюдаем следующие сообщения:
Работа домена завершена. Продолжение... Домен создан. Перезапуск гостевой системы...
Настроить libvirt для работы с OvS можно только через редактирование конфигурационного XML виртуального сервера.
virsh edit <vm>
Находим секцию конфигурации сети нашего виртуального сервера:
<interface type='network'> <mac address='52:54:00:15:78:4e'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
И приводим её к следующему виду:
<interface type='bridge'> <mac address='52:54:00:15:78:4e'/> <source bridge='ovs-br0'/> <virtualport type='openvswitch'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
После запуска виртуального сервера проверяем конфигурацию OvS и наблюдаем успешное добавление порта:
# ovs-vsctl show 393b7f74-1112-4a02-a2c7-8fbd8fbdfe01 Bridge "ovs-br0" Port "vnet0" Interface "vnet0" Port "ovs-br0" Interface "ovs-br0" type: internal Port "eno1" Interface "eno1" ovs_version: "2.5.0"
Управление виртуальными серверами
Просмотр текущих виртуальных серверов.
# virsh list --all ID Имя Статус ---------------------------------------------------- - TestVM выключен
Включение виртуального сервера.
virsh start TestVM
Отключение виртуального сервера.
virsh shutdown TestVM
Имитация отключения кабеля питания.
virsh destroy TestVM
Приостановка работы сервера.
virsh suspend TestVM
Подключение ISO-образа к виртуальному серверу.
virsh attach-disk TestVM /home/iso/CentOS-7-x86_64-Minimal-1511.iso hda --type cdrom --mode readonly
Отключение ISO-образа (Не физическое удаление устройства, а извлечение диска)
virsh attach-disk TestVM "" hda --type cdrom --mode readonly
Автоматический запуск виртуального сервера при старте хост системы:
virsh autostart TestVM
Отключить автозапуск для сервера:
virsh autostart TestVM --disable
Работа со снепшотами
Cоздать снепшот виртуальной машины:
virsh snapshot-create <VM_NAME>
Откатиться к нужному снепшоту:
virsh snapshot-revert TestVM <номер снепшота вм>
virsh snapshot-list <имя вм> - список снепшотов для указанной ВМ
Изменение параметров виртуального сервера
Параметры виртуального сервера можно изменять редактируя XML-файл.
Первый вариант - сохранить конфигурацию в XML формате:
virsh dumpxml TestVM > TestVM.xml
Затем загрузить её обратно:
virsh define TestVM.xml.xml
Второй вариант - использовать команду virsh edit
. При использовании команды конфигурационный файл сервера будет открыт в системном редакторе по умолчанию, а по завершении редактирования автоматически сохранит конфигурацию.
virsh edit TestVM
На этом базовое знакомство с KVM завершено.
Более подробная информация по настройке и работе с KVM будет опубликована в последующих статьях.