Установка kvm astra linux

Обновлено: 04.07.2024

Ранее я уже писал об установке Qemu-KVM в Debian. Но, на мой взгляд, информация получилась неполной. Плюс я не учёл некоторые нюансы. Потому предлагаю вашему вниманию обновлённую статью по установке виртуальной машины Qemu-KVM. Старую статью, естественно, удалю.

Думаю, объяснять что такое виртуальная машина, не стоит. Вы наверняка это знаете (раз читаете эту статью). Если нет - прочитайте это. Мы же остановимся непосредсвенно на сабже. Qemu-KVM - это проект по объединению двух замечтальнейшийх (на мой взгляд) технологий полной виртуализации. Qemu - это своего рода "эмулятор компьютера", который поддерживает великое множество аппаратных архитектур. В нём можно запустить практически любую ОС для любого устройства (к примеру я запускал старые версии Mac OS X, который для PowerPC). Недостатком Qemu является его медлительность вследствии отсутствия аппратного ускорения. И тут на помощь приходит другой проект - KVM. Или Kernel Virtual Machine. KVM - это технология ядра Linux, которая позволяет обеспечить аппаратное ускорение при полной виртуализации. Недостатком KVM является поддержка только архитектуры x86

Почему Qemu-KVM? Для Linux это самый рекомендуемый проект виртуализации. Он работает быстрее, чем VirtualBox и VMware Player (по моим тестам), KVM - это родная для Линукса технология. Плюс, если вы обладатель хорошего игрового компьютера с двумя видеокартами, вы можете установить в Qemu-KVM Windows, пробросить в неё одну из видеокарт, и забыть о перезагрузке в другую ОС. Захотели поиграть - запустили виртуалку с виндой и играете. Производительность будет 95% от производительности установленной на "железо" винды. Но это просто шикарно, на мой взгляд. Об этом я напишу отдельную статью. Будет интересно :)

А теперь опишу план наших действий. Во первых, установку я буду проводить на примере Debian 8.2 GNOME 64 bit, хотя, особых различий в других графических окружениях не будет. Во-вторых - я буду описывать работу с KVM только в графическом режиме (мы ведь не на сервер будет его ставить). Поэтому никаких терминалов, скриптов и так далее, как обычно поступают в случае серверной виртуализации. В третьих - советую вам дополнительно прочитать документацию к Qemu и KVM (ссылки дам в конце статьи). Вам это очень пригодится, если вы хотите по-максимуму использовать весь потенциал этой связки. Ну чтож, план наших действий ясен. Теперь этапы действий:

  • установка qemu-kvm;
  • установка графического менеджера и дополнительных утилит;
  • настройка сетевого моста;
  • создание хранилища для виртуальных машин;
  • установка гостевой системы.

egrep '(vmx|svm)' /proc/cpuinfo

В выводе команды должны присутствовать либо vmx, либо svm. Если их нет - проверьте включена ли виртуализация в BIOS (ищите пункты Intel VT-i или аналогичный для AMD). Если ничего нет - значит не повезло.

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

sudo apt install qemu-kvm bridge-utils libvirt-bin virt-manager

Добавляем себя в группу libvirt:

sudo adduser $USER libvirt

Теперь настроим сеть. Для того чтобы все виртауальные машины могли выходить в сеть и связываться друг с другом, нужно создать сетевой мост и виртаульные сетевые карты для каждой виртуалки (tap-устройства). Так как виртуальные машины мы будем устанавливать из графического интерфейса, то создавать вручную tap'ы не нужно. Virt Manager сделает это за нас при каждом запуске. Нам нужно только настроить мост. Для начала включим маршрутизацию в ядре:

sudo nano /etc/sysctl.conf

Ищем строку net.ipv4_forward=0 и меняем её значение на 1. Сохраняем и:

Далее я буду предполагать следующее: 1) на вашем компьютере есть одна сетевая карта, получающая ip-адрес от роутера. 2) вы выходите в интернет через 3G-модем, и сетевая карта у вас свободна. Этот вариант предполагает побольше ручной работы, но он проверен неоднократно (у самого так на одной из машин). Итак, открываем файл interfaces:

sudo nano /etc/network/interfaces

Его содержимое по умолчанию такое:

Меняем его содержимое. Для первого варианта:

Для второго варианта:

Примечание: если вам не нужно автоматическое подключение Интернета через модем после старта системы, уберите из конфига строки auto ppp0 и
iface ppp0 inet wvdial . В противном случае, убедитесь что при запуске системы, модем вставлен в USB-порт.

Сохраняем. Теперь для варианта с модемом, нужно установить программу дозвона wvdial:

sudo apt install wvdial

Правим конфиг (обратите внимание: в качестве примера используется 3G-модем Beeline. Примеры конфигов для других модемов вы без труда найдёте в интернете):

sudo nano /etc/wvdial.conf

Сохраняем. Теперь модем будет включаться сразу после загрузки системы. Строка up route del default br0 удаляет маршрут по умолчанию через мост. Если этого не сделать, вы не сможете соединиться с Интернетом, так как трафик будет идти по мосту, а не через 3G-модем.

Последним этапом нам нужно сказать фаерволлу, чтобы он пропускал в сеть трафик от наших виртуалок и обратно. Для этого можно пойти двумя путями: написать скрипт с несколькими правилами для iptables, который будет запускаться вместе с системой, или ввести эти правила вручную и сохранить их. Я воспользуюсь первым вариантом. Для второго вам нужно будет установить пакет iptables-persistent и просто поочерёдно вводить правила (с использованием sudo). Итак. создаём скрипт (в любом текстовом редакторе). Вставляем туда следующее содержимое:

Сохраняем его как gateway.sh и даём права на выполнение (либо в свойствах файла, либо в терминале командой chmod +x gateway.sh). Теперь вы можете либо запускать его вручную, после того как загрузилась система, либо добавить в автозагрузку. Для этого переместите скрипт в

/.config/autostart (в файловом менеджере включите показ скрытых файлов, и вы увидите каталог .config в домашней директории).

Теперь всё готово для установки виртуальной машины. Из меню приложений запускаем Virt Manager (менеджер виртуальных машин):


Кликаем правой кнопкой на строке localhost и выбираем Детали. Переходим на вкладку Хранилище. Нам нужно указать каталог (или раздел диска/диск) для хранения виртуальных машин.


В левом нижнем углу жмём на плюсик (Добавить пул), указывам тип хранилища и путь к нему.


На вкладке Сетевые интерфейсы, можете проверить, всё ли работает.


Теперь нажимаем Файл - New virtual machine. Указываем путь к образу диска, тип виртуальной машины. Далее указываем количество оперативной памяти для неё и количество ядер процессора. Далее указываем наше хранилище и нажимаем Новый том. Указываем название, тип оставляем qcow2, и размер. Это будет виртуальный жёсткий диск. Если планируете устанавливать систему с графической оболочкой и кучей программ, дайте места побольше (гигов 50). На последней вкладке ставим галочку на Изменить настройки перед запуском, проверяем что в качестве сетевого устройства выбран наш мост, пишем любое название для виртуалки и жмём Завершить. Перед вами откроется окно параметров этой виртуальной машины.






Переходим на вкладку Процессор, и ставим галочку на Скопировать настройки процессора хост-системы.


Далее на вкладку Диск, и указываем тип шины VirtIO (самая производительная).


Далее на вкладку Сеть (следующая), и также указываем vitio. На вкладке Дисплей укажите Spice, а на вкладке Видео - QXL. Обычно эта связка обеспечивает максимальную производительность отрисовки графики, но, если хотите, можете поэксперементировать. Учтите, что для гостевых систем Windows, требуется отдельная установка QXL-драйвера (в самой Windows).



Теперь когда всё готово, в левом верхнем углу жмём Начать установку. И ставим систему как обычно, за одним исключением: как только установщик начнёт автоматически настраивать сеть, нажмите Отмена, и выберите Настроить сеть вручную. Укажите для виртуалки желаемый IP-адрес (в нашем случае 192.168.0.3), маску подсети (255.255.255.0), шлюз (шлюзом будет адрес хоста, тоесть 192.168.0.2) и DNS-сервер (здесь просто укажите Гугловский 8.8.8.8). И всё. Дальше ничего делать не нужно. Ставьте систему и настраивайте. В общем-то, всё. Описанные действия - это способ заменить, скажем, VirtualBox на более лучшую альтернативу. Прочитав документацию, вы поймёте, насколько широки возможности Qemu-KVM. Я намеренно не стал описывать здесь дополнительные консольные параметры и методы запуска виртуальных машин через терминал, так как это далеко не всегда нужно на домашней машине. Об этом я напишу отдельную статью, по настройке домашнего многофункционального сервера (который также сможет выступать в качестве сервера виртуальных машин). Для тех, кто по каким-то причинам не понял написанное, или остались непонятные моменты - предлагаю посмотреть ролик, в котором я уже не опишу, а покажу, как всё это добро устанавливать и настраивать. Если у вас есть предложения или дополнения к статье - пишите в комментариях.

Дополнение: для работы графических окружений, которым необходимо 3D ускорение, установите пакеты spice-vdagent и xserver-xorg-video-qxl

Для автоматизированной установки системы виртуалтзации QEMU/KVM в дистрибутив Astra Linux Common Edition включен пакет astra-kvm. Пакет может быть установлен с помощью графического менеджера пакетов или из командной строки командой:

При установке этого пакета будет автоматически установлен сам Virt-manager и выполнены все действия, необходимые для установки и запуска системы виртуализации. Дополнительно для работы в сети будет установлен пакет ebtables.

При установке пакетов текущий пользователь будет автоматически добавлен в группы:

Других пользователей, которые должны работать с виртуализацией, следует добавить в указанные группы вручную:

sudo usermod -a -G kvm,libvirt,libvirt-qemu <имя_пользователя>

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

Для хранения образов виртуальных машин при установке пакетов автоматически создается пул данных. По умолчанию этот пул данных располагается в каталоге /var/lib/libvirt/images. Дополнительные пулы данных могут быть созданы по мере необходимости.


Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6), РУСБ.10015-16 исп. 1

При использовании виртуализации QEMU/KVM в Astra Linux Special Edition для обеспечения работы с виртуальными машинами, поддерживающими ненулевые мандатные метки, все пулы данных должен находиться на файловых системах, поддерживающих работу с мандатными атрибутами (Ext4, cepfs, ocfs2).

Установка пакетов

Для работы с системой виртуализации QEMU/KVM в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6), РУСБ.10015-16 исп. 1 необходимо установить следующие пакеты:

  • libvirt-daemon-system;
  • libvirt0;
  • qemu-kvm.

Команда для установки:

sudo apt install libvirt-daemon-system libvirt0 qemu-kvm

При установке пакетов в Astra Linux Special Edition будет создан каталог /var/lib/libvirt/images (принятый по умолчанию каталог пула данных) которому будкт назначены мандатные атрибуты, достаточные для размещения в нём данных с ненулевыми мандатными метками:

drwx--x--xm-- 2 root root Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr /var/lib/libvirt/images

  • kvm;
  • libvirt;
  • libvirt-admin (Внимание! этой группы нет в Astra Linux Common Edition);
  • libvirt-qemu.

Команда для добавления пользователя в группы:

sudo usermod -a -G kvm,libvirt,libvirt-admin,libvirt-qemu <имя_пользователя>

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

Работа с QEMU/KVM

При работе рекомендуется контролировать содержимое /var/lib/libvirt/images и своевременно удалять неиспользуемые диски.

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

Создание собственных пулов для пользователей

При работе с Astra Linux Specail Edition образы дисков виртуальных машин (в том числе загрузочные образы для установки ОС на виртуальных машинах) регистрируются в системе виртуализации как файловые объекты с высоким уровнем конфиденциальности.
При этом все вышележащие каталоги в файловой системе также автоматически получают высокий уровень конфиденциальности. В связи с этим не рекомендуется размещать образы дисков в домашних каталогах пользователей, так как присвоение высокого уровня конфиденциальности домашнему каталогу существенно затруднит работу пользователя - владельца этого каталога.

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

sudo mkdir -p /vrt/pool1
sudo chmod 750 /vrt/pool1
sudo chown <имя_пользователя> /vrt/pool1

Для запрета добавления новых образов ВМ в пул пользователю необходимо ограничить доступ к директории правами на чтение (r-x).

Дальнейшие действия выполнять от имени пользователя - владельца пула.
Создать пул в ранее созданных каталогах можно следующими командами:

virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1
virsh -c qemu:///system pool-build pool1
virsh -c qemu:///system pool-start pool1
virsh -c qemu:///system pool-autostart pool1
virsh -c qemu:///system pool-list --all

Образец диалога с выводом команд:

$ virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1
Pool pool1 defined
$ virsh -c qemu:///system pool-build pool1
Pool pool1 built
$ virsh -c qemu:///system pool-start pool1
Pool pool1 started
$ virsh -c qemu:///system pool-autostart pool1
Pool pool1 marked as autostarted
$ virsh -c qemu:///system pool-list --all
Name State Autostart
-------------------------------------------
pool1 active yes

При работе в Astra Linux Special Edition при создании пула необходимые мандатные атрибуты будут присвоены ему автоматически (при условии, что на ОС установлено обновление безопасности БЮЛЛЕТЕНЬ № 20190222SE16). Проверить мандатные атрибуты пула можно командой:

$ pdp-ls -Md /vrt/pool1
drwxr-xr-xm-- 2 vrtadmin vrtadmin Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:CCNRA /vrt/pool1

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

virsh -c qemu:///system define vm1.xml
virsh -c qemu:///system start vm1

$ virsh -c qemu:///system define vm1.xml
Domain vm1 defined from vm1.xml

$ virsh -c qemu:///system start vm1
Domain vm1 started

Проверить статус ВМ:

$ virsh -c qemu:///system list --all
Id Name State
----------------------------------------------------
3 vm1 running

Проверить параметры подключения к ВМ

Подключиться к виртуальному монитору ВМ

Сброс пользовательских настроек

Для сброса старых пользовательсктх настроек virt-manager удалить файл .config/dconf/user

Устранение ошибок

При появлении ошибки custom процессора нужно поставить в настройках пункт "использовать архитектуру процессора хоста".

При ошибке network 'default' not active выполнить следующие команды:

sudo virsh net-start default
sudo virsh net-autostart default

После выполнения этих команд после перезагрузки сеть network 'default' будет запускаться автоматически.

Настройка фиксированных IP-адресов

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

вставить строки с мак-адресами виртуальных адаптеров, например, как указано ниже:

Дисклеймер: данная статья не рассчитана на опытных линуксоидов, что уже собаку съели, куря мануалы OpenNebula, – для них большая часть текста покажется либо наивной, либо очевидной, либо наивно-очевидной. Мы хотим не рассказать о том, что же это за зверь такой, а скорее порекомендовать, на что обратить внимание, если вас поставили перед фактом, что надо переходить на российское ПО, и вам предстоит импортозаместить систему виртуализации. Ну, или пока запустить ее в тестовом режиме.


Не секрет, что сертифицированные операционные системы ООО «РусБИТех-Астра» названы в честь городов-героев, и самая известная из них — Astra Linux Special Edition "Смоленск" (ОС специального назначения). Про нее слышали все, кто так или иначе сталкивался с вопросом импортозамещения ПО. Есть еще специализированные релизы «Новороссийск», «Севастополь», «Керчь», «Мурманск» и «Ленинград». Они уже не так широко известны, так как предназначены для менее массовой архитектуры, чем x86-64. Но наш сегодняшний разговор пойдет не об операционной системе, а о продукте ООО «РусБИТех-Астра», который носит имя города Брест.

Что же это такое? Полное название продукта — программный комплекс средств виртуализации «Брест». По заявлению разработчика, это «современный инструментарий для управления виртуальными структурами любой сложности с применением средств защиты ОС Astra Linux Special Edition».

Собственно, базовый функционал виртуализации реализован в составе ОС с помощью KVM (модуль ядра Linux), QEMU (эмуляция аппаратного обеспечения), libvirt (демон и набор инструментов для управления виртуализацией) и virt-manager (приложение для управления виртуальными машинами).

Это классическая схема реализации виртуализации в Linux-системах, такая связка используется плюс-минус во всех отечественных дистрибутивах. Гораздо интереснее становится, если мы хотим выйти за рамки виртуализации для тестов на отдельно взятом сервере. Тут уже начинаются различия:

ROSA Linux предлагает использовать oVirt (логично, учитывая то, что базовый дистрибутив RHEL).

ALT Linux – PVE или OpenNebula.

Astra Linux – OpenNebula.

Программный комплекс "Брест" предлагает три варианта использования:

«Облако» ресурсов и виртуальных машин (ВМ).

Локальная и серверная виртуализация
Данные сценарии подразумевают создание и использование на локальном компьютере или сервере нескольких ВМ, управляемых с помощью virt-manager. Он позволяет подключать удаленные физические серверы по протоколам TCP (SASL+Kerberos), SSL/TLS и ssh для управления виртуализацией на нескольких серверах.

«Облако» ресурсов и виртуальных машин
Такой сценарий позволяет создавать и управлять большим количеством ВМ, при этом доступны все преимущества «облачного» решения: масштабируемость, высокая доступность и безопасность. ПК «Брест» позволяет через единый web-интерфейс управлять машинами, работающими в режиме дискретного и мандатного управления доступом, с учетом требований в части контроля целостности.

И вот о некоторых практических особенностях установки и настройки ПО в этом случае я и хотел бы сегодня рассказать.

Для локально-серверного сценария достаточно одного физического сервера. «Облако» ресурсов и виртуальных машин тоже можно установить и настроить на одном сервере, когда свободных серверов мало, а широкий спектр возможностей «облака» задействовать хочется, например, если нужен web-интерфейс управления и полноценное разграничение прав. Естественно, что, если сервер один, ни о какой высокой доступности речь не идет.

Компоненты для установки будут следующие:

ОС Astra Linux Special Edition «Смоленск».

Контроллер домена (Astra Linux Directory (ALD) или FreeIPA).

А если нужна высокая степень доступности?

Контроллер домена можно виртуализировать в качестве локальной виртуализации, а Frontend — установить параллельно с узлом виртуализации. Frontend-серверов неплохо бы сделать несколько. Их должно быть нечетное количество, так что необходимо минимум 3 сервера.

Данный сценарий можно реализовать с доменом как на базе ALD, так и FreeIPA. По множеству причин второй вариант мне нравится больше, и именно его я рекомендую использовать, чтобы как минимум избежать прописывания в /etc/hosts адресов всех Frontend-серверов и узлов виртуализации.

Нам понадобится общее хранилище данных, которое будет подключено к Frontend-серверу и узлам виртуализации. В качестве такового можно использовать распределенное хранилище CEPH, файловые системы NFS, CIFS, OCFS2 и CEPHFS-сервера или хранилища с доступом по протоколу iSCSI.

При планировании совместного хранилища важно помнить, что OpenNebula требует для работы минимум два подключенных LUN'а, о чем чуть более подробно расскажу ниже.

Но сначала надо понять философию OpenNebula: виртуальная машина (ВМ) – не отдельная единица, а лишь запускаемый экземпляр заранее созданного шаблона.
Процедура создания ВМ следующая:

Создаем образ диска.

Создаем шаблон ВМ, к которому подключаем образ диска.

