Qemu kvm что это
KVM - это модуль ядра Linux, обеспечивающий доступ к аппаратной виртуализации на базе Intel VT(Virtualization Technology) либо AMD SVM (Secure Virtual Machine).
QEMU - эмулятор аппаратного обеспечения различных платформ, позволяющий запускать различные гостевые операционные системы. Он может работать отдельно, но может использовать KVM для запуска виртуальных машин с более высокой скоростью. QEMU также может выполнять эмуляцию процессов на уровне пользователя, позволяя приложениям, скомпилированным для одной архитектуры, работать на другой.
Libvirt - свободная реализация API, демон и набор инструментов для управления виртуализацией. Позволяет управлять гипервизорами KVM, QEMU и другими.
Virtual Machine Manager - приложение для управления виртуальными машинами.
3) Protection rings
Бинарный программный код на процессорах работает не просто так, а располагается на разных уровнях (кольцах / Protection rings) с разными уровнями доступа к данным, от самого привилегированного (Ring 0), до самого ограниченного, зарегулированного и «с закрученными гайками» (Ring 3).
Операционная система (ядро ОС) работает на Ring 0 (kernel mode) и может делать с любыми данными и устройствами все, что угодно. Пользовательские приложения работают на уровне Ring 3 (user mode) и не в праве делать все, что захотят, а вместо этого каждый раз должны запрашивать доступ на проведение той или иной операции (таким образом, пользовательские приложения имеют доступ только к собственным данным и не могут «влезть» в «чужую песочницу»). Ring 1 и 2 предназначены для использования драйверами.
До изобретения Intel VT-x / AMD SVM, гипервизоры работали на Ring 0, а гости работали на Ring 1. Поскольку у Ring 1 недостаточно прав для нормального функционирования ОС, то при каждом привилегированном вызове от гостевой системы, гипервизору приходилось на лету модифицировать этот вызов и выполнять его на Ring 0 (примерно так, как это делает QEMU). Т.е. гостевой бинарный код НЕ выполнялся напрямую на процессоре, а каждый раз на лету проходил несколько промежуточных модификаций.
Накладные расходы были существенными и это было большой проблемой и тогда производители процессоров, независимо друг от друга, выпустили расширенный набор инструкций (Intel VT-x / AMD SVM), позволяющих выполнять код гостевых ОС НАПРЯМУЮ на процессоре хоста (минуя всякие затратные промежуточные этапы, как это было раньше).
С появлением Intel VT-x / AMD SVM, был создан специальный новый уровень Ring -1 (минус один). И теперь на нем работает гипервизор, а гости работают на Ring 0 и получают привилегированный доступ к CPU.
- хост работает на Ring 0
- гости работают на Ring 0
- гипервизор работает на Ring -1
Запуск виртуальной машины
Для запуска виртуальной машины кликните на неё правой кнопкой мыши и нажмите Запустить.
Для управления виртуальными машинами из консоли используйте следующие команды:
Вывести список запущенных виртуальных хостов (все доступные можно получить добавив --all):
Добавить в автозапуск:
Создание снапшотов
Для создания снапшотов в главном окне Virtual Machine Manager выберите виртуальную машину и нажмите кнопку Открыть.
В открывшемся окне нажмите на значек с двумя мониторами. Откроется окно управления снимками. Нажмите + для создания снапшота.
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
РЕД СОФТ — участник
фонда «Сколково»
Клонирование виртуальных машин
Для клонирования виртуальной машины в окне Virtual Machine Manager кликните правой кнопкой мыши на нужной машине и нажмите Клонировать.
Впишите название новой виртуальной машины и выберите клонируемое пространство данных. Нажмите клонировать
4) QEMU-KVM
KVM предоставляет доступ гостям к Ring 0 и использует QEMU для эмуляции I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д., которые «видят» и с которыми работают гости).
Отсюда QEMU-KVM (или KVM-QEMU) :)
P.S. Текст этой статьи изначально был опубликован в Telegram канале @RU_Voip в качестве ответа на вопрос одного из участников канала.
Напишите в комментариях, в каких местах я не правильно понимаю тему или если есть, что дополнить.
Данная статья — это обобщение информации, накопленной за время использования гипервизора Qemu-KVM. Я хочу поделиться теми знаниями опытом, которыми обладаю на данный момент. Надеюсь, что моя статья пойдет на пользу тем, кто только собирается использовать гипервизор Qemu-KVM или уже использует. И еще: статья не для новичков linux (элементарные вещи здесь рассматриваться не будут).
Про данную систему виртуализации в сети написано много. Но когда действительно начинаешь с ней работать — сталкиваешься с нехваткой информации и практических примеров применения. Итак приступим.
- процессор Atlon X2 245
- оперативная память 4 гигабайта
- жесткий диск 500 гигабайт
- материнская плата ASUS M4N68T-M LE.
- Microsoft hyper-v не подходит — платная. Компания, в которой я работаю использует только лицензионное программное обеспечение. Следовательно никто не выделит для моих целей лицензию на сервер.
- VMWARE ESXi не знает контролера SATA, расположенного на материнской плате (поскольку разрабатывалась для серверных систем).
- Qemu-kvm — свободно разрабатываемый гипервизор, поддерживает аппаратную виртуализацию. Его можно установить в любой современный дистрибутив Linux. Это по мне, его и берем.
Переходим к делу. Установку операционной среды описывать я не буду. Оговорюсь лишь, что во время установки операционной среды жесткий диск большего размера не трогал. Его время еще придет. Как установить гипервизор на Debian очень хорошо описано здесь. Лично я ставлю qemu-kvm libvirt-bin.
Гипервизор поставили, теперь немного о внутренней структуре. Есть два каталога, в которые стоит заглянуть:
/etc/libvirt/ — здесь в основном хранятся конфигурационные файлы
/var/lib/libvirt/ — здесь будут хранится образы жестких дисков, мгновенные снимки системы и многое другое.
Наш гипервизор установлен.
Далее сохраняем файл и перезагружаем компьютер.
О, чудо! Гипервизор установлен!
Дальше возникает вопрос: как управлять сервером? Управлять Qemu-kvm можно двумя программами: virt-manager и virtinst.
Virt-manager.
Эта программа рассчитана на графический интерфейс. Она поддерживает как удаленное управление виртуальными машинами, так и локальное. Но у нее есть огромный минус — аналогов для windows попросту нет.
Как лично я вышел из положения. Установил графическую оболочку LXDE и сервер xrdp, благодаря такому нехитрому набору программ мне не пришлось физически ходить к компьютеру (больно много ему чести). Я просто подключался через стандартный RDP клиент который, есть в windows. Но это дополнительная трата ресурсов компьютера.
Если вы установили virt-manager, он автоматически создает:
хранилище для образов виртуальных машин по пути /var/lib/libvirt/images
виртуальный сетевой интерфейс default.
Следовательно подмонтировать жесткий диск с большим объемом нужно в директорию /var/lib/libvirt/images.
- можно подмонтировать жесткий диск в директорию и указать его в качестве хранилища
- можно просто устройство выбрать хранилищем.
Если не создавать хранилище для образов дисков виртуальных машин, то для того, чтобы диски лежали в одном месте, нужно будет указывать полный путь к образу при его создании(много писать), а так образ создастся в указанном пуле или если он у вас единственный, то его имя указывать не обязательно. Конфигурационный файл пула будет лежать в директории /etc/libvirt/storage/ это .xml файлик. Выходим из virsh введя команду exit.
В принципе наш гипервизор установился и его можно использовать. Но есть еще маленькая мелочь, о которой хотелось бы упомянуть. А именно о том, как работает Qemu-kvm.
Запущенная на нем виртуальная машина шлет команды физическому процессору напрямую через загружаемый модуль (kvm-amd или kvm-intel). Это должен быть один из модулей, который соответствует производителю процессора (Intel или AMD).
- отключаю поддержку звука (это сервер, а не рабочая станция);
- не использую протокол IPv6 (в моей сети он не используется);
- отключаю поддержку сетевых карт wifi, wmax и все что сними связанно.
В сборке собственного ядра мне помогли вот эти статьи первая и вторая.
Забегу немного вперед. Многие люди в интернете жаловались на то, что модель сетевой карты virtio некорректно работает. Этому есть объяснение, и достаточно простое. Драйвера для этого устройства находятся в стадии экспериментальных. Зато virtio storage работают отлично.
Теперь начинаем работать с виртуальными машинами. Создаем нашу первую виртуальную машину:
virt-install --connect qemu:///system \
--name comp1 \
--ram 512 \
--vcpus=1 \
--disk pool=storage,cache=none,size=20, format= qcow2\
--disk /home/firsachi/Winxp.iso,device=cdrom \
--bridge=br0,model=e1000 \
--os-type=windows
--os-variant=winxp \
--graphics vnc,port=5901,listen=0.0.0.0
Некоторые детали хочу пояснить:
pool=storage указываем пул, в котором нужно создать диск;
cache=none это означает, что отключено кэширование записи на диск. В моем случае это образ img. При включенном кэшировании записи вдвое увеличивается время обращения к диску виртуальной машины;
size=20 размер диска в гигабайтах;
format= qcow2 это формат образа диска. Как я понял, только он поддерживает снимки системы;
model=e1000 модель сетевой гигабитной карты Intel (по умолчанию идет стомегабитный rtl8139);
port=5901 порт, на который можно обратиться с помощью Ultra VNC Viewer;
listen=0.0.0.0 разрешение подключиться со всех IP (по умолчанию слушает только localhost).
Установку можно произвести непосредственно и на устройство. Выглядеть будет так:
virt-install --connect qemu:///system \
--name comp1 \
--ram 512 \
--vcpus=1 \
--disk /dev/sdb, format= qcow2\
--disk /home/firsachi/Winxp.iso,device=cdrom \
--bridge=br0,model=e1000 \
--os-type=windows
--os-variant=winxp \
--graphics vnc,port=5901,listen=0.0.0.0
Где sdb должен быть заменен на ваше устройство.
Если все прошло успешно, то для подключения к консоли нашей виртуальной машины нужно установить Ultra VNC Viewer к себе на компьютер. В подключении нужно указать IP адрес сервера и порт, или доменное имя сервера и порт.
Как происходит установка Windows, надеюсь, знают все.
Теперь о драйверах виртуальных машин. Для установки драйверов нужны следующие образы дисков: virtio-win-0.1-30.iso и viostor-0.1-30-floppy.img
Последний диск не обязателен, он нужен только в том случае, если вы собираетесь установить windows xp или windows 2003 server на virtio storage (кстати, если так сделать, то операционная система работает быстрее).
- comp1 – имя виртуального компьютера, к которому подключаем диск.
- /dev/sdc – путь к устройству на физическом компьютере.
- Vdv — куда подключаем на виртуальной машине.
- --type – тип диска.
Во многом поможет и вот эта статья. Рекомендую также заглядывать вот сюда.
- компьютер, на котором работала виртуальная машина, сгорел (процессор Atlon X2 245).
- раз в неделю виртуальная машина выключается и делается резервная копия файла конфигурации и образа диска.
Установил на нем Qemu-KVM, переместил на него файл конфигурации виртуальной машины и образ диска. В файле конфигурации отредактировал путь к диску виртуальной машины, перезагрузил ноутбук. И, о чудо! Гипервизор не только увидел мою виртуальную машину, но и запустил ее.
Вот так теперь и живем: гипервизор Qemu-KVM, виртуальный контролер домена, и довольный проделанной работой я.
Спасибо всем, кто дочитал до конца. Надеюсь, мои мысли оказались полезными.
KVM (Kernel-based Virtual Machine) — это программное решение, обеспечивающее виртуализацию в среде Linux, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine).
QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ, которая может работать и без использования KVM, но использование аппаратной виртуализации значительно ускоряет работу гостевых систем, поэтому использование KVM в QEMU (enable-kvm) является предпочтительным вариантом.
Первоначально разработка велась в рамках проекта Linux KVM (Kernel-based Virtual Machine), в котором, помимо собственно KVM (поддержки технологий аппаратной виртуализации x86-совместимых процессоров на уровне ядра Linux), разрабатывались патчи для QEMU, позволяющие QEMU использовать функциональность KVM. Однако недавно разработчики QEMU в содружестве с разработчиками KVM приняли решение интегрировать поддержку KVM в основную ветку QEMU (mainline).
Используя KVM, вы может запустить несколько виртуальных машин с немодифицированными образами Linux и Windows. Каждая виртуальная машина имеет собственную приватную среду, в которой она работает: сетевую карту, диск, графический адаптер и т.д.
Поддержка KVM вошла в ядро Linux начиная с версии 2.6.20.
libvirt - это интерфейс и демон для управления виртуальными машинами различных технологий (qemu/kvm, xen, virtualbox), он позволяет удобно настраивать и манипулировать виртуальными машинами. Также к нему есть много разных сторонних приложений для управления, web-интерфейсов и т.д. Например, весьма полезным может быть графический интерфейс управления виртуальными машинами virt-manager .
Заявка на расчет стоимости
Проверка оборудования
Проверьте, поддерживается ли на вашем хосте аппаратная виртуализация. Для процессоров Intel должна быть поддержка технологии Intel VT. Для процессоров AMD поддержка AMD SVM. Так же убедитесь, что аппаратная виртуализация включена в bios материнской платы хоста.
В данном примере используется процессор Intel, по этому в выводе присутствует vmx. Если вывода у команды не было, возможно, ваш процессор не поддерживает виртуализацию, либо она отключена в bios материнской платы.
Заявка на производственную практику в РЕД СОФТ
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
Installing the necessary packages
By default, QEMU supports the i386 and x86_64 architectures. Edit the flags to provide support for more. For example, if you need arm to be supported:
Установка и начальное конфигурирование
На время настройки qemu переведите selinux в режим permissive. Для этого измените содержимое конфигурационного файла:
Заменив текст SELINUX=enforcing на SELINUX=permissive
Более подробно см.ссылку
Не забудьте включить selinux после завершения настройки.
После установки qemu рекомендуется настроить selinux в соответствии с рекомендациями из команды sealert
Установите необходимый для виртуализации набор пакетов из стандартного репозитория.
Если вы используете РЕД ОС версии 7.1 или 7.2, выполните команду:
Если вы используете РЕД ОС версии 7.3 и старше, выполните команду:
Включите автозапуск службы libvirtd
Перезагрузите компьютер для загрузки модулей ядра kvm (если у вас процессор Intel так же должен загрузиться модуль intel-kvm).
После перезагрузки, проверьте загрузку модулей.
Так же проверьте сетевые подключения
Должен появиться дополнительное подключение vbr0.
Добавьте пользователя, используемого для управления виртуальными машинами, в группу libvirt.
На этом установка и начальное конфигурирование завершено.
Политика в отношении обработки персональных данных Общества с ограниченной ответственностью «Ред Софт» (ООО «Ред Софт»)
Использование Пользователем Сайта означает безоговорочное согласие с настоящей Политикой и указанными в ней условиями обработки персональных данных. В случае несогласия с данной Политикой использование Сайта должно быть немедленно прекращено.
При заполнении формы на Сайте Пользователь тем самым подтверждает:
- что все указанные им данные принадлежат лично ему;
- что им внимательно и в полном объеме прочитаны условия настоящей Политики в отношении обработки его персональных данных, и они ему понятны;
- на обработку Сайтом предоставляемых в составе информации персональных данных;
- на передачу своих персональных данных партнерам Компании;
- дает согласие на получение информационной рассылки Сайта.
2. Согласие Пользователя признается бессрочным и исполненным в простой письменной форме, на обработку следующих персональных данных:
- фамилия, имя, отчество;
- год рождения;
- место проживания (город, область);
- номер телефона;
- адрес электронной почты (E-mail).
Пользователь предоставляет Компании право осуществлять следующие действия с персональными данными:
- сбор и накопление;
- хранение;
- уточнение (обновление, изменение);
- использование;
- уничтожение;
- обезличивание.
3. Пользователь имеет право отозвать свое согласие посредством составления соответствующего письменного документа, который может быть направлен Пользователем в адрес Компании по электронной почте/по почте заказным письмом с уведомлением о вручении либо вручен лично под расписку уполномоченному представителю Компании. В случае получения письменного заявления об отзыве согласия на обработку персональных данных Компания обязана прекратить их обработку.
4. Компания обязуется приложить все усилия для обеспечения конфиденциальности данных, размещенных Пользователем посредством Сайта, на весь период использования Сайта Пользователем.
5. Персональные данные Пользователя никогда, ни при каких условиях не будут переданы третьим лицам, за исключением случаев, связанных с исполнением действующего законодательства.
6. Пользователь осознает, что в результате сбоя, технических неисправностей, действий третьих лиц, в том числе (но не ограничиваясь) вирусной или хакерской атаки, данные Пользователя, размещенные на Сайте, могут стать доступны третьим лицам. Пользователь обязуется не предъявлять требований к Компании о возмещении убытков (ущерба), возникших в связи с этим.
8. Компания имеет право вносить изменения в настоящую Политику. При внесении изменений в актуальной редакции указывается дата последнего обновления. Новая редакция Политики вступает в силу с момента ее размещения, если иное не предусмотрено новой редакцией.
KVM (Kernel-based Virtual Machine) – гипервизор (VMM – Virtual Machine Manager), работающий в виде модуля на ОС Linux. Гипервизор нужен для того, чтобы запускать некий софт в несуществующей (виртуальной) среде и при этом, скрывать от этого софта реальное физическое железо, на котором этот софт работает. Гипервизор работает в роли «прокладки» между физическим железом (хостом) и виртуальной ОС (гостем).
Поскольку KVM является стандартным модулем ядра Linux, он получает от ядра все положенные ништяки (работа с памятью, планировщик и пр.). А соответственно, в конечном итоге, все эти преимущества достаются и гостям (т.к. гости работают на гипервизоре, которые работает на/в ядре ОС Linux).
KVM очень быстрый, но его самого по себе недостаточно для запуска виртуальной ОС, т.к. для этого нужна эмуляция I/O. Для I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д.) KVM использует QEMU.
2) QEMU
QEMU (Quick Emulator) – эмулятор различных устройств, который позволяет запускать операционные системы, предназначенные под одну архитектуру, на другой (например, ARM –> x86). Кроме процессора, QEMU эмулирует различные периферийные устройства: сетевые карты, HDD, видео карты, PCI, USB и пр.
Работает это так:
Инструкции/бинарный код (например, ARM) конвертируются в промежуточный платформонезависимый код при помощи конвертера TCG (Tiny Code Generator) и затем этот платформонезависимый бинарный код конвертируется уже в целевые инструкции/код (например, x86).
ARM –> промежуточный_код –> x86
По сути, вы можете запускать виртуальные машины на QEMU на любом хосте, даже со старыми моделями процессоров, не поддерживающими Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Однако в таком случае, это будет работать весьма медленно, в связи с тем, что исполняемый бинарный код нужно перекомпилировать на лету два раза, при помощи TCG (TCG – это Just-in-Time compiler).
Т.е. сам по себе QEMU мега крутой, но работает очень медленно.
Стать партнером
Установка пакетов
По умолчанию QEMU поддерживает архитектуры i386 и x86_64. Отредактируйте флаги для поддержки необходимых гостевых машин. Пример добавления поддержки архитектуры arm :
Kernel-based Virtual Machine (KVM) is a software-based virtualization solution that supports hardware virtualization based on Intel VT (Virtualization Technology) or AMD SVM (Secure Virtual Machine).
QEMU is a free open source software emulator on different platforms that can run without KVM as well, but using hardware virtualization significantly accelerates guest systems, therefore using KVM in QEMU (enable-kvm) is the preferred option.
Initially, the development was part of the Linux KVM (Kernel-based Virtual Machine) project, which, in addition to KVM itself (support for hardware virtualization technologies of x86-compatible processors at the Linux kernel level), was about developing patches for QEMU, thus allowing QEMU to use KVM functionality.
However, QEMU developers, in cooperation with their KVM counterparts have recently decided to integrate KVM support into the mainline of QEMU.
With KVM, you can run multiple virtual machines without having to modify either the Linux or Windows image. Each virtual machine has its own private environment in which it operates, including a network card, a drive, a graphics adapter, etc.
This Linux kernel supports KVM since version 2.6.20.
libvirt is an interface and a daemon for managing various virtual machines (qemu/kvm, xen, virtualbox). It allows you to easily configure and control virtual machines. It also provides a variety of third-party management tools, web interfaces, etc. For example, we recommend virt-manager , a graphical interface for managing virtual machines.
Заявка на приобретение технической поддержки
Создание виртуальной машины
Для создания виртуальной машины можно воспользоваться графической утилитой Virtual Machine Manager. Найти её можно в меню Приложения - Системные - Менеджер виртуальных машин.
Для выбора образа нажмите Обзор и в открывшемся окне нажмите Выбрать файл. Найдите образ iso и откройте его, нажав на кнопку Открыть.
Установите необходимое количество оперативной памяти и процессоров, которые будут доступны данной виртуальной машине. Минимально необходимые значения для РЕД ОС указаны на скриншоте ниже.
Выберите количество постоянной памяти, которое будет доступно виртуальной машине. Минимально рекомендуемым для РЕД ОС является 15 Гб.
Впишите название виртуальной машины в поле Название. Установите галку в пункте Проверить конфигурацию перед установкой. Выберите нужную вам сеть. Нажмите Готово.
Клонирование виртуальных машин и создание снапшотов.
Читайте также: