SlideShare a Scribd company logo
Технология виртуализации KVM
Михаил Кулёмин,
сообщество Fedora.
Содержание
● Компоненты системы виртуализации
– /dev/kvm
– qemu-kvm
– libvirt
● Утилиты для работы с виртуальными машинами
– virsh, virt-manager
– guestfish, libguestfs
● Демо (понравившиеся моменты)
KVM
● Технология полной виртуализации для Linux
● Требует поддержки со стороны оборудования
– Intel-VT
– AMD-V
– ARM virtualization extensions
– PowerPC ISA 2.06
● Поддерживает различные гостевые системы
● Разрабатывается с 2006 года
● В ядре с января 2007 (2.6.20)
open("/dev/kvm")
ioctl(KVM_CREATE_VM)
ioctl(KVM_CREATE_VCPU)
for (;;) {
ioctl(KVM_RUN)
switch (exit_reason) {
case KVM_EXIT_IO:
/* ... */
case KVM_EXIT_HLT:
/* ... */
}
}
Псевдокод работы с KVM.
(взято blog.vmsplice.net)
Источник: http://slid.es/braoru/kvm
Некоторые особенности KVM
● Сравнительно небольшая кодовая база в
ядре
● Активное использование существующих
технологий в ядре в т.ч.
– Планировщик задач
– IO
– cgroups
● Использование кода qemu для запуска
виртуальных машин и эмуляции устройств
(Native KVM Tools — альтернатива)
qemu-kvm
●
Qemu — изначально эмулятор
● Qemu-kvm — форк кода qemu для работы с KVM.
●
Окончательное слияние кодовой базы — конец 2012
(qemu 1.3)
●
Qemu отвечает за работу устройств ввода вывода,
управление виртуальной машиной.
●
Виртуальная машина — обычный процесс в
операционной системе
● Оперативное управление при помощи qemu monitor
● Пример команды запуска:
qemu-kvm -enable-kvm -m 1512 -smp 2,sockets=1,cores=2
-drive file=/dev/vg_storage/Fedora,if=virtio,format=raw
Libvirt
● Библиотека для управления различными технологиями виртуализации
– KVM
– Xen
– Virtualbox
– VMware
– OpenVZ
– ...
● Демон libvirtd — запускает ВМ, конфигурирует сеть, диски, прочие
устройства для виртуальной машины
● Клиенты:
– Virsh (CLI)
– Virt-manager (GUI)
● API: C, C++, Python ...
● Дополнительный слой абстракции
Работа с образами ВМ
● qemu-img
– Создание, изменение, конвертация образов ВМ
– Снапшоты, создание «дочерних» образов
● libguestfs — библиотека для редактирования
содержания образов ВМ
– guestfish — интерактивная оболочка
– virt-tools — набор полезных утилит
– API (много языков программирования)
Системы управления
виртуализацией
● Автоматизация настройки и
функционирования множества хостов
● Как правило работают через libvirt:
поддерживают не только KVM
● Еще один слой абстракции
● Основа облачных (IaaS) решений
● Примеры: Ovirt (RHEV), Openstack,
OpenNebula, Proxmox...
Ссылки
● KVM official site
http://www.linux-kvm.org
● A step by step guide for linux kvm virtualization on embedded systems
(ARM Cortex-A15)
http://www.virtualopensystems.com/media/kvm-resources/kvm-arm-guid
e.pdf
● Hardware Assisted Virtualization Intel Virtualization Technology
http://linux.linti.unlp.edu.ar/images/f/f1/Vtx.pdf
● Architecture of the Kernel-based Virtual Machine (KVM)
http://www.linux-kongress.org/2010/slides/KVM-Architecture-LK2010.pdf
● QEMU Code Overview
http://vmsplice.net/~stefan/qemu-code-overview.pdf
● KVM Internals Code and More
http://slid.es/braoru/kvm
Ссылки
● KVM API documentation
https://github.com/mirrors/linux/blob/master/Documentation/virtual/kvm/ap
i.txt
● Native KVM tools
https://github.com/penberg/linux/kvm/tree/master/tools/kvm
● Qemu home page
http://wiki.qemu.org
● Libvirt home page
http://www.libvirt.org/
● Kashyap Chamarthi`s blog (RedHat virtualization team)
http://kashyapc.wordpress.com
● Richard WM Jones`s blog
http://rwmj.wordpress.com
Спасибо за внимание.
Вопросы.
Динамическое управление
ресурсами (KVM).
Михаил Кулёмин,
сообщество Fedora.
Содержание
● Зачем это нужно?
● Какие возможности существуют
– Блочный ввод/вывод
– Сеть
– Память
– CPU
● Автоматическое управление ресурсами
● Демо
Что? Зачем?
● Ресурсы системы всегда ограничены, их
необходимо грамотно распределять
● Но виртуальные машины могут крайне
быстро изменять свое состояние
● Особенно актуально в облачных системах
– Основной товар — сервис
– Компромисс между качеством сервиса и
затраченными ресурсами
● Облачная система — биржа ресурсов?
Вводные
● Управление ресурсами: мониторинг и
возможность изменения настройки
● Qemu — один из процессов в операционной
системе
● Сgroups!
● + специфические для виртуализации вещи
● Интеграция с libvirt
Блочный ввод/вывод
● Два различных механизма
– Cgroups (пропорциональный и абсолютный)
– Qemu IO throttling (в тч NFS)
● Поддержка в libvirt:
– blkdeviotune
– blkiotune
– domblkstat
Сеть
● Стандартные системные средства
ограничения трафика (tc)
● Libvirt
– domifstat
– domiftune
CPU
● Планировщик задач в ядре.
● Пропорциональное разделение ресурсов
● Libvirt
– Cpu-stats
– Schedinfo
● Поддержка добавление/удаления CPU
Память
● Balloon driver
– Динамическое изменение количества памяти
– Требует драйвера в ОС
● KSM
– Использовалась до KVM Может использоваться
и без KVM (Комментарий на последнем слайде)
– Для использования в KVM был нужен
минимальный патч
Balloon
● Libvirt
– setmem
– dommemstat
KSM
● /sys/kernel/mm/ksm/
● Libvirt
– node-memory-tune
Автоматическое управление
● Сложно!
– Последствия «управления» трудно предугадать
– Взаимосвязь между ресурсами
● Требуется комплексный анализ данных
● Выработка критериев управления
– Производительность узла
– Производительность виртуальной машины
– Производительность кластера
● Случайный процесс
– Расчет рисков
– Аналогия с существующими процессами
Пример управления памятью
Влияние на
«производительность»
Ссылки
● Using KSM with KVM
http://www.linux-kvm.com/content/using-ksm-kernel-samepage-merging-kvm
● Динамическое выделение памяти для виртуальных машин
http://www.ossportal.ru/technologies/kvm/blogs/160
● Qemu DiskIOlimits
http://wiki.qemu.org/Features/DiskIOLimits
● IO throttling in qemu
http://www.linux-kvm.org/wiki/images/7/72/2011-forum-keep-a-limit-on-it-io-thro
● Управление памятью в гипервизоре. Все о виртуализации памяти в
Parallels
http://profyclub.ru/docs/301
● KSM and KVM
http://serverascode.com/2012/11/11/ksm-kvm.html
Ссылки
● Increasing memory density by using KSM
https://www.kernel.org/doc/ols/2009/ols2009-pages
● Overcommit KVM resources
http://www.ibm.com/developerworks/ru/library/l-ove
● Resource management guide
https://access.redhat.com/site/documentation/en-U
Комментарий про KSM
Честно считал, что KSM использовался в CERN до того как стал работать с KVM. Счас
поднял ссылки и попробую восстановить истину и даты.
Итак касаемо самой технологии есть две статьи на LWN (2008 и 2009 год
соответственно) http://lwn.net/Articles/306704/ http://lwn.net/Articles/330589/ В частности
во второй статье указано, что для KSM был переписан с использованием RB деревьев,
а не хэш таблиц (чтобы не вступать в конфликт с патентов VMware).
Статья про CERN http://link.springer.com/content/pdf/10.1007/978-3-642-35893-7_5.pdf
(полный текст недоступен) и статья про KSM с упоминанием CERN (2009 год)
(https://www.kernel.org/doc/ols/2009/ols2009-pages-19-28.pdf) (А авторах разработчик
самого KSM)
Таким образом должен признаться, что ввел народ в заблуждение. KSM активно
тестировался в CERN без использования виртуализации, но уже после того как был
написан для работы с KVM (Что собственно ссылки и доказывают).
Прошу прощения у аудитории. Исправление в презентацию внесу - действительно
перепутал, почему то в сознании у меня была другая версия событий. Спасибо
товарищу @dyasny за очень конструктивное замечание.
Спасибо за внимание.
Вопросы.

More Related Content

What's hot

Н. Иготти. Виртуализация и виртуальные машины. Лекция 12
Н. Иготти. Виртуализация и виртуальные машины. Лекция 12Н. Иготти. Виртуализация и виртуальные машины. Лекция 12
Н. Иготти. Виртуализация и виртуальные машины. Лекция 12Computer Science Club
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Minsk Linux User Group
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
Nadzeya Pus
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание средыАндрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание среды
DrupalSib
 
Антон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с VagrantАнтон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с VagrantDaria Oreshkina
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Mikhail Davydov
 
Шаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в VirtuozzoШаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в Virtuozzo
CEE-SEC(R)
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Magento 2 in Kubernetes Cluster
Magento 2  in Kubernetes ClusterMagento 2  in Kubernetes Cluster
Magento 2 in Kubernetes Cluster
Kirill Morozov
 
Яндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендовЯндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендовvashik
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игру
FDConf
 
nginx internals
nginx internalsnginx internals
nginx internalsredivy
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
Andrey Markelov
 
Вычислительная инфраструктура и системы хранения Huawei
Вычислительная инфраструктура и системы хранения HuaweiВычислительная инфраструктура и системы хранения Huawei
Вычислительная инфраструктура и системы хранения Huawei
КРОК
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaS
Provectus
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
Ontico
 
