3. kulemin. kvm. june 01, 2013

30
Технология виртуализации KVM Михаил Кулёмин, сообщество Fedora.

Upload: ru-fedora-moscow-2013

Post on 09-Aug-2015

25 views

Category:

Presentations & Public Speaking


1 download

TRANSCRIPT

Page 1: 3. Kulemin. kvm. June 01, 2013

Технология виртуализации KVM

Михаил Кулёмин,сообщество Fedora.

Page 2: 3. Kulemin. kvm. June 01, 2013

Содержание

● Компоненты системы виртуализации– /dev/kvm

– qemu-kvm

– libvirt

● Утилиты для работы с виртуальными машинами – virsh, virt-manager

– guestfish, libguestfs

● Демо (понравившиеся моменты)

Page 3: 3. Kulemin. kvm. June 01, 2013

KVM

● Технология полной виртуализации для Linux● Требует поддержки со стороны оборудования

– Intel-VT– AMD-V– ARM virtualization extensions– PowerPC ISA 2.06

● Поддерживает различные гостевые системы● Разрабатывается с 2006 года● В ядре с января 2007 (2.6.20)

Page 4: 3. Kulemin. kvm. June 01, 2013

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)

Page 5: 3. Kulemin. kvm. June 01, 2013

Источник: http://slid.es/braoru/kvm

Page 6: 3. Kulemin. kvm. June 01, 2013

Некоторые особенности KVM

● Сравнительно небольшая кодовая база в ядре

● Активное использование существующих технологий в ядре в т.ч. – Планировщик задач

– IO

– cgroups

● Использование кода qemu для запуска виртуальных машин и эмуляции устройств (Native KVM Tools — альтернатива)

Page 7: 3. Kulemin. kvm. June 01, 2013

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

Page 8: 3. Kulemin. kvm. June 01, 2013

Libvirt

● Библиотека для управления различными технологиями виртуализации– KVM

– Xen

– Virtualbox

– VMware

– OpenVZ

– ...

● Демон libvirtd — запускает ВМ, конфигурирует сеть, диски, прочие устройства для виртуальной машины

● Клиенты:– Virsh (CLI)

– Virt-manager (GUI)

● API: C, C++, Python ...● Дополнительный слой абстракции

Page 9: 3. Kulemin. kvm. June 01, 2013

Работа с образами ВМ

● qemu-img– Создание, изменение, конвертация образов ВМ

– Снапшоты, создание «дочерних» образов

● libguestfs — библиотека для редактирования содержания образов ВМ– guestfish — интерактивная оболочка

– virt-tools — набор полезных утилит

– API (много языков программирования)

Page 10: 3. Kulemin. kvm. June 01, 2013

Системы управления виртуализацией

● Автоматизация настройки и функционирования множества хостов

● Как правило работают через libvirt: поддерживают не только KVM

● Еще один слой абстракции● Основа облачных (IaaS) решений● Примеры: Ovirt (RHEV), Openstack,

OpenNebula, Proxmox...

Page 11: 3. Kulemin. kvm. June 01, 2013

Ссылки

● 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-guide.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

Page 12: 3. Kulemin. kvm. June 01, 2013

Ссылки

● KVM API documentation

https://github.com/mirrors/linux/blob/master/Documentation/virtual/kvm/api.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

Page 13: 3. Kulemin. kvm. June 01, 2013

Спасибо за внимание.Вопросы.

Page 14: 3. Kulemin. kvm. June 01, 2013

Динамическое управление ресурсами (KVM).

Михаил Кулёмин,сообщество Fedora.

Page 15: 3. Kulemin. kvm. June 01, 2013

Содержание

● Зачем это нужно?● Какие возможности существуют

– Блочный ввод/вывод

– Сеть– Память– CPU

● Автоматическое управление ресурсами● Демо

Page 16: 3. Kulemin. kvm. June 01, 2013

Что? Зачем?

● Ресурсы системы всегда ограничены, их необходимо грамотно распределять

● Но виртуальные машины могут крайне быстро изменять свое состояние

● Особенно актуально в облачных системах– Основной товар — сервис

– Компромисс между качеством сервиса и затраченными ресурсами

● Облачная система — биржа ресурсов?

Page 17: 3. Kulemin. kvm. June 01, 2013

Вводные

● Управление ресурсами: мониторинг и возможность изменения настройки

● Qemu — один из процессов в операционной системе

● Сgroups!● + специфические для виртуализации вещи● Интеграция с libvirt

Page 18: 3. Kulemin. kvm. June 01, 2013

Блочный ввод/вывод

● Два различных механизма– Cgroups (пропорциональный и абсолютный)

– Qemu IO throttling (в тч NFS)

● Поддержка в libvirt:– blkdeviotune

– blkiotune

– domblkstat

Page 19: 3. Kulemin. kvm. June 01, 2013

Сеть

● Стандартные системные средства ограничения трафика (tc)

● Libvirt– domifstat

– domiftune

Page 20: 3. Kulemin. kvm. June 01, 2013

CPU

● Планировщик задач в ядре.● Пропорциональное разделение ресурсов● Libvirt

– Cpu-stats

– Schedinfo

● Поддержка добавление/удаления CPU

Page 21: 3. Kulemin. kvm. June 01, 2013

Память

● Balloon driver– Динамическое изменение количества памяти

– Требует драйвера в ОС

● KSM– Использовалась до KVM Может использоваться

и без KVM (Комментарий на последнем слайде)

– Для использования в KVM был нужен минимальный патч

Page 22: 3. Kulemin. kvm. June 01, 2013

Balloon

● Libvirt– setmem

– dommemstat

Page 23: 3. Kulemin. kvm. June 01, 2013

KSM

● /sys/kernel/mm/ksm/● Libvirt

– node-memory-tune

Page 24: 3. Kulemin. kvm. June 01, 2013

Автоматическое управление

● Сложно!– Последствия «управления» трудно предугадать

– Взаимосвязь между ресурсами

● Требуется комплексный анализ данных● Выработка критериев управления

– Производительность узла

– Производительность виртуальной машины

– Производительность кластера

● Случайный процесс– Расчет рисков

– Аналогия с существующими процессами

Page 25: 3. Kulemin. kvm. June 01, 2013

Пример управления памятью

Page 26: 3. Kulemin. kvm. June 01, 2013

Влияние на «производительность»

Page 27: 3. Kulemin. kvm. June 01, 2013

Ссылки

● 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-throttling-in-qemu.pdf● Управление памятью в гипервизоре. Все о виртуализации памяти в

Parallels

http://profyclub.ru/docs/301● KSM and KVM

http://serverascode.com/2012/11/11/ksm-kvm.html

Page 28: 3. Kulemin. kvm. June 01, 2013

Ссылки

● Increasing memory density by using KSM

https://www.kernel.org/doc/ols/2009/ols2009-pages-19-28.pdf● Overcommit KVM resources

http://www.ibm.com/developerworks/ru/library/l-overcommit-kvm-resources/● Resource management guide

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Resource_Management_Guide/index.html

Page 29: 3. Kulemin. kvm. June 01, 2013

Комментарий про 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 за очень конструктивное замечание.

Page 30: 3. Kulemin. kvm. June 01, 2013

Спасибо за внимание.Вопросы.