- Создание профиля KVM
- Содержание
- Профиль kvm [ править ]
- Создание профиля вручную [ править ]
- Требования к окружению [ править ]
- Формат манифеста для машин kvm [ править ]
- Создание образа виртуальной машины [ править ]
- Добавление лицензии [ править ]
- Упаковка bundle [ править ]
- Установка kvm альт линукс
- Расположение основных конфигов
- Создание VPS
- Создание VPS Windows с поддержкой virtio
- Создание VPS без virtio
- Удаление VPS
- Управление ресурсами
- Проброс PCI-устройств внутрь домена
- Сменить диск в приводе на VPS без перезагрузки
- Отправка комбинаций клавиш
- Настройка сети в KVM
- Содержание
- Настройка сети в KVM [ править ]
- Пользовательская сеть [ править ]
- Внутренний виртуальный мост [ править ]
- Решение: [ править ]
- Публичный мост [ править ]
- Маршрутизация/iptables [ править ]
- VDE [ править ]
- Известные баги [ править ]
- Отказы сети в гостевых Windows [ править ]
Создание профиля KVM
Образ виртуальной машины KVM предназначен для переноса виртуальной машины на другой компьютер.
Содержание
Профиль kvm [ править ]
В этом документе описано создание профиля (bundle) для виртуальной машины под управлением KVM. Профиль представляет из себя архив tar, содержащий следующие обязательные файлы:
- Манифест — файл, содержащий информацию обо всех файлах профиля, а также информацию, необходимую для последующей работы с профилем.
- Образ диска — файл специального формата, представляющий диск, на который будет установлена виртуальная машина.
В профиле также могут содержаться следующие необязательные файлы.
- Лицензия — некоторые производители могут захотеть добавить в профиль лицензию на использование созданного ими профиля.
Создание профиля вручную [ править ]
Требования к окружению [ править ]
Для создания профиля kvm вам необходима машина с аппаратной поддержкой виртуализации, на которой установлены kvm и qemu. Более подробную информацию о том, имеет ли ваша машина аппаратную поддержку виртуализации, и о том, как установить kvm и qemu, вы можете найти здесь.
Пользователи Linux могут проверить наличие аппаратной поддержки виртуализации с помощью команды
Если команда в ответ сказала yes, то это значит, что виртуализация есть. Помните также, что поддержка виртуализации может быть выключена в BIOS.
Формат манифеста для машин kvm [ править ]
Манифест — это обычный текстовый файл с метаинформацией, необходимой для нормальной установки и дальнейшей работы с контейнером. Манифест должен называться info и состоять из нескольких секций. Секция начинается с заголовка в квадратных скобках, например,
и, в свою очередь, состоит из строк вида
Манифест в профилях kvm состоит из двух секций — секции main и секции image. Далее описаны обязательные параметры, которые должны быть указаны в секции main. Секция image описыватся в другом разделе.
Первым делом нужно указать, что мы используем kvm, а также версию профиля
Далее нужно указать название организации, создавшей профиль и тип операционной системы
Объем требуемой оперативной памяти (в МБ)
Если в системе предполагается получать адрес сетевого интерфейса по DHCP, то нужно указать
Если же в системе сконфигурирован статический IP-аддресс, то нужно указать его:
Если профиль поставляется с лицензией, то в манифест нужно добавить следующую строку:
Создание образа виртуальной машины [ править ]
1. Создайте пустой виртуальный диск для устанавливаемой операционной системы. Например, с помощью команды
мы создали файл mydisk.img , в который мы будем устанавливать виртуальную машину. Для нее он будет выглядеть как диск размером в 40 гигабайт, но на самом деле, он будет занимать только то пространство, которое используется виртуальной машиной.
Внимание! Если при установке дистрибутива виртуальная машина останавливается (QEMU [Stopped]), то причиной этого может быть недостаток свободного места на диске или оперативной памяти.
2. Установите дистрибутив в виртуальную машину.
- -cdrom ‘distro.iso’ — образ устанавливаемого дистрибутива
- -drive file=mydisk.img,if=scsi,boot=on — образ диска, созданного на этапе 1
- -m 512 — размер выделяемой оперативной памяти для виртуальной машины (в мегабайтах)
- -net nic -net tap,script=/etc/kvm/brext — создание одного внешнего сетевого интерфейса
- -vnc :1 — позволяет получить vnc-доступ к устанавливаемой системе
При пустом диске загрузка будет произведена с CD-ROM. Если нужно установить с CD-ROM на уже готовую систему, Нажмите при запуске F12 и затем 3.
\infty. Добавьте в манифест секцию image, описывающую создаваемый виртуальный диск. В этой секции должно быть указано имя файла, содержащего диск, виртуальный и реальный размеры диска,
Добавление лицензии [ править ]
Если вы хотите добавить в профиль лицензию, то вы должны добавить строку
в секцию main манифеста и запаковать указанный в профиль.
Упаковка bundle [ править ]
Профиль должен иметь расширение .bun, а файлы, лежащие в bundle должны быть отсортированы по размеру. Таким образом, если мы находимся в директории с исходными файлами, то bundle можно создать, например, с помощью команды
Для того, чтобы с профилем можно было работать из alterator, его необходимо поместить в /srv/share/bundles.
Источник
Установка kvm альт линукс
Чтобы постоянно не вводить -c qemu:///system можно добавить:
Расположение основных конфигов
- /etc/libvirt/qemu.conf — основной конфиг qemu. Тут задаём параметры vnc сервера.
- /etc/libvirt/qemu/ — папка для хранения конфигов, в том числе и виртуальных машин.
Создание VPS
VPS можно создавать с разными виртуальными устройствами. Можно использовать по умолчанию, а можно использовать virtio. Последние считаются наилучшим вариантом для Windows OS. Поэтому ВСЕГДА стараемся сделать так, как надо. Если не получается — тогда как обычно. Для новой системы со сразу установленными значениями virtio в конфиге необходимо в процессе установки добавить драйверы. Качаем iso с драйверами:
(ссылка верна на 27 октября 2016 г., в дальнейшем можно заглянуть на вики проекта или в старый каталог загрузок и скачать имеющийся там virtio-win*.iso)
Создание VPS Windows с поддержкой virtio
- создаем LVM раздел нужного размера:
- coздаем конфиг VPS:
где:
-n test_win2008 — имя VPS
-r 1024 — к-во выделяемой памяти
-v использовать аппаратную виртуализацию
—arch=i686 — используемая архитектура
—cpu host — передает в VPS все возможности процессора хостовой системы. Применять с осторожностью, т.к. при переносе на другой сервер при отличии винда может ругаться.
NB Для полного списка задаваемых параметров смотрим man-страницу по virt-install(1)
Также подключаем флоппи-диск с драйверами для virtio. При установке система не увидит жесткий диск, на который будет устанавливаться, и нужно выбрать драйвер для диска с флопика. Там же располагаются драйвера для сетевой карты.
- Windows Server 2003 и Windows XP Нажимаем F6 и ставим драйвера.
- Windows 2008 Доходим до окна разбивки дисков и выбираем «Загрузить Драйвер».
Создание VPS без virtio
Windows 2008 32bit на LVM:
ALT Linux x86_64 на LVM :
FreeBSD 8.1 на LVM :
После запуска команды создания VPS смотрим через netstat, какой номер порта добавился в список открытых портов, подключаемся через VNC к хардноде к этому порту (например vncviewer test.domain.com:5902 ) и вводим пароль указанный в строке «vnc,password=«
Удаление VPS
Выполняем остановку и удаление VPS в KVM:
И удаляем раздел LVM:
Управление ресурсами
Нужно настроить cgroups. В случае systemd это уже должно быть сделано автоматом.
Проверить наличие в /etc/libvirt/qemu.xml
Назначить нужные ресурсы через:
Проброс PCI-устройств внутрь домена
В /etc/libvirt/qemu.conf активируем
Получение нужной информации о NIC
Отвязываем устройство от HN
В xml домена добавляем
и запускаем домен
No IOMMU found говорит о том, что аппаратная платформа не поддерживает виртуализацию ввода/вывода.
Сменить диск в приводе на VPS без перезагрузки
Отправка комбинаций клавиш
Часто бывает нужно переключиться в окне kvm на вторую виртуальную консоль из графического режима.
Источник
Настройка сети в KVM
Содержание
Настройка сети в KVM [ править ]
Настройка сети для виртуальных машин в kvm очень похожа на настройку в qemu, поэтому любая документация к qemu подходит и для kvm. В этой статье описывается как настроить наиболее часто используемые типы подключения виртуальной машины к сети. Эта статья основана на Networking — KVM.
Пользовательская сеть [ править ]
- Вам нужен простой способ дать виртуальной машине доступ в Интернет и в вашу локальную сеть;
- Вам не нужен доступ к виртуальной машине из сети или из других виртуальных машины;
- Вы готовы пожертвовать производительностью;
- Внимание: пользовательская сеть не поддерживает некоторые возможности сетей, например ICMP, поэтому некоторые приложения (такие как ping) могут работать неправильно.
- Настроенная и запущенная виртуальная машина;
- Если вы не хотите запускать её из под root-а, то для вашего пользователя понадобятся права на чтение/запись в /dev/kvm;
- Если виртуальной машине нужен доступ в Интернет или в локальную сеть, то у хост-системы должен быть доступ в эти сети.
- Просто запустите виртуальную машину с параметрами «-net nic -net user», например:
- IP-адрес может быть назначен автоматически DHCP-сервером, встроенным в QEMU;
- Если вы хотите запустить несколько виртуальных машин, то вам не понадобится назначать для них различные MAC-адреса;
- Используя опцию «hostfwd» вы можете получить доступ к одном порту на виртуальной машине. Например, если вы хотите передать файл из хост-системы на виртуальную машину, то запустите машину с параметрами «-net nic -net user,hostfwd=tcp::5555-:22». В данном случае вы перенаправить порт 5555 из хост-системы на порт 22 виртуальной машины. Команда «scp -P 5555 file.txt root@localhost:/tmp», выполненная на хост-системе, скопирует файл в виртуальную машину. Также вы можете использовать другой адрес хост-системы для подключения.
Внутренний виртуальный мост [ править ]
- Организация сети между двумя или более виртуальными машинами. Эта сеть не будет доступна ни другим виртуальным машинам, ни из реальной сети.
- Организация сети между виртуальными машинами и хост-системой. От первого варианта отличается только добавлением адреса на мостовой интерфейс хоста. Если возникнет потребность, можно добавить реальный интерфейс в мост, тогда виртуальные машины будут подключены к реальной LAN.
- Настроенная и запущенная виртуальная машина;
- Если вы не хотите запускать её из под root-а, то для вашего пользователя понадобятся права на чтение/запись в /dev/kvm;
- Вам понадобятся следующие программы:
/sbin/ip (пакет iproute2, обычно уже установлен) /sbin/brctl или /usr/sbin/brctl (пакет bridge-utils, устанавливается вместе с kvm) /sbin/tunctl или /usr/sbin/tunctl (пакет tunctl, нужно установить самостоятельно)
Если вы не хотите запускать их из под root-a, то вам понадобится настроить sudo для их запуска.
Решение: [ править ]
Подготовка [ править ]
В Седьмой платформе
- Во-первых, можно стартовать виртуальные машины с помощью libvirtd и управлять ими посредством virsh, при этом всё будет сделано автоматически. Нужно только правильно указать интерфейс (опция --network bridge).
- Во-вторых, можно использовать мостовой интерфейс virbr0, который появляется в системе после установки пакета kvm. Интерфейсу уже назначен IP 192.168.122.1/24 (см. конфигурация ю файле /etc/libvirt/qemu/networks/default.xml).
Перед запуском виртуальной машины создайте tap-интерфейс, добавьте его мост и потом используйте его при запуске kvm:
Создать tap-интерфейсы и добавить их в мост можно и с помощью скриптов /etc/net (см. man etcnet).
- В-третьих, можно использовать системный скрипт для запуска мостового интерфейса: /etc/init.d/bridge, достаточно создать нужное количество виртуальных интерфейсов, добавить их в /etc/sysconfig/bridge и запустить «службу» bridge:
Скрипт /etc/init.d/bridge при этом нельзя запускать автоматически при старте системы, но запускайте только вручную от пользователя с помощью sudo:
В дальнейшем виртуальные машины нужно запускать с использованием этих готовых интерфейсов, например:
В старых дистрибутивах
- Нужно создать и сконфигурировать мост, например:
- Для связи по сети между виртуальной машиной и хост-системой нужно задать адрес IP мосту, например:
или, чтобы не задавать адрес вручную, создайте файл /etc/net/ifaces/br1/ipv4address, содержащий единственную строку «192.168.100.1/2» (Это не обязательно, если доступ по сети в/из виртуальную машину не нужен.)
Также можно сконфигурировать сервер DHCP, чтобы он выдавал адреса в подсети интерфейса br1 (см. man dhcpd).
Включение виртуальной машины в мост [ править ]
- Необходимо (стандартный вариант)
— наличие двух сетевых карт на хосте eth0 и eth1 подключенных к локальной сети, — интерфейс eth0 настроен и работает в сети, eth1 включен настройки не обязательны
- Создать мост br0 (некоторые разработчики считают, что команды tunctl и brctl устарели)
- Создать скрипт qemu-ifup следующего содержания без sudo и «устаревших» утилит:
- Создать скрипт qemu-ifup следующего содержания (c использованием sudo, возможно необходимы предварительные настройки):
- Сгенерировать MAC-адрес вручную или автоматически, используя скрипт:
- Запустить каждую виртуальную машину, заменяя $macaddress значением, полученным на предыдущем шаге:
- Внутри каждой виртуальной машины нужно сконфигурировать уникальный адрес IP из одной и той же подсети.
Работа с предварительно созданными иинтерфейсами
Можно заранее (в стартовом скрипте) настроить все интерфейсы и затем использовать их в виртуальных машинах. При этом обязательно нужно указывать опцию script=no:
- Если вы не хотите запускать машину от root-а, то скрипт qemu-ifup должен корректно работать от вашего пользователя;
- Вы можете создать общесистемный скрипт, назвав его в /etc/qemu-ifup или же спользовать любое другое имя, указав его при запуске машины:
- Каждая виртуальная машина подключенная к внутреннему виртуальному мосту должна иметь свой собственный MAC-адрес, отличный от адресов других машин.
- Для включения в мост необходимо использовать интерфейсы tap, но не tun. Дело в том, что у интерфейсов tun нет заголовков ethernet, которые требуются для работы моста.
Публичный мост [ править ]
Предупреждение: Данный метод может не работать с большинством беспроводных устройств.
- Вы хотите назначать IP-адреса виртуальным машинам и сделать их доступными из локальной сети;
- Вы хотите большой производительности от виртуальной машины.
- Настроенная и запущенная виртуальная машина;
- Если вы не хотите запускать её из под root-а, то для вашего пользователя понадобятся права на чтение/запись в /dev/kvm;
- Вам понадобятся следующие программы. Если вы не хотите запускать их из под root-a, по вам понадобится настроить sudo для их запуска:
- Хост-система должна иметь доступ в интернет и в локальную сеть.
Вариант №1: Использование средств дистрибутива
- Создать файл /etc/net/ifaces/breth0/options следующего содержания:
- Применить новые настройки сети командой:
- Интерфейс моста breth0 должен получить IP-адрес, а интерфейс eth0 должен быть без адреса.
Если вы используете VLANы но до виртуальной машины трафик не доходит, выполните команды:
- Создать мост командой:
- Добавить физический интерфейс в этот мост, например eth0:
- Создать скрипт qemu-ifup следующего содержания:
- Сгенерировать MAC-адрес вручную или автоматически, используя скрипт:
- Запустить каждую виртуальную машину, заменяя $macaddress значением, полученным на предыдущем шаге:
- Если вы не хотите запускать машину от root-а, то скрипт qemu-ifup должен корректно работать от вашего пользователя;
- Вы можете создать общесистемный скрипт, назвав его в /etc/qemu-ifup или же спользовать любое другое имя, указав его при запуске машины:
- Каждая виртуальная машина подключенная к внутреннему виртуальному мосту должна иметь свой собственный MAC-адрес, отличный от адресов других машин.
Маршрутизация/iptables [ править ]
Также вы можете объединить виртуальные машины tap-интерфесом в хост-системе и настроить правила iptables в хост-система, чтобы она была маршутизатором и сетевым экраном для виртуальных машин.
Настройки маршрутизации сводятся к созданию маршрута по умолчанию в виртуальной машине, указывающего на хост-систему, разрешение пересылки пакетов (IP forwarding) и настройки маршрута на tap-интерфейс виртуальной машины в хост-системе.
Заблаговременно проверьте настройки:
- Хост-система: Разрешить пересылку пакетов и добавить маршрут до виртуальной машины (должно быть помещено в скрипт — маршрут необходимо добавить после запуска виртуальной машины):
- Виртуальная машина: маршрут по умолчанию указывает на хост-систему ( должен быть в одной сети с ):
- Виртуальная машина v2: если IP-адрес хост-системы не в одной сети с , тогда надо вручную добавить маршрут до хост-системы перед добавлением маршрута по умолчанию:
VDE [ править ]
Другой способ настройки сети это VDE (Virtual Distributed Ethernet).
Известные баги [ править ]
Отказы сети в гостевых Windows [ править ]
Под большой нагрузкой сетевой интерфейс в гостевой машине с ОС Windows перестаёт принимать и отправлять пакеты в хост-машину. Такое поведение характерно для любой модели виртуального интерфейса и для любой версии Windows в QEMU-KVM как минимум до версии 1.4.
Существует обходное решение: нужно заново проинициализировать сетевой интерфейс гостевой машины. Либо это можно сделать из гостевой ОС, либо из хост-машины парой команд virsh detach-interface и atttach-interface (и это надёжнее). Проверяем работоспособность при этом, очевидно, командой ping. Варианты скриптов для гостевой машины: [1], [2]. В скрипте для хоста перед проверкой пинга требуется проверить, работает ли гостевая ОС.
Источник