Масштабирование CinemaVR
Масштабирование CinemaVRМасштабирование CinemaVR
Масштабирование CinemaVR
Andrey Tatarinov
 

What's hot (20)

Н. Иготти. Виртуализация и виртуальные машины. Лекция 12
Н. Иготти. Виртуализация и виртуальные машины. Лекция 12Н. Иготти. Виртуализация и виртуальные машины. Лекция 12
Н. Иготти. Виртуализация и виртуальные машины. Лекция 12
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание средыАндрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание среды
 
Антон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с VagrantАнтон Каляев — Быстрое развертывание среды с Vagrant
Антон Каляев — Быстрое развертывание среды с Vagrant
 
Introduction in Node.js (in russian)
Introduction in Node.js (in russian)Introduction in Node.js (in russian)
Introduction in Node.js (in russian)
 
Шаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в VirtuozzoШаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в Virtuozzo
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Magento 2 in Kubernetes Cluster
Magento 2  in Kubernetes ClusterMagento 2  in Kubernetes Cluster
Magento 2 in Kubernetes Cluster
 
Яндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендовЯндекс.КИТ: Построение виртуальных стендов
Яндекс.КИТ: Построение виртуальных стендов
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игру
 
nginx internals
nginx internalsnginx internals
nginx internals
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
 
Вычислительная инфраструктура и системы хранения Huawei
Вычислительная инфраструктура и системы хранения HuaweiВычислительная инфраструктура и системы хранения Huawei
Вычислительная инфраструктура и системы хранения Huawei
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaS
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
Масштабирование сети VR-аттракционов CinemaVR / Андрей Татаринов (VRTech)
 
Масштабирование CinemaVR
Масштабирование CinemaVRМасштабирование CinemaVR
Масштабирование CinemaVR
 

Viewers also liked

2009 Inquisitor 3
2009 Inquisitor 32009 Inquisitor 3
2009 Inquisitor 3Liudmila Li
 
Empathy
EmpathyEmpathy
7.Ns.Branch Repeater
7.Ns.Branch Repeater7.Ns.Branch Repeater
7.Ns.Branch Repeater
Liudmila Li
 
oVirt 3.6 Deep Dive: Refresh LUN size
oVirt 3.6 Deep Dive: Refresh LUN sizeoVirt 3.6 Deep Dive: Refresh LUN size
oVirt 3.6 Deep Dive: Refresh LUN size
Freddy Rolland
 
Erasure codes and storage tiers on gluster
Erasure codes and storage tiers on glusterErasure codes and storage tiers on gluster
Erasure codes and storage tiers on gluster
Red_Hat_Storage
 
Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...
Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...
Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...
КРОК
 

Viewers also liked (7)

Rootconf Virt
Rootconf VirtRootconf Virt
Rootconf Virt
 
2009 Inquisitor 3
2009 Inquisitor 32009 Inquisitor 3
2009 Inquisitor 3
 
Empathy
EmpathyEmpathy
Empathy
 
7.Ns.Branch Repeater
7.Ns.Branch Repeater7.Ns.Branch Repeater
7.Ns.Branch Repeater
 
oVirt 3.6 Deep Dive: Refresh LUN size
oVirt 3.6 Deep Dive: Refresh LUN sizeoVirt 3.6 Deep Dive: Refresh LUN size
oVirt 3.6 Deep Dive: Refresh LUN size
 
Erasure codes and storage tiers on gluster
Erasure codes and storage tiers on glusterErasure codes and storage tiers on gluster
Erasure codes and storage tiers on gluster
 
Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...
Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...
Решения КРОК для виртуализации и консолидации вычислительных и системных ресу...
 

Similar to 3. Kulemin. kvm. June 01, 2013

1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013
ru-fedora-moscow-2013
 
Замкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XENЗамкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XEN
kzissu
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
OpenVZ
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
Yandex
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
OSLL
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
Peri Innovations
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Ontico
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAMikhail Kurnosov
 
Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...HappyDev
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayAndrey Rebrov
 
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Ontico
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
oelifantiev
 
Openstack
OpenstackOpenstack
Openstack
Nick Mishin
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
Александр Сигачев
 
Инструменты тестирования ядра Linux
Инструменты тестирования ядра LinuxИнструменты тестирования ядра Linux
Инструменты тестирования ядра Linux
Denis Efremov
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Ontico
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Ontico
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
Ivan Grishaev
 
Тернии контейнеризованных приложений и микросервисов
Тернии контейнеризованных приложений и микросервисовТернии контейнеризованных приложений и микросервисов
Тернии контейнеризованных приложений и микросервисов
Ivan Kruglov
 

Similar to 3. Kulemin. kvm. June 01, 2013 (20)

1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013
 
Замкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XENЗамкнутая программная среда. Виртуализация XEN
Замкнутая программная среда. Виртуализация XEN
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
 
linux and freebsd monitoring
linux and freebsd monitoringlinux and freebsd monitoring
linux and freebsd monitoring
 
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
Как мы строили Jelastic - облачную платформу (PaaS) нового поколения (Дмитрий...
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
 
Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
Nutanix Acropolis - облако на базе KVM под ключ, Максим Шапошников (Nutanix)
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
 
Openstack
OpenstackOpenstack
Openstack
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Инструменты тестирования ядра Linux
Инструменты тестирования ядра LinuxИнструменты тестирования ядра Linux
Инструменты тестирования ядра Linux
 
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
Android Cloud... точнее Cloud из Android / Охрименко Алексей (Acronis)
 
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
Игры с виртуализацией в JavaScript, или как я переписал эмулятор, Евгений Пот...
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Тернии контейнеризованных приложений и микросервисов
Тернии контейнеризованных приложений и микросервисовТернии контейнеризованных приложений и микросервисов
Тернии контейнеризованных приложений и микросервисов
 

3. Kulemin. kvm. June 01, 2013

  • 1. Технология виртуализации KVM Михаил Кулёмин, сообщество Fedora.
  • 2. Содержание ● Компоненты системы виртуализации – /dev/kvm – qemu-kvm – libvirt ● Утилиты для работы с виртуальными машинами – virsh, virt-manager – guestfish, libguestfs ● Демо (понравившиеся моменты)
  • 3. KVM ● Технология полной виртуализации для Linux ● Требует поддержки со стороны оборудования – Intel-VT – AMD-V – ARM virtualization extensions – PowerPC ISA 2.06 ● Поддерживает различные гостевые системы ● Разрабатывается с 2006 года ● В ядре с января 2007 (2.6.20)
  • 4. open("/dev/kvm") ioctl(KVM_CREATE_VM) ioctl(KVM_CREATE_VCPU) for (;;) { ioctl(KVM_RUN) switch (exit_reason) { case KVM_EXIT_IO: /* ... */ case KVM_EXIT_HLT: /* ... */ } } Псевдокод работы с KVM. (взято blog.vmsplice.net)
  • 6. Некоторые особенности KVM ● Сравнительно небольшая кодовая база в ядре ● Активное использование существующих технологий в ядре в т.ч. – Планировщик задач – IO – cgroups ● Использование кода qemu для запуска виртуальных машин и эмуляции устройств (Native KVM Tools — альтернатива)
  • 7. qemu-kvm ● Qemu — изначально эмулятор ● Qemu-kvm — форк кода qemu для работы с KVM. ● Окончательное слияние кодовой базы — конец 2012 (qemu 1.3) ● Qemu отвечает за работу устройств ввода вывода, управление виртуальной машиной. ● Виртуальная машина — обычный процесс в операционной системе ● Оперативное управление при помощи qemu monitor ● Пример команды запуска: qemu-kvm -enable-kvm -m 1512 -smp 2,sockets=1,cores=2 -drive file=/dev/vg_storage/Fedora,if=virtio,format=raw
  • 8. Libvirt ● Библиотека для управления различными технологиями виртуализации – KVM – Xen – Virtualbox – VMware – OpenVZ – ... ● Демон libvirtd — запускает ВМ, конфигурирует сеть, диски, прочие устройства для виртуальной машины ● Клиенты: – Virsh (CLI) – Virt-manager (GUI) ● API: C, C++, Python ... ● Дополнительный слой абстракции
  • 9. Работа с образами ВМ ● qemu-img – Создание, изменение, конвертация образов ВМ – Снапшоты, создание «дочерних» образов ● libguestfs — библиотека для редактирования содержания образов ВМ – guestfish — интерактивная оболочка – virt-tools — набор полезных утилит – API (много языков программирования)
  • 10. Системы управления виртуализацией ● Автоматизация настройки и функционирования множества хостов ● Как правило работают через libvirt: поддерживают не только KVM ● Еще один слой абстракции ● Основа облачных (IaaS) решений ● Примеры: Ovirt (RHEV), Openstack, OpenNebula, Proxmox...
  • 11. Ссылки ● KVM official site http://www.linux-kvm.org ● A step by step guide for linux kvm virtualization on embedded systems (ARM Cortex-A15) http://www.virtualopensystems.com/media/kvm-resources/kvm-arm-guid e.pdf ● Hardware Assisted Virtualization Intel Virtualization Technology http://linux.linti.unlp.edu.ar/images/f/f1/Vtx.pdf ● Architecture of the Kernel-based Virtual Machine (KVM) http://www.linux-kongress.org/2010/slides/KVM-Architecture-LK2010.pdf ● QEMU Code Overview http://vmsplice.net/~stefan/qemu-code-overview.pdf ● KVM Internals Code and More http://slid.es/braoru/kvm
  • 12. Ссылки ● KVM API documentation https://github.com/mirrors/linux/blob/master/Documentation/virtual/kvm/ap i.txt ● Native KVM tools https://github.com/penberg/linux/kvm/tree/master/tools/kvm ● Qemu home page http://wiki.qemu.org ● Libvirt home page http://www.libvirt.org/ ● Kashyap Chamarthi`s blog (RedHat virtualization team) http://kashyapc.wordpress.com ● Richard WM Jones`s blog http://rwmj.wordpress.com
  • 15. Содержание ● Зачем это нужно? ● Какие возможности существуют – Блочный ввод/вывод – Сеть – Память – CPU ● Автоматическое управление ресурсами ● Демо
  • 16. Что? Зачем? ● Ресурсы системы всегда ограничены, их необходимо грамотно распределять ● Но виртуальные машины могут крайне быстро изменять свое состояние ● Особенно актуально в облачных системах – Основной товар — сервис – Компромисс между качеством сервиса и затраченными ресурсами ● Облачная система — биржа ресурсов?
  • 17. Вводные ● Управление ресурсами: мониторинг и возможность изменения настройки ● Qemu — один из процессов в операционной системе ● Сgroups! ● + специфические для виртуализации вещи ● Интеграция с libvirt
  • 18. Блочный ввод/вывод ● Два различных механизма – Cgroups (пропорциональный и абсолютный) – Qemu IO throttling (в тч NFS) ● Поддержка в libvirt: – blkdeviotune – blkiotune – domblkstat
  • 19. Сеть ● Стандартные системные средства ограничения трафика (tc) ● Libvirt – domifstat – domiftune
  • 20. CPU ● Планировщик задач в ядре. ● Пропорциональное разделение ресурсов ● Libvirt – Cpu-stats – Schedinfo ● Поддержка добавление/удаления CPU
  • 21. Память ● Balloon driver – Динамическое изменение количества памяти – Требует драйвера в ОС ● KSM – Использовалась до KVM Может использоваться и без KVM (Комментарий на последнем слайде) – Для использования в KVM был нужен минимальный патч
  • 24. Автоматическое управление ● Сложно! – Последствия «управления» трудно предугадать – Взаимосвязь между ресурсами ● Требуется комплексный анализ данных ● Выработка критериев управления – Производительность узла – Производительность виртуальной машины – Производительность кластера ● Случайный процесс – Расчет рисков – Аналогия с существующими процессами
  • 27. Ссылки ● Using KSM with KVM http://www.linux-kvm.com/content/using-ksm-kernel-samepage-merging-kvm ● Динамическое выделение памяти для виртуальных машин http://www.ossportal.ru/technologies/kvm/blogs/160 ● Qemu DiskIOlimits http://wiki.qemu.org/Features/DiskIOLimits ● IO throttling in qemu http://www.linux-kvm.org/wiki/images/7/72/2011-forum-keep-a-limit-on-it-io-thro ● Управление памятью в гипервизоре. Все о виртуализации памяти в Parallels http://profyclub.ru/docs/301 ● KSM and KVM http://serverascode.com/2012/11/11/ksm-kvm.html
  • 28. Ссылки ● Increasing memory density by using KSM https://www.kernel.org/doc/ols/2009/ols2009-pages ● Overcommit KVM resources http://www.ibm.com/developerworks/ru/library/l-ove ● Resource management guide https://access.redhat.com/site/documentation/en-U
  • 29. Комментарий про KSM Честно считал, что KSM использовался в CERN до того как стал работать с KVM. Счас поднял ссылки и попробую восстановить истину и даты. Итак касаемо самой технологии есть две статьи на LWN (2008 и 2009 год соответственно) http://lwn.net/Articles/306704/ http://lwn.net/Articles/330589/ В частности во второй статье указано, что для KSM был переписан с использованием RB деревьев, а не хэш таблиц (чтобы не вступать в конфликт с патентов VMware). Статья про CERN http://link.springer.com/content/pdf/10.1007/978-3-642-35893-7_5.pdf (полный текст недоступен) и статья про KSM с упоминанием CERN (2009 год) (https://www.kernel.org/doc/ols/2009/ols2009-pages-19-28.pdf) (А авторах разработчик самого KSM) Таким образом должен признаться, что ввел народ в заблуждение. KSM активно тестировался в CERN без использования виртуализации, но уже после того как был написан для работы с KVM (Что собственно ссылки и доказывают). Прошу прощения у аудитории. Исправление в презентацию внесу - действительно перепутал, почему то в сознании у меня была другая версия событий. Спасибо товарищу @dyasny за очень конструктивное замечание.