Виртуальная машина на основе ядра

Модуль виртуализации в ядре Linux
КВМ
Оригинальный автор(ы)Кумранет
Разработчик(и)Сообщество Linux Kernel
Репозиторий
  • git.kernel.org/pub/scm/virt/kvm/kvm.git
Написано вС
Операционная системаUnix-подобный
ПлатформаARM , PowerPC , ESA/390 , IA-32 , x86-64
ТипГипервизор
ЛицензияGNU GPL или LGPL
Веб-сайтwww.linux-kvm.org

Kernel-based Virtual Machine ( KVM ) — это бесплатный и открытый исходный модуль виртуализации в ядре Linux , который позволяет ядру функционировать как гипервизор . Он был объединен с основным ядром Linux в версии 2.6.20, которая была выпущена 5 февраля 2007 года. [1] KVM требует процессора с расширениями аппаратной виртуализации , такими как Intel VT или AMD-V . [2] KVM также был портирован на другие операционные системы, такие как FreeBSD [3] и illumos [4] в виде загружаемых модулей ядра.

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 обеспечивает поддержку паравиртуализации для Linux, OpenBSD , [14] FreeBSD, [15] NetBSD , [16] Plan 9 [17] и гостевых систем Windows с использованием API VirtIO . [18] Сюда входит паравиртуальная карта Ethernet , контроллер ввода-вывода диска, [19] драйвер Balloon и графический интерфейс VGA с использованием драйверов SPICE или VMware .

История

Ави Кивити начал разработку KVM в середине 2006 года в Qumranet , технологической стартап-компании [20] , которая была приобретена Red Hat в 2008 году. [21]

KVM появился в октябре 2006 года [22] и был объединен с основной веткой ядра Linux в версии 2.6.20, выпущенной 5 февраля 2007 года. [1]

KVM поддерживается Паоло Бонзини. [23]

Внутренности

Общий обзор среды виртуализации KVM/QEMU [24] : 3 

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 обеспечивает следующие эмулируемые устройства:

Графические инструменты управления

libvirt поддерживает KVM
  • Kimchi  – веб-инструмент управления виртуализацией для KVM
  • Virtual Machine Manager  — поддерживает создание, редактирование, запуск и остановку виртуальных машин на базе KVM, а также живую или холодную миграцию виртуальных машин между хостами методом перетаскивания.
  • Proxmox Virtual Environment  — пакет управления виртуализацией с открытым исходным кодом, включающий KVM и LXC . Он имеет установщик bare-metal, веб-интерфейс удаленного управления, стек кластера HA, унифицированное хранилище, гибкую сеть и дополнительную коммерческую поддержку.
  • OpenQRM  – платформа управления для управления гетерогенными инфраструктурами центров обработки данных
  • GNOME Boxes  – Интерфейс Gnome для управления гостевыми системами libvirt в Linux
  • oVirt  – инструмент управления виртуализацией с открытым исходным кодом для KVM, созданный на основе libvirt

Лицензирование

Компонент режима ядра KVM является частью ядра Linux , которое само по себе лицензировано в соответствии с GNU General Public License, версия 2. [ 32]

Смотрите также

