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

3. Kulemin. kvm. June 01, 2013

Aug 09, 2015

Download

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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

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