stringtranslate.com

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

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 , который хост пользовательского режима может затем использовать для:

Первоначально была предоставлена ​​разветвленная версия 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

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

Компонент режима ядра 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".
  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». Международная конференция ACM по архитектурной поддержке языков программирования и операционных систем.
  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 binary packages for 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».
  27. ^ "Faq - KVM".
  28. ^ "Выпуск KVM-15 [LWN.net]".
  29. ^ «Миграция - KVM».
  30. ^ "Daniel P. Berrange » Архив блога » Анализ методов обеспечения завершения миграции с помощью KVM".
  31. ^ «Окончательная документация по API KVM (виртуальной машины на базе ядра) — документация по ядру Linux».
  32. ^ "Linux kernel license rules — The Linux Kernel documentation". www.kernel.org . Архивировано из оригинала 7 марта 2020 г. Получено 2020-01-06 .

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

Внешние ссылки