Виртуальная машина в реальной локальной сети (на базе KVM)



KVM (Kernel-based Virtual Machine) — программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine).

Помимо прочих замечательных сервисов, описанных ранее, и не только, сервер на основе Linux это прекрасная, надёжная и стабильная платформа для виртуализации. Предположим у нас мощный есть сервер с 8ми ядерным процессором, с 64 гигами памяти, с рэйдом терабайт на 12 и так далее, такое железо сложно загрузить одним лишь самба-шарингом или ftp демоном, контроллером домена и т.д. Но можно сделать и так что наш сервер будет работать и за троих, а то и за четверых, то есть будет содержать одновременно несколько виртуальных серверов на базе одного реального, что позволит оптимально загрузить железку.

Все эти виртуальные серверы будут работать аналогично реальным и будут, так же как и реальные серверы, полноценным участником локальной сети посредством технологии сетевого моста.

Развернуть на виртуальных серверах можно всё что угодно - контроллер домена, повторитель контроллера домена, samba шаринг, Windows Server с rdp подключениями, и т.д. Но, не получиться например сервер видео наблюдения для аналоговых камер, потому что они должны физически подключаться к платам захвата, но может я и ошибаюсь и есть технологии, которые могут передать такие платы на управление виртуальной машине.

В этом примере мы создадим виртуальный Ubuntu Server на базе такого же Ubuntu сервера, поставим на него webmin и попробуем из машины, которая находится в одной локальной сети с этими серверами зайти на web управляшку webmin нашего виртуального сервера. Это будет очень простая демонстрация, и её на основе можно будет понять принцип.

Предположим наша сеть лежит в диапазоне адресов 192.168.3.0 - 192.168.3.255. И наши адреса будут такими:

* 192.168.3.1 Общий шлюз
* 192.168.3.251 Сервер носитель
* 192.168.3.15 Виртуальный сервер

Этапы работы:

* Установка пакетов qemu kvm

* Установка минимальной оболочки для сервера

* Копирование ISO на сервер носитель

* Установка виртуального сервера через менеджер виртуальных машин

* Редактируем сетевую конфигурацию сервера носителя чтобы прописать мост

* В свойствах нашего виртуального сервера в качестве сетевого адаптера выбираем мост

Итак, приступаем! Для начала имейте в виду один пикантный момент на стадии установки сервера носителя! Дело в том что, развёрнутый образ виртуальной машины, по умолчанию, разместится в директорию /var/lib/libvirt/images/. Поэтому, я например, при установке сервера хоста, точку монтирования /var разместил на отдельном большом разделе, ну а если точнее, на основном рейд массиве. В дальнейшем тот же самый /var можно использовать и как самба шаринг (например: /var/sharing, или как ftp контейнер например: /var/ftpfiles и т.д.)

Установка:

sudo apt-get install qemu-kvm libvirt-bin virt-manager virt-viewer

#Проверка аппаратной поддержки:
kvm-ok

По умолчанию менеджер виртуальных машин на этапе установки, ищет образ установочника в каталоге /var/lib/libvirt/images/, (кстати, туда же и расположится развёрнутая виртуальная машина в формате *.img), но нам можно и в /home/ кинуть, потому что мы будем иметь дело с графической оболочкой, и в нашем распоряжении будет волшебная кнопочка "обзор". Собственно давайте эту самую графическую оболочку и установим. Здесь возникает спорный момент, связанный с вопросом: "А на какой #*# линуксовому серваку графическая оболочка?". Да, конечно, установить виртуальную машину можно и с помощью консоли, но конкретно в этой статье я хочу рассмотреть способ, который более подходит для первых опытов в этой области.

Графическую оболочку будем ставить самую легковесную, которая доступна через утилиту "TASKSEL", и называется она "lubuntu minimal installation".

Из-за своей легковесности эта оболочка не может запустить серьёзную мультимедиа, (буквально вчера я тестировал одноплатный компьютер Orange Pi PC, с установленной оболочкой lubuntu, так вот на неё kodi даже не установился, ругаясь на то что в оболочке не хватает мультимедийных мощей), но её вполне достаточно чтобы запустить наш менеджер виртуальных машин.

# Установка графической оболочки:

sudo tasksel

# Ставим чек напротив lubuntu minimal installation, табом переходим на OK и жмём ENTER


# Ждём пока настроится пакет

# теперь в оболочке запускаем Virtual Machine Manager:

# И через него создаём новую виртуальную машину:

После того, как мы установили наш виртуальный сервер, хотя лучше до того, нужно сказать носителю, что его сетевой интерфейс "eth0" теперь станет мостом для нашего виртуального сервера. Для этого файл сетевых настроек "сервера хоста" приводим к такому вот виду:


#auto eth0
#iface eth0 inet static

auto br0
iface br0 inet static
address 192.168.3.251
gateway 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0


# Далее в настройках нашей виртуальной машины меняем сеть с nat на br0.

Основное дело сделано! Теперь мы можем с любой машины в сети зайти на терминал нашего виртуального сервера через SSH и сделать все необходимые настройки уже удалённо! Мы установим вебмин и проведём обновление. Кстати запустить виртуальную машину после перезагрузки хоста мы можем также удалённо через вебмин хоста. Для этого:

# Ставим модуль менеджера виртуальных машин для webmin:
Качаем из раздела downloads tar архив и пристёгиваем его в webmin не распаковывая
https://code.google.com/archive/p/virt-manager/downloads
# В оболочке Webmin -> Webmin Configuration -> Webmin Modules
# Выбираем "From uploaded file" кликаем Browse button, выбираем наш скаченный файл и инсталлируем. После этого в разделе System появится пункт Virtual Machine Manager, в нём мы сможем запустить, остановить и даже удалить виртуальную машину.
# также полезно знать это:
# просмотр запущенных вирт машин через консоль:
virsh
list --all
# остановка вирт машини "virt01" через консоль:
virsh
shutdown virt01



------------------------------------------------------- --------------------------------------------------------------------------
счетчик посещений