Ссылки

  1. ^ ab "Ядро Linux 2.6.20, Раздел 2.2. Поддержка виртуализации через KVM". kernelnewbies.org . 2007-02-05 . Получено 2014-06-16 .
  2. ^ Часто задаваемые вопросы о KVM: Что мне нужно для использования KVM?
  3. ^ «Ежеквартальный отчет о состоянии FreeBSD: Портирование Linux KVM на FreeBSD».
  4. ^ "KVM на Illumos". 15 августа 2011 г.
  5. ^ "Gmane - Mail To News And Back Again". Архивировано из оригинала 29-09-2007 . Получено 07-05-2007 .
  6. ^ Gmane Loom Архивировано 29 сентября 2007 г. на Wayback Machine
  7. ^ "KVM/ARM Open Source Project". Архивировано из оригинала 2013-03-10 . Получено 2017-11-01 .
  8. ^ Кристоффер Далл; Джейсон Ниех (2014). «KVM/ARM: проектирование и реализация гипервизора Linux ARM». SIGARCH Comput. Archit. News . 42 (1). Международная конференция ACM по архитектурной поддержке языков программирования и операционных систем: 333– 348. doi :10.1145/2654822.2541946.
  9. ^ "kernel/git/torvalds/linux.git: KVM: ia64: удалить".
  10. ^ "KVM wiki: статус гостевой поддержки" . Получено 2007-05-27 .
  11. ^ "Запуск Mac OS X в качестве гостя QEMU/KVM" . Получено 20 августа 2014 г.
  12. ^ "status". Gnu.org . Получено 2014-02-12 .
  13. ^ "Статус гостевой поддержки - KVM". Linux-kvm.org . Получено 2014-02-12 .
  14. ^ "Страница руководства OpenBSD virtio(4)" . Получено 2018-02-04 .
  15. ^ "двоичные пакеты virtio для FreeBSD" . Получено 29.10.2012 .
  16. ^ "NetBSD man page virtio(4)". Архивировано из оригинала 2019-11-13 . Получено 2013-07-15 .
  17. ^ "plan9front" . Получено 2013-02-11 .
  18. ^ "API для виртуального ввода-вывода: virtio". LWN.net . 2007-07-11 . Получено 2014-04-16 .
  19. ^ "SCSI target for KVM wiki". linux-iscsi.org. 2012-08-07. Архивировано из оригинала 2020-06-05 . Получено 2012-08-12 .
  20. Интервью: Ави Кивити. Архивировано 26 апреля 2007 г. на Wayback Machine на KernelTrap.
  21. ^ "Red Hat повышает лидерство в области виртуализации с приобретением Qumranet, Inc.". Red Hat . 4 сентября 2008 г. Получено 16 июня 2015 г.
  22. ^ "KVM 15 оснащен функцией живой миграции | IT World Canada News". 7 марта 2007 г.
  23. Либби Кларк (7 апреля 2015 г.). «Истории успеха и советы Git от специалиста по поддержке KVM Паоло Бонзини». Linux.com . Архивировано из оригинала 15 марта 2016 г. Получено 17 июня 2015 г.
  24. ^ Khoa Huynh; Stefan Hajnoczi (2010). "Обсуждение производительности стека хранения KVM/QEMU" (PDF) . IBM . Конференция Linux Plumbers . Получено 3 января 2015 г. .[ постоянная мертвая ссылка ‍ ]
  25. ^ "SeaBIOS". seabios.org. 2013-12-21 . Получено 2014-06-16 .
  26. ^ «Горячее подключение виртуальных ЦП с помощью Red Hat Enterprise Virtualization Manager». 16 февраля 2016 г.
  27. ^ "Faq - KVM".
  28. ^ "Выпуск KVM-15 [LWN.net]".
  29. ^ «Миграция - KVM».
  30. ^ "Daniel P. Berrange » Архив блога » Анализ методов обеспечения завершения миграции с помощью KVM".
  31. ^ «Окончательная документация по API KVM (виртуальной машины на базе ядра) — документация по ядру Linux».
  32. ^ "Правила лицензирования ядра Linux — Документация ядра Linux". www.kernel.org . Архивировано из оригинала 7 марта 2020 г. Получено 2020-01-06 .

Библиография

  • Амит Шах (2016-11-02). "Десять лет KVM". lwn.net . Получено 2017-02-10 .
  • Лучшие практики для виртуальной машины на базе ядра. Архивировано 06.11.2019 в Wayback Machine , IBM, второе издание, апрель 2012 г.
  • Улучшение производительности Virtio-blk, KVM Forum 2012, 8 ноября 2012 г., Asias He
  • Викибук QEMU и KVM
  • crosvm - монитор виртуальной машины Chrome OS
  • Петарда VMM для KVM
Взято с "https://en.wikipedia.org/w/index.php?title=Виртуальная_машина_на_основе_ядра&oldid=1272855020"