Меню Рубрики

Установка bridge kvm centos 7

Установка и настройка KVM на CentOS 7

Подготовка сервера

Проверяем наличие поддержки со стороны процессора:

cat /proc/cpuinfo | egrep «(vmx|svm)»

Если команда ничего не вернет, на сервере отсутствует поддержка виртуализации или она отключена в настройках БИОС. Сам KVM поставить на такой сервер можно, но при попытке ввести команду управления гипервизором мы получим ошибку «WARNING KVM acceleration not available, using ‘qemu’». В таком случае необходимо перезагрузить сервер, войти в БИОС, найти поддержку технологии виртуализации (Intel VT или AMD-V) и включить ее.

Создадим каталоги, в которых будем хранить все, что касается виртуализации (предлагаемые по умолчанию не удобные):

* каталог /kvm/images для виртуальных дисков; /kvm/iso — для iso-образов.

Установка и запуск

Установка выполняется из репозитория следующей командой:

yum install qemu-kvm libvirt virt-install

* где qemu-kvm — сам гипервизор; libvirt — библиотека управления виртуализацией; virt-install — утилита для управления виртуальными машинами.

systemctl enable libvirtd

Настройка сети

В данной инструкции рассмотрим использование сетевого моста.

Настраивая сетевой мост через удаленное подключение, внимательно проверяйте вводимые данные. В случае ошибки соединение будет прервано.

Устанавливаем пакет для работы с bridge:

Смотрим список сетевых интерфейсов и их настроек:

В моем примере были следующие данные:

1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp4s0f0:
mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.24/24 brd 192.168.1.255 scope global enp4s0f0
valid_lft forever preferred_lft forever
inet6 fe80::216:76ff:fe04:26c6/64 scope link
valid_lft forever preferred_lft forever
3: enp5s5: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic:
mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff

* из этого для нас важны enp4s0f0 — реальный сетевой интерфейс с настроенным IP-адресом 192.168.1.24, через который идет подключение сервера к локальной сети (из него мы будем делать мост); 00:16:76:04:26:c6 — mac-адрес реального ethernet адаптера; virbr0 — виртуальный сетевой адаптер.

Редактируем настройки реального адаптера:

ONBOOT=yes
BR > TYPE=Ethernet
DEVICE=enp4s0f0
BOOTPROTO=none

Создаем интерфейс для сетевого моста:

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.24
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=77.88.8.8

Перезапускаем сетевую службу:

systemctl restart network

Сетевые настройки должны измениться — в моем случае:

2: enp4s0f0:
mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
3: enp5s5: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:16:76:04:26:c7 brd ff:ff:ff:ff:ff:ff
4: virbr0: mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic:
mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:cd:86:98 brd ff:ff:ff:ff:ff:ff
6: br0:
mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 00:16:76:04:26:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.24/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::216:76ff:fe04:26c6/64 scope link
valid_lft forever preferred_lft forever

Настаиваем перенаправления сетевого трафика:

sysctl -p /etc/sysctl.d/99-sysctl.conf

systemctl restart libvirtd

Создание виртуальной машины

Смотрим доступные варианты гостевых операционных систем:

Для создания первой виртуальной машины вводим следующую команду:

virt-install -n FirstTest \
—autostart \
—noautoconsole \
—network=bridge:br0 \
—ram 1024 —arch=x86_64 \
—vcpus=1 —cpu host —check-cpu \
—disk path=/kvm/images/FirstTest-disk1.img,size=16 \
—cdrom /kvm/iso/CentOS-7-x86_64-Minimal-1611.iso \
—graphics vnc,listen=0.0.0.0,password=my_password \
—os-type linux —os-variant=rhel7 —boot cdrom,hd,menu=on

  • FirstTest — имя создаваемой машины;
  • autostart — виртуальная машина будет автоматически запускаться вместе с сервером KVM;
  • noautoconsole — после создания не подключается автоматически к консоли виртуальной машины;
  • network — тип сети (в нашем примере сетевой мост);
  • ram — объем оперативной памяти, который будет выделен;
  • vcpus — количество виртуальных процессоров;
  • disk — виртуальный диск: path — путь до диска; size — его объем;
  • cdrom — виртуальный привод с образом системы;
  • graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
  • os-variant — гостевая операционная система (весь список мы получали командой osinfo-query os, в данном примере устанавливаем Reв Hat 7 / CentOS 7).

Дожидаемся создание виртуальной машины. И переходим к подключению по VNC.

Подключение к виртуальной машине

Для установки операционной системы скачиваем VNC-клиент на компьютер администратора, например, TightVNC и устанавливаем его.

На сервере смотрим, на каком порту слушает VNC созданной машины:

virsh vncdisplay FirstTest

Это значит, что нужно к 5900 прибавить 0. Если результат команды будет :1 — 5900 + 1 = 5901 и так далее.

Читайте также:  Установка антенн и наладка телевизоров

Открываем порт на брандмауэре:

firewall-cmd —permanent —add-port=5900-5905/tcp

* в данном примере добавлено сразу 6 tcp-портов от 5900 до 5905.

Запускаем установленный TightVNC Viewer, в открывшемся окне вводим IP-адрес сервера KVM и порт, на котором слушает наша ВМ (в данном примере, 5900):

Нажимаем Connect. Программа запросит пароль — вводим тот, что указали при создании ВМ, (в данном примере, my_password). Мы подключимся к виртуальной машине, как будто, к ней подключен монитор или удаленная консоль KVM.

Базовые команды управления ВМ

1. Получить список созданных машин:

2. Включить / перезагрузить / выключить.

а) включить виртуальную машину можно командой:

* где FirstTest — имя созданной машины.

* посылает команду операционной системе на корректную перезагрузку.

* посылает команду операционной системе на корректное выключение.

г) выключить принудительно:

* грубо выключает ВМ. Может привести к потере данных. Способ стоит применять при полном зависании виртуалки.

д) отправить команду всем гостевым операционным системам:

for i in $(virsh list —name —state-shutoff); do virsh start $i; done

for i in $(virsh list —name —state-running); do virsh shutdown $i; done

* первыя команда запустит все ВМ, вторая — отправит команду на выключение.

3. Разрешаем автостарт для созданной ВМ:

virsh autostart FirstTest

4. Удаление виртуальной машины:

Удаляем виртуальную машину:

Удаляем виртуальный жесткий диск:

* где /kvm/images — папка, где хранится диск; FirstTest-disk1.img — имя виртуальног диска для удаленной машины.

5. Редактирование конфигурации виртуальной машины:

6. Увеличение диска

Получаем список дисков для виртуальной машины:

virsh domblklist FirstTest

Останавливаем виртуальную машину:

qemu-img resize /kvm/images/FirstTest-disk1.img +100G

* данной командой мы расширим дисковое пространство виртуального диска /kvm/images/FirstTest-disk1.img на 100 Гигабайт.

Запускаем виртуальную машину:

Меняем размер блочного устройства:

virsh blockresize FirstTest /kvm/images/FirstTest-disk1.img 200G

Получаем информацию о виртуальном диске:

qemu-img info /kvm/images/FirstTest-disk1.img

7. Работа со снапшотами

Создать снимок виртуальной машины можно командой:

virsh snapshot-create-as —domain FirstTest —name FirstTest_snapshot_2020-03-21

* где FirstTest — название виртуальной машины; FirstTest_snapshot_2020-03-21 — название для снапшота.

Список снапшотов можно посмотреть командой:

virsh snapshot-list —domain FirstTest

* данной командой мы просмотрим список всех снапшотов для виртуальной машины FirstTest.

Удалить снапшот можно так:

virsh snapshot-delete —domain FirstTest —snapshotname FirstTest_snapshot_2020-03-21

Управление через веб-интерфейс

Существуют различные веб-интерфейсы для управления гипервизором KVM. В данной инструкции мы рассмотрим oVirt.

Для его установки вводим команды:

yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm

После разворачиваем и настраиваем портал:

* после запуска команды система задаст ряд вопросов, на все, кроме ввода пароля, можно ответить по умолчанию (просто нажать Enter).

источник

Установка и настройка KVM (интерфейс Мост) на CentOS 7 / RHEL 7

KVM — это инфраструктура виртуализации для Linux, для которой процессор с аппаратным расширением виртуализации может принимать гостевые системы.

KVM — это удобное решение для тестирования различных операционных систем, если у вас нет возможности приобретать дорогостоящие и энергоемкие физические устройства.

В приведенном ниже руководстве представлена установка и настройка KVM (QEMU) вместе с конфигурацией Linux Bridge в операционной системе CentOS7 / RedHat7.

1. Проверьте поддержку виртуализации оборудования процессора

Наш процессор должен поддерживать аппаратную виртуализацию (VT-x), чтобы стать Hypervisor KVM и хостом виртуальных машин (гостевые операционные системы):

2. Отключите и остановите NetworkManager

Известно, что NetworkManager вызывает проблемы при работе с Linux Bridge, поэтому для нас лучше отключить его:

3. Установите пакеты, связанные с KVM

4. Запустите и включите демон libvirtd

5. Установите общесистемные привилегии для KVM

Нам нужно добавить нашего обычного пользователя tuxfixer в группу kvm, чтобы он мог запустить virt-manager

Нам также необходимо установить правила polkit (policy kit) для KVM.
Редактируем файл 49-polkit-pkla-compat.rules:

6. Создайте мост KVM Linux Bridge (модемный сетевой интерфейс гипервизора KVM с сетевыми интерфейсами VM)

В этом уроке мы хотим, чтобы виртуальные машины получали свои IP-адреса из той же сети, где подключен хост KVM Hypervisor, поэтому мы подключим его основной сетевой интерфейс (em1) к сетевым интерфейсам VM.

Для этого нам нужно создать Linux Bridge из интерфейса em1 на хосте KVM Hypervisor.

Текущая конфигурация сети Hypervisor (сразу после установки KVM):

Файл конфигурации ifcfg-em1 (до создания моста KVM Linux Bridge):

Для настройки сети KVM мы будем использовать приложение virt-manager, которое является удобным интерфейсом GUI для интерфейса командной строки KVM.

Примечание. Интерфейс virbr0 был создан автоматически вместе с установкой KVM и представляет виртуальную сеть, существующую «внутри» среды KVM с NAT (трансляция сетевых адресов).

Поскольку мы не нуждаемся в NAT в среде KVM (мы хотим скрыть интерфейс Hypervisor), мы можем удалить существующую виртуальную сеть KVM на основе интерфейса virbr0.

Запустите virt-manager от пользователя root:

… должно появиться окно virt-manager:

Правый щелчок на QEMU/KVM -> Details -> Virtual Networks -> Disable network: “default” -> Delete network: “default” based on virbr0

Теперь мы можем подключить интерфейс Hypervisor KVM (em1):

Читайте также:  Установка подготовки нефти цпс

Щелкните правой кнопкой мыши:QEMU/KVM -> Details -> Network Interfaces -> Add Interface:

  • Interface type: Bridge
  • Interface name: br-em1
  • Start mode: on boot
  • Activate now: enabled
  • IP settings: copy configuration from ’em1′
  • Bridge settings: STP on, delay 0.00 sec

… нажмите Finish, чтобы переопределить существующую конфигурацию и создать KVM Linux Bridge.

Теперь мы можем проверить вновь созданный Linux Bridge (br-em1):

Проверьте текущую конфигурацию IP (теперь IP назначается br-em1, а em1 действует теперь только как интерфейс):

Проверьте настройку моста:

Теперь KVM Linux мост настроен, и мы можем продолжить установку виртуалки.

источник

Настройка KVM на CentOS 7

Настройку KVM будем проводить на CentOS 7, minimal, x64. Выбор KVM при использовании CentOS был для меня достаточно очевиден — он поддерживается и продвигается Red Hat.

Итак, в локальной сети 192.168.88.0/24 есть хост (CentOS 7, имя SERVER.LOCAL и IP 192.168.88.2, сетевой адаптер enp1s0). На этом хосте мы хотим запустить несколько виртуальных машин, доступных из локальной сети. Технология виртуализации: KVM.

Подготовительные работы

Для начала вообще проверим, наш хост поддерживает виртуализацию или нет:

Если ок (еще бы нет. ), готовим сеть для роутинга трафика между виртуальными машинами и внешней сетью:

Ок. Дальше выберем тип виртуальной сети.

Bridge или nat?

Есть два варианта работы виртуальных машин в сети:

1) Виртуальные машины будут за nat, недоступные из внешней сети.
Создаваемые виртуальные машины по-умолчанию будут принадлежать внутренней виртуальной сети хоста (по-умолчанию 192.168.122.0/24) и будут иметь доступ во внешнюю сеть хоста (т.е. в сеть 192.168.88.0/24), а если маршрутизация на хосте настроена, то и в интернет тоже. Из локальной сети виртуальные машины будут недоступны до тех пор, пока вы не настроите проброс портов (forwarding) на хосте из сети хоста в виртуальную сеть.
+ Этот способ проще, т.к. не потребует создания дополнительного сетевого интерфейса — bridge.
+ Если внешний IP один, то может быть невозможным иной сценарий, как только пробрасывать порты.
+ Возможно, вам вообще необходимо создать закрытую сеть для виртуальных машин и вам уж точно не нужно публиковать их в сети хоста. Кто знает? Хозяин — барин!

2) Bridge — виртуальные машины будут видны в сети так же, как и обычные компьютеры, без всяких там nat и forwarding.
В этом случае виртуальные машины будут получать IP по DHCP от вашего обычного сервера, будут видны в сетевом окружении другими компьютерами и прочее.
+ Клиенты в сети не увидят разницу между виртуальным сервером и реальным.
— В случае с внешним IP для каждой виртуальной машины нужен будет свой IP, а это не всегда возможно.
— Надо немного потрудиться и подготовить сеть хоста для создания бриджа (bridge), на котором и будет висеть сеть виртуальных машин.

После установки kvm у вас уже будет готовая внутренняя сеть (вариант 1), вполне себе работоспособная, позволяющая гостевым виртуалкам выходить в интернет. Для простоты предлагаю использовать эту сеть, почувствовать, что к чему и потом, при желании, создать bridge для реализации второго варианта.

Устанавливаем KVM

Собственно, мы дорвались до установки виртуализации KVM, эмулятора QEMU и сопутствующих инструментов.

Устанавливаем необходимые пакеты:

# yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
# systemctl enable libvirtd && systemctl start libvirtd

Хранить образы виртуальных машин мы будем в новой папке /vms

Добавляем соответствующий контекст для нашей папки, чтобы SELinux не возмущалась:

# semanage fcontext —add -t virt_image_t ‘/vms(/.*)?’

и проверяем, применились ли они:

# ls -aZ /vms
drwxr-xr-x. root root unconfined_u:object_r:virt_image_t:s0 .
dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..

Ок, скачиваем из сети образ iso для той ОС, которая будет установлена на вирт. машине, например, тот же CentOS 7 minimal для будущего веб-сервера? Или Tails? Кто знает 🙂

Создаем первую виртуальную машину

После вышеперечисленных действий для виртуальных машин на хосте создан сетевой интерфейс virbr0 с IP 192.168.122.1:

Также создана виртуальная сеть default:

Пока давайте не будем ничего менять и создадим виртуальную машину, подключенную с сети default:

—graphics vnc,password=vm1password
Здесь мы указываем пароль и возможность подключиться к терминалу виртуальной машины с через VNC. Пароль может засветиться в логах, так что не пишите сюда что-то важное.

—network network=default — подключаем нашу виртуальную машину к виртуальной сети с именем default (с ней мы уже знакомы).
М.б. —network bridge:br0, например, если бы мы создали bridge с именем br0 для варианта номер 2.

Указанная выше команда может быть введена сразу, одной строкой, тут уж как удобнее:

virt-install —network network=default —name vm1 —ram=2048 —vcpus=1 —disk path=/vms/vm1.img,size=30,format=qcow2 —graphics vnc,password=vm1password —cdrom /vms-iso/CentOS-7-x86_64-Minimal-1503-01.iso —boot cdrom,hd,menu=on

После выполнения команды можете увидеть сообщение:

WARNING Unable to connect to graphical console: virt-viewer not installed. Please install the ‘virt-viewer’ package.
WARNING No console to launch for the guest, defaulting to —wait -1

Читайте также:  Установка пружин на уаз пикап

Нам и не надо, ведь у нас все равно хост виртуальных машин не имеет оконного менеджера. У меня так, во всяком случае.

Мужественно ждем. Процесс займет какое-то время.

После завершения команды посмотрим список виртуальных машин:

Вирт. машины можно запускать ( virsh start vm1 ), приостанавливать ( virsh suspend vm1 ), возобновлять ( virsh resume vm1 ), выключать ( virsh shutdown vm1 ) и много чего еще с ними делать. Итак, машина vm1 запущена (проверить можно командой virsh domstate vm1 ). Как к ней подключиться?

Подключаемся к виртуальной машине по VNC

На предыдущем этапе вы создали виртуальную машину, указали ей CDROM с операционной системой, а дальше что? Как вы планируете установить и настроить ОС? Да, есть варианты. Можно подготовить инфраструктуру и заливать готовые образы и др. Но мы с вами учимся и у нас нет ничего, кроме недавно скачанного с интернета файла образа диска iso. На самом деле все не сложно. Мы указали на предыдущем шаге параметр «—graphics vnc,password=vm1password». Он означает, что мы можем подключиться к терминалу (читай — экрану) виртуальной машины через VNC, например, программой TightVNC, указав IP хоста виртуальных машин и порт для подключения.

Нашей виртуальной машине был назначен порт VNC, подключившись к которому мы увидим «экран» виртуальной машины. Узнать, какой порт назначен конкретной vm1, можно командой:

# virsh vncdisplay vm1
127.0.0.1:0

Это означает, что порт VNC 5900+0=5900. Если бы результат был «127.0.0.1:1», порт VNC был бы 5901. И т.д.

Подключаться к порту 5900 надо к хосту виртуальных машин. Это на нем открыт этот порт, а не на виртуальной машине vm1.

По умолчанию, хост виртуальных машин (у нас это CentOS 7 minimal) не должен позволять подключение к любому порту кроме ssh (22/tcp). Не советую вам открывать доступ к портам VNC из-вне. Это небезопасно. Для того, чтобы получить доступ к экрану виртуальной машины с рабочей станции Windows, с которой я все настраиваю, я сделал туннелирование порта в Putty: 5900 -> 127.0.0.1:5900.

После успешного логина по ssh, можно запустить TightVNC и указать порт 127.0.0.1::5900 (обратите внимание на двойное двоеточие).

Если после перезагрузки машины потребуется снова подключить к ней образ iso, это можно сделать командой:

# virsh attach-disk vm1 /vms-iso/CentOS-7-x86_64-Minimal-1503-01.iso hdb —type cdrom —mode readonly

где hdb — имя блочного устройства CDROM. Это имя можно узнать просмотрев конфиг вирт. машины ( virsh edit vm1 ).

Управлять виртуальными машинами с хоста можно консольным набором virsh. С некоторыми командами вы уже познакомились. Наберите в консоли:

и вы увидите, сколько всего можно сделать.

Включение/выключение виртуальных машин

Если вы создадите виртуальную машину и попытаетесь ее выключить, то несмотря на рапорт о выполнении, машина может не выключиться:

Здесь дело в поддержке acpi со стороны виртуальной машины. Не во всех случаях вирт. машина обработает сигнал о выключении или перегагрузки (virsh shutdown/restart vm1). В этой ситуации могут быть следующие варианты:

Выдергивание кабеля питания:

Вы прекрасно понимаете, к чему это может привести. Хотя на начальном этапе, пока ОС не установлена, появление ошибок

Приостановка работы вирт. машины:

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

Включение поддержки acpi в виртуальной машине.

Тут могут быть разные рецепты, например так (выполнить в вирт. машине, а не на хосте):

yum install acpid
chkconfig acpid on
service acpid start

Автостарт виртуальных машин

Для того, чтобы при перезапуске хоста виртуальная машина vm1 запускалась автоматически:

# virsh autostart vm1
Domain vm1 marked as autostarted

Выключить автостарт для vm1:

# virsh autostart vm1 —disable Domain vm1 unmarked as autostarted

Контроль сетевой активности виртуальной машины KVM

Может быть полезным оценивать сетевую активность виртуальной машины — например, сколько трафика она потребила. Также это может помочь при отладке сети или поиске утечек трафика. Например:

Тут все понятно, кроме откуда взять название адаптера vnet0. Можно в дампе конфигурации вирт. машины (virsh dumpxml vm1) найти секцию network и в ней параметр dev:

Подключение и отключение привода cdrom

Подключить к vm3 iso-образ в качестве cdrom:

# virsh attach-disk vm3 /data/vms-iso/CentOS-7-x86_64-Minimal-1511.iso hda —type cdrom —mode readonly
Disk attached successfully

Здесь надо быть внимательным, т.к. после пути до iso-файла на хосте идет указание имени устройства cdrom у виртуальной машины vm3. Если вы не уверены, какое имя устройства надо указать (hda, hdb или др.), сверьтесь с конфигурацией виртуальной машины:

Отключить iso-образ (не удалить устройство из гостя, а просто «извлечь cd-диск из привода»):

# virsh attach-disk vm5 «» hda —type cdrom —mode readonly

А еще созданные виртуальные машины можно клонировать. Удачи!

источник

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

Adblock
detector