KVM изначально был разработан для процессоров x86 , но с тех пор был портирован на ESA/390 , [5] PowerPC , [6] IA-64 и ARM . [7] [8]
Порт IA-64 был удален в 2014 году. [9]
KVM поддерживает аппаратную виртуализацию для широкого спектра гостевых операционных систем, включая BSD , Solaris , Windows , Haiku , ReactOS , Plan 9 , AROS , macOS и даже другие системы Linux. [10] [11] Кроме того, известно, что Android 2.2, GNU/Hurd [12] ( Debian K16), Minix 3.1.2a, Solaris 10 U3 и Darwin 8.0.1, а также другие операционные системы и некоторые более новые версии перечисленных, работают с определенными ограничениями. [13]
KVM появился в октябре 2006 года [22] и был объединен с основной веткой ядра Linux в версии ядра 2.6.20, которая была выпущена 5 февраля 2007 года. [1]
KVM поддерживается Паоло Бонзини. [23]
Внутренности
KVM обеспечивает абстракцию устройства, но не эмуляцию процессора. Он предоставляет интерфейс /dev/kvm , который хост пользовательского режима может затем использовать для:
Настройте адресное пространство гостевой виртуальной машины. Хост также должен предоставить образ прошивки (обычно это пользовательский BIOS при эмуляции ПК), который гость может использовать для загрузки в свою основную ОС.
Подайте гостевой смоделированный ввод-вывод.
Подключите видеодисплей гостя обратно к системному хосту.
Первоначально была предоставлена разветвленная версия QEMU для запуска гостевых систем и работы с эмуляцией оборудования, которая не обрабатывается ядром. Эта поддержка в конечном итоге была объединена с проектом upstream. Сейчас существует множество мониторов виртуальных машин (VMM), которые могут использовать интерфейс KVM, включая kvmtool, crosvm и Firecracker , а также множество специализированных VMM, созданных с использованием таких фреймворков, как rust-vmm.
Внутри KVM используется SeaBIOS как реализация 16-битного x86 BIOS с открытым исходным кодом . [25]
Функции
С февраля 2007 года KVM поддерживает виртуальные ЦП с возможностью горячей замены , [26] динамическое управление памятью [27] и живую миграцию. [28] [29] Это также снижает влияние рабочих нагрузок с интенсивным использованием записи в память на процесс миграции. [30]
Эмулированное оборудование
Сам KVM эмулирует очень мало оборудования, вместо этого доверяя эмуляцию устройств клиентскому приложению более высокого уровня, такому как QEMU , crosvm или Firecracker .
KVM обеспечивает следующие эмулируемые устройства:
Kimchi – веб-инструмент управления виртуализацией для KVM
Virtual Machine Manager — поддерживает создание, редактирование, запуск и остановку виртуальных машин на базе KVM, а также живую или холодную миграцию виртуальных машин между хостами методом перетаскивания.
Proxmox Virtual Environment — пакет управления виртуализацией с открытым исходным кодом, включающий KVM и LXC . Он имеет установщик bare-metal, веб-интерфейс удаленного управления, стек кластера HA, унифицированное хранилище, гибкую сеть и дополнительную коммерческую поддержку.
OpenQRM – платформа управления для управления гетерогенными инфраструктурами центров обработки данных
GNOME Boxes – Интерфейс Gnome для управления гостевыми системами libvirt в Linux
oVirt – инструмент управления виртуализацией с открытым исходным кодом для KVM, созданный на основе libvirt
^ ab "Ядро Linux 2.6.20, Раздел 2.2. Поддержка виртуализации через KVM". kernelnewbies.org . 2007-02-05 . Получено 2014-06-16 .
^ Часто задаваемые вопросы о KVM: Что мне нужно для использования KVM?
^ «Ежеквартальный отчет о состоянии FreeBSD: Портирование Linux KVM на FreeBSD».
^ "KVM на Illumos".
^ "Gmane - Mail To News And Back Again". Архивировано из оригинала 29-09-2007 . Получено 07-05-2007 .
^ Gmane Loom Архивировано 29 сентября 2007 г. на Wayback Machine
^ "KVM/ARM Open Source Project". Архивировано из оригинала 2013-03-10 . Получено 2017-11-01 .
^ Кристоффер Далл; Джейсон Ниех (2014). «KVM/ARM: Проектирование и реализация гипервизора Linux ARM». Международная конференция ACM по архитектурной поддержке языков программирования и операционных систем.
^ "Red Hat повышает лидерство в области виртуализации с приобретением Qumranet, Inc.". Red Hat . 4 сентября 2008 г. Получено 16 июня 2015 г.
^ "KVM 15 оснащен функцией живой миграции | IT World Canada News". 7 марта 2007 г.
↑ Либби Кларк (7 апреля 2015 г.). «Истории успеха и советы Git от специалиста по поддержке KVM Паоло Бонзини». Linux.com . Архивировано из оригинала 15 марта 2016 г. Получено 17 июня 2015 г.
^ Khoa Huynh; Stefan Hajnoczi (2010). "Обсуждение производительности стека хранения KVM/QEMU" (PDF) . IBM . Конференция Linux Plumbers . Получено 3 января 2015 г. .[ постоянная мертвая ссылка ]