Создаем экземпляр ВМ по шаблону.

Для хранения образов шаблонов нужен один LUN (тип хранилища — IMAGE), а для хранения данных запускаемых экземпляров – второй (тип хранилища — SYSTEM). Все изменения диска шаблона в процессе работы экземпляра находятся именно во втором хранилище. Ну, и чтобы не смешивать все в одну/две кучи, рекомендуется добавить отдельный LUN для ISO-образов (но тоже с типом хранилища IMAGE). Кстати, если загружать образы виртуальных жестких дисков, экспортированных из других систем виртуализации (да и в принципе, если загружать любые образы), необходимо обеспечить достаточно свободного места на Frontend-сервере, так как он сначала кэширует загружаемый файл в директорию /var/tmp.

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

Сеть в сценарии с «облаком» ресурсов и виртуальных машин настраивается двумя способами в зависимости от того, должна ли она иметь доступ наружу или нет.

Если такой доступ есть, в качестве моста, предоставляющего ВМ доступ к сети, используются физические сетевые адаптеры узлов виртуализации. В этом нам поможет bridge-utils – и да, настраивать его базовую конфигурацию придется из консоли. Самое главное – запомнить имя, которое мы дали мосту, это имя должно быть одинаковым на всех узлах.

Для частной сети без выхода во внешнюю сеть используется программный коммутатор Open vSwitch. Он тоже настраивается из консоли (имена мостов также запоминаем и не путаем). И не забываем настроить линки Open vSwitch-коммутаторов между узлами, чтобы сеть была едина на всех узлах.

Как итог, могу сказать, что с данной системой виртуализации вполне можно иметь дело, особенно если все хорошо спланировать (вообще универсальный совет):

Сколько будет серверов и где расположить домен-контроллер.

Сколько будет Frontend-серверов и где они будут размещаться.

Какое хранилище будет использовано и как оно будет подключаться.

Заранее стоит продумать сетевые настройки и выделить пулы адресов как для инфраструктуры системы виртуализации, так и для ВМ (в том числе и для внутренней сети).

Не забыть про "плавающий" высокодоступный адрес RAFT и адреса для модулей удаленного администрирования IPMI (необходимы для обеспечения отказоустойчивости ВМ).

Зарезервировать адреса под расширение инфраструктуры.

Важно помнить, что придется менять набор тех привычек, с которым мы подходим к виртуализации. Как и со всеми продуктами на базе Linux, многое придется делать из консоли (подробности можно найти на ресурсе разработчика), но с этим пора смириться, если импортозамещение уже дышит вам в спину.

В российской операционной системе Astra Linux редакции Orel есть встроенное средство управления виртуализацией Virt-Manager. С его помощью можно организовать сервер виртуализации или просто создать виртуальную машину с необходимой ОС. Процесс создания виртуальной машины достаточно простой, наверно даже проще чем в VirtualBox или VMware. Для того чтобы вы в этом убедились сами давайте создадим виртуальную машину.

Лучшие статьи на тему настройки ОС Astra Linux, рекомендую прочитать.

Добавление виртуальной машины

Astra виртуальные машины

Как в Astra Linux создать виртуальную машину

Добавление виртуальной машины

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

Потом настраиваем память и процессор, указываем необходимое количестве.


Четвертый шаг отвечает за настройку носителя, указываем объем диска виртуальной машины.

Astra Linux как установить виртуальную машину

И в последнем шаге вводим имя виртуальной машины и указываем тип сетевого интерфейса, NAT, Сетевой мост и т.д.

Astra Linux добавление виртуальной машины

После чего начнется установка операционной системы на виртуальную машину. Описывать процесс установки Windows 7 думаю нет смысла.

Astra Linux установка виртуальной машины

По его окончанию у вас будет создана виртуальная машина в Astra Linux. Как сами видите все достаточно просто. Если вы раньше имели дело с виртуализацией то создать виртуальную машину Astra Linux сможете без проблем.

Читайте также: