Виртуальная машина на основе ядра
![]() | |
![]() Снимок экрана: QEMU/KVM, на котором работают гостевые системы NetBSD и OpenIndiana на хосте Arch Linux . | |
Оригинальный автор(ы) | Кумранет |
---|---|
Разработчик(и) | Сообщество ядра Linux |
Репозиторий | |
Написано в | С |
Операционная система | Unix-подобный |
Платформа | ARM , PowerPC , ESA/390 , IA-32 , x86-64 |
Тип | Гипервизор |
Лицензия | GNU GPL или LGPL |
Веб-сайт | www |
Виртуальная машина на основе ядра ( KVM ) — это с открытым исходным кодом бесплатный модуль виртуализации в ядре Linux , который позволяет ядру функционировать в качестве гипервизора . Он был объединен с основным ядром Linux в версии 2.6.20, выпущенной 5 февраля 2007 года. [ 1 ] Для KVM требуется процессор с аппаратными расширениями виртуализации , например Intel VT или AMD-V . [ 2 ] KVM также был портирован на другие операционные системы, такие как FreeBSD. [ 3 ] и иллюзии [ 4 ] в виде загружаемых модулей ядра.
KVM изначально был разработан для процессоров x86 , но с тех пор был портирован на ESA/390 . [ 5 ] PowerPC , [ 6 ] ИА-64 и АРМ . [ 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 ] НетБСД , [ 16 ] План 9 [ 17 ] и гости Windows, использующие VirtIO API . [ 18 ] Сюда входят паравиртуальная карта Ethernet , контроллер дискового ввода-вывода, [ 19 ] драйвер воздушного шара и VGA графический интерфейс с использованием драйверов SPICE или VMware .
История
[ редактировать ]Ави Кивив начал разработку KVM в середине 2006 года в Qumranet , технологическом стартапе. [ 20 ] которая была приобретена Red Hat в 2008 году. [ 21 ]
KVM появился в октябре 2006 г. [ 22 ] и был объединен с основной веткой ядра Linux в версии ядра 2.6.20, выпущенной 5 февраля 2007 года. [ 1 ]
KVM поддерживается Паоло Бонзини. [ 23 ]
Внутренности
[ редактировать ]
KVM обеспечивает абстракцию устройства, но не эмулирует процессор. Это обнажает /dev/kvm , который хост пользовательского режима может затем использовать для:
- Настройте адресное пространство гостевой виртуальной машины. Хост также должен предоставить образ прошивки (обычно специальный BIOS при эмуляции ПК), который гость может использовать для загрузки в свою основную ОС.
- Подайте гостю симулированный ввод-вывод.
- Сопоставьте видеодисплей гостя обратно с хостом системы.
Первоначально разветвленная версия QEMU была предоставлена для запуска гостевых систем и работы с эмуляцией оборудования, которая не обрабатывается ядром. Эта поддержка в конечном итоге была объединена с проектом разведки и добычи. В настоящее время существует множество мониторов виртуальных машин (VMM), которые могут использовать интерфейс KVM, включая kvmtool, crosvm и Firecracker , а также многочисленные специализированные VMM, созданные с использованием таких инфраструктур, как Rust-VMM.
Внутри KVM использует SeaBIOS как реализацию 16-битного x86 BIOS с открытым исходным кодом . [ 25 ]
Функции
[ редактировать ]KVM поддерживает виртуальные процессоры с возможностью горячей замены . [ 26 ] динамическое управление памятью, [ 27 ] и Live Migration с февраля 2007 года. [ 28 ] [ 29 ] Это также снижает влияние рабочих нагрузок, требующих интенсивной записи в память, на процесс миграции. [ 30 ]
Эмулируемое оборудование
[ редактировать ]KVM сам по себе эмулирует очень мало аппаратного обеспечения, вместо этого отдавая предпочтение клиентскому приложению более высокого уровня, такому как QEMU , crosvm или Firecracker, для эмуляции устройства.
KVM предоставляет следующие эмулируемые устройства:
Графические инструменты управления
[ редактировать ]
- Kimchi — веб-инструмент управления виртуализацией для KVM
- Диспетчер виртуальных машин — поддерживает создание, редактирование, запуск и остановку виртуальных машин на базе KVM, а также живую или холодную миграцию виртуальных машин между хостами.
- Proxmox Virtual Environment — пакет управления виртуализацией с открытым исходным кодом, включая KVM и LXC . Он имеет установщик на «голое железо», графический интерфейс удаленного управления через веб-интерфейс, стек кластеров высокой доступности, унифицированное хранилище, гибкую сеть и дополнительную коммерческую поддержку.
- OpenQRM – платформа управления для управления разнородными инфраструктурами центров обработки данных
- GNOME Boxes — интерфейс Gnome для управления гостями libvirt в Linux.
- oVirt — инструмент управления виртуализацией KVM с открытым исходным кодом, созданный на основе libvirt.
Лицензирование
[ редактировать ]Компонент режима ядра KVM является частью ядра Linux , который сам лицензируется по лицензии GNU General Public License, версия 2 . [ 32 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б «Ядро Linux 2.6.20, Раздел 2.2. Поддержка виртуализации через KVM» . kernelnewbies.org . 05 февраля 2007 г. Проверено 16 июня 2014 г.
- ^ Часто задаваемые вопросы о KVM: что мне нужно для использования KVM?
- ^ «Ежеквартальный отчет о состоянии FreeBSD: перенос Linux KVM на FreeBSD» .
- ^ «КВМ на иллюминациях» .
- ^ «Gmane — почта для новостей и обратно» . Архивировано из оригинала 29 сентября 2007 г. Проверено 7 мая 2007 г.
- ↑ Gmane Loom. Архивировано 29 сентября 2007 г. в Wayback Machine.
- ^ «Проект с открытым исходным кодом KVM/ARM» . Архивировано из оригинала 10 марта 2013 г. Проверено 1 ноября 2017 г.
- ^ Кристофер Далл; Джейсон Ние (2014). «KVM/ARM: проектирование и реализация гипервизора ARM для Linux» . Международная конференция ACM по архитектурной поддержке языков программирования и операционных систем.
- ^ «kernel/git/torvalds/linux.git: KVM: ia64: удалить» .
- ^ «KVM wiki: Статус гостевой поддержки» . Проверено 27 мая 2007 г.
- ^ «Запуск Mac OS X в качестве гостя QEMU/KVM» . Проверено 20 августа 2014 г.
- ^ «статус» . Gnu.org . Проверено 12 февраля 2014 г.
- ^ «Статус гостевой поддержки — KVM» . Linux-kvm.org . Проверено 12 февраля 2014 г.
- ^ «Справочная страница OpenBSD virtio(4)» . Проверено 4 февраля 2018 г.
- ^ «Бинарные пакеты virtio для FreeBSD» . Проверено 29 октября 2012 г.
- ^ «Справочная страница NetBSD virtio(4)» . Архивировано из оригинала 13 ноября 2019 г. Проверено 15 июля 2013 г.
- ^ «план9фронт» . Проверено 11 февраля 2013 г.
- ^ «API для виртуального ввода-вывода: virtio» . LWN.net . 11 июля 2007 г. Проверено 16 апреля 2014 г.
- ^ «Цель SCSI для KVM-вики» . Linux-iscsi.org. 07.08.2012. Архивировано из оригинала 5 июня 2020 г. Проверено 12 августа 2012 г.
- ^ Интервью: Ави Кивив. Архивировано 26 апреля 2007 г. в Wayback Machine на KernelTrap.
- ^ «Red Hat укрепляет лидерство в области виртуализации благодаря приобретению Qumranet, Inc.» . Красная шляпа . 4 сентября 2008 года . Проверено 16 июня 2015 г.
- ^ «KVM 15 оснащен функцией динамической миграции | IT World Canada News» . 7 марта 2007 г.
- ^ Либби Кларк (7 апреля 2015 г.). «Истории успеха Git и советы от специалиста по обслуживанию KVM Паоло Бонзини» . Linux.com . Архивировано из оригинала 15 марта 2016 года . Проверено 17 июня 2015 г.
- ^ Хоа Хюинь; Стефан Хайноци (2010). «Обсуждение производительности стека хранилища KVM/QEMU» (PDF) . ИБМ . Конференция сантехников Linux . Проверено 3 января 2015 г. [ постоянная мертвая ссылка ]
- ^ «Морской БИОС» . seabios.org. 21 декабря 2013 г. Проверено 16 июня 2014 г.
- ^ «Горячее подключение виртуальных процессоров с помощью Red Hat Enterprise Virtualization Manager» .
- ^ «Часто задаваемые вопросы – КВМ» .
- ^ «Выпуск KVM-15 [LWN.net]» .
- ^ «Миграция – КВМ» .
- ^ «Дэниел П. Берранже» Архив блога » Анализ методов обеспечения завершения миграции с помощью KVM» .
- ^ «Полная документация по API KVM (виртуальной машины на основе ядра) — документация по ядру Linux» .
- ^ «Правила лицензирования ядра Linux — Документация по ядру Linux» . www.kernel.org . Архивировано из оригинала 7 марта 2020 года . Проверено 6 января 2020 г.
Библиография
[ редактировать ]- Амит Шах (2 ноября 2016 г.). «Десять лет КВМ» . lwn.net . Проверено 10 февраля 2017 г.
Внешние ссылки
[ редактировать ]- Лучшие практики для виртуальной машины на основе ядра. Архивировано 6 ноября 2019 г. на сайте Wayback Machine , IBM, второе издание, апрель 2012 г.
- Улучшение производительности Virtio-blk , KVM Forum 2012, 8 ноября 2012 г., Азиас Хе
- Викибук QEMU и KVM
- crosvm — монитор виртуальной машины Chrome OS
- Петарда ВММ для KVM