Внедряем виртуализацию KVM — часть 1

Virus делится опытом по внедрению виртуализации на KVM.

Дисклаймер

Основное преимущество, которое перекрывает все недостатки KVM, – это именно отсутствие маркетинговых заморочек и ограничений, вроде лимита на количество ядер, или лимита на объем памяти, или запрета резервного копирования.

Попутно нет различных странностей вроде пропажи 512 мб озу (см. мою статью «запускаем ESXi на офисных компах»).

Прошу сразу заметить, в данной статье не рассматриваются средства GUI ни управления, ни создания виртуальных машин. По самой простой причине — я рассматриваю именно тот вариант, когда система уже эксплуатируется, а не песочницу для игр.

Впрочем, для полной честности – при опытах у меня не возникало особого неудобства по причине того что нет команды «клонировать» или «переместить».

Всегда можно взять ssh клиент и сделать именно то, что хочется.

Поехали.

Так как KVM работает под Linux то первым делом конечно нужно установить именно его. Мой выбор — Gentoo x86_64.

Установил ядро 2.6.38 и сюрпризом оказалось, что в моей сборке нет модулей kvm_amd и tun, (поскольку процессор AMD Phenom(tm) II X6 1055T).

Пришлось их включать и пересобрать ядро [тут]

(http://en.gentoo-wiki.com/wiki/KVM#Kernel_configuration)

Потом я добавил в скрипт автозапуска /etc/conf.d/local.start

/sbin/modprobe kvm_amd

/sbin/modprobe tun

Поскольку нас интересует вариант когда много виртуалок включены в «виртуальный хаб» то его нужно настроить, добавляем туда же:

/usr/bin/vde_switch -F -s /var/run/vde.sock —tap vde0 -d

/sbin/ifconfig eth0 up

/sbin/ifconfig vde0 up

/sbin/brctl addbr vebr0

/sbin/brctl stp vebr0 on

/sbin/brctl addif vebr0 vde0

/sbin/brctl addif vebr0 eth0

/sbin/ifconfig vebr0 up

/sbin/ifconfig vebr0 inet 192.168.1.114 netmask 255.255.255.0

/sbin/route add -net 0/0 gw 192.168.1.254

Две последние строчки обусловлены тем, что при включении bridge сам сетевой адаптер физически подключенный к сети перестает работать с IPv4 и адреса нужно навешивать на псевдо интерфейс бриджа.

Создадим образ диска, куда будем ставить тестовую винду, чтобы посмотреть, что все в порядке:

qemu-img create -f qcow2 /winxp.img 32G

поскольку мы лишь тестируем систему, то ставим дисковый кэш в режим unsafe, это сделает работу намного быстрее:

-drive file=»/winxp.img»,cache=unsafe,if=virtio,boot=on,aio=native

Чтобы нормально можно было управлять системой через VNC, нужно включить режим сенсорного экрана: -usbdevice tablet

Выбираем порт для vnc (5900+N), и разрешаем всем ( а не только 127.0.0.1) на него ходить: -vnc :8

Выбираем порт для qemu монитора, разрешаем тоже всем:

-monitor telnet:0.0.0.0:4008,server,nowait

Активируем драйвер баллона: -balloon virtio

Скачиваем драйверы для Windows (virtiowin-1.1.16.vfd) по ссылке http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/

В результате получаем такую строку запуска:

kvm -boot d -usbdevice tablet -vnc :8 -monitor telnet:0.0.0.0:4008,server,nowait -drive file=»/winxp.img»,cache=unsafe,if=virtio,boot=on,aio=native -cdrom /winxp.iso -balloon virtio -name vmwin1 -uuid 564d125f-1111-a11f-7ae3-c9dcb9a25626 -fda /virtio-win-1.1.16.vfd -enable-kvm -m 3280 -usb -smp 32,cores=16,sockets=2 -net vde,vlan=0,name=vmwin1,sock=/var/run/vde.sock -net nic,vlan=0,macaddr=00:0c:29:a2:56:26,model=virtio

Устанавливаем Windows XP и проверяем что все работает.

UPD. Читаем продолжение статьи.

Запись опубликована в рубрике KVM, RedHat. Добавьте в закладки постоянную ссылку.

34 комментария: Внедряем виртуализацию KVM — часть 1

  1. Mr.Aloof говорит:

    Ну как же так? А где же настройка HA, общее хранилище и миграция? =(

    О! не сразу понял что это только первая часть… Ждем откровений во второй 😉

  2. virus говорит:

    2Mr.Aloof, чета я не понял…
    неужели мне тебя учить как nfs пользоваться?
    или может быть тебе требуется мой непрофессиональный перевод текста написанного тут http://www.linux-kvm.org/page/Migration ?
    или требуется помощь в написании скрипта на bash который будет поднимать виртуалку на втором узле, когда первый узел помер?

  3. Mr.Aloof говорит:

    А-ХА-ХА. 😀
    Ну мне то и как kvm ставить разжевывать не надо… Я за людей беспокоюсь 😉

  4. email говорит:

    интересно, а плотность размещения получается выше, чем при использовании ESXi?

  5. virus говорит:

    email, Я как-то даже не задумывался над этим.
    Имхо ни ESXi ни XEN ни KVM не добавит вам программно пару процессоров, парочку гигабайт памяти/диска, пару тысяч лишних iops или пару тысяч долларов 🙂
    У меня есть стойкое убеждение что при различных нагрузках (guest+host), настройках guest и оборудовании (host) эта самая плотность будет разной на каждой системе виртуализации, и значит имеет некий абстрактный смысл, измеряется в абстрактных попугаях и собственно судя по последней тенденции это фирменная маркетинговая фишка vmware.
    В реальной жизни в первую очередь важно: стабильность, возможность решить нужные вам задачи и удобство работы.
    Именно во второй части (возможность решить нужные вам задачи) у vmware есть серьезные проблемы.
    Сейчас уже никого не удивишь 48 ядрами на сервер (всего 4 сокета по 12), однако в esx вы не сможете использовать эти ядра на одном контейнере, и даже на двух. Собственно такая же беда с памятью, хотя и менее ярко выраженная, все таки развитие в этой области идет не такими огромными темпами. Но тем не менее уже продаются планки по 8 гиг, и матери с 8 слотами на сокет (получаем 8*8*4=256гиг) однако в esx вы не сможете использовать более 64 гиг на один контейнер.
    Необходимо ещё упомянуть что для того чтобы использовать такие значения (8 vcpu и 64 гиг vram) вам придется купить самую жирную лицензию за много-много сотен нефти.

  6. virus говорит:

    кстати я забыл ещё упомянуть про поддержку оборудования.
    Для полного просветления рекомендую попробовать завести не поддерживаемые сетевухи, raid адаптеры или hba на esxi. или (что более популярно) связать его с UPS. Ну а про то что gui клиент работает только под Windows… это думаю даже упоминать стыдно.

  7. Mr.Aloof говорит:

    Еще забыл упоминуть про vCenter, который требует Win x64 и 4 гига памяти 😉

  8. EGarbuziv говорит:

    > Необходимо ещё упомянуть что для того чтобы использовать такие значения (8 vcpu и 64 гиг vram) вам придется купить самую жирную лицензию

    Один очень полезный документ (http://www.vmware.com/pdf/vsphere4/r41/vsp_41_config_max.pdf) намекает нам, что 64 GB внутри гостя — это не предел. Причём, без каких-либо намёков на ограничения, связанные с лицензией хоста.

    > Memory
    > RAM per virtual machine 255GB
    > Virtual machine swap file size 255GB

    Сейчас не на чем посмотреть, но в понедельник постараюсь проверь существует ли в действительности проблема им. «много-много сотен нефти»

  9. virus говорит:

    ну его как-бы можно и не ставить

  10. admin говорит:

    Про 8 процессоров virus прав. Про ограничения памяти внутри гостя — нет.

  11. admin говорит:

    В контексте — самой дорогой лицензии.

  12. virus говорит:

    судя по всему попалась старая ссылка с ограничениями, вот актуальная:
    http://www.vmware.com/products/vsphere/buy/editions_comparison.html
    и действительно до 256 вы вольны, но в бесплатной редакции 12 ядерный процессор использовать не можете.
    http://blogs.vmware.com/esxi/2009/06/esxi-vs-esx-a-comparison-of-features.html

  13. admin говорит:

    C’est la vie

  14. Андрей Вахитов говорит:

    Задумался над сравнением: KVM vs ESX.
    2virus и 2aloof:
    что вы скажете по поводу наличия в KVM как:
    — эмуляция в госте KVM процессора Pentium 2 (соответственно, отсутствие более поздних инструкций) (сам не проверял — писал Жбанков про это);
    — горячее добавление устройств (процессор, память, жесткий диск, сетевой адаптер);
    — vStorage API for Array Integration;
    — Кластер а-ля DRS/DPM и функционал EVC (хотя если про эмуляцию процессора PII вы подтвердите, функционал EVC можно вычеркивать);
    — Распределенный свитч и Nexus 1000v;
    — Virtual Serial Port Concentrator;
    — Storage I/O Control / Network I/O Control;
    — VMSafe API;
    — Проброс железяк в ВМ через DirectPath.

  15. Mr.Aloof говорит:

    1. Чушь. Просто нужно выставить нужные CPU Flags. Антона уже ткнули носом. Можно выставить любой уровень от 486-го
    2. Реализовано. Где-то в 2008 году. Процессор, память, сеть, диски и прочие PCI-девайсы.
    3. Это как бы задачи хранилища. Вот тут у KVM четкая позиция — храните где и как хотите, а мне давайте путь к этому. Так что это на откуп операционной системе.
    4. Опять же задача автоматизации управления. Можно повторить функционал собственными скриптами, или поискать готовые системы. Про EVC все понятно — оно есть.
    5. А вы их используете? Нет, правда? И даже купили? Если у вас столько денег, чего вы заморачиваетесь выбором? Берите все самое дорогое и оно стопудово будет лучше. 😉
    6. Это есть. Опять же сторонние продукты, ибо сугубо внешний сервис. Очень много софтин COM-over-Ethernet и несколько отличных USB-over-Ethernet
    7. Я не ставил такой задачи, ибо нет такой потребности. Может что-то и есть. Надо смотреть маны. Всегда можно решить прочими средствами (на уровне ОС).
    8. Ух ты какая модная штука =))))
    9. Легко.

    ЗЫ: Напоследок мое громкое IMHO:
    Если у вас офигенно большая инфраструктура в которой крутятся сервисы на кучу денег, то только идиот будет экономить на управлении этим хозяйством.
    KVM — полнофункциональный гипервизор, который в теории может больше чем другие. Особенности его разработки таковы, что целью стоит достижение функционала. Цели управления инфраструктурой не стоит. По этому, нужен или очень подготовленный специалист и подробная документация, или хорошая система управления. Хорошие системы управления стоят денег. Конечно гораздо меньших чем vSphere, но все-же. Бесплатные варианты, увы, не могут соревноваться с vSphere в крупных и сложных инфраструктурах. Думаю всем понятно почему.

  16. Андрей Вахитов говорит:

    1) Убедил 🙂
    2) Круто. Странно, что MS отстает;
    3) То есть нет 🙂
    4) Круто!
    5) То есть нет 😉
    6) Этого нет 😉 То, что предлагает VMware — принципиально иной подход. Ты имеешь доступ к COM-порту виртуалки, даже если ОС еще не загружена!
    Другой вопрос — надо ли оно… Впрочем, тут надо читать функционал и смотреть задачи. Но оно есть и вроде бесплатно!
    7) Нууу. Что-то сомневаюсь, что задача тривиально решается на уровне ОС хоста. Если вообще решается…
    8) В общем-то выпендрился. Ясно, что ни у кого нет. Когда появится адекватный софт, использующий этот API, всякие VDI-внедрения на VMware быстро по цене в отрыв пойдут.
    9) Круто.

    В принципе, ответы были прогнозируемы 🙂
    Там, где реально «на коленке» допилить функционал stand-alone гипервизора, это делается.
    Там, где явно видна работа команды программистов (гипотетический мультипроцессорный Fault-Tolerance, распределенный свитч или I/O Control), ежу понятно, что это вряд ли будет реализовано в аналогичном виде.
    Вон, Xen что-то пытается сделать с распределенным свитчом, но ему до самых первых релизов Nexus 1000v, как третьей Самбе до AD 2000.

  17. Андрей Вахитов говорит:

    2virus: я все-таки думаю, что VMkernel может «добавить программно пару гигов памяти».
    Согласно имеющимся исследованиям функционала Transparent Page Sharing, Memory Balloon и Memory Compression — они вполне позволяют использовать на 30% больше памяти, чем есть на хосте без заметного снижения производительности. Исключение — если ты используешь на хосте только СУБД и/или не угадал с сайзингом.
    Вон, даже MS и Citrix пошли этим путем и начали внедрять свои Memory Balloon…

    При использовании Host Swap на SSD можно выдать еще больше памяти со снижением производительности примерно на 20%.
    Другой вопрос, что память нынче не сильно дешевле, чем Enterprise-SSD 😉

  18. Mr.Aloof говорит:

    6. Это есть. Я имел ввиду соединение виртуалки с реальным портом. Ддля реализации миграции тут нужно будет решить задачу как доставить com порт на соседний хост в виртуалку.
    7. Решается. Тривиально — это к VMware и MS 😉
    Еще раз повторяю: KVM — это гипервизор. Сравнивать его с комплексом vSphere не корректно. Сравнивать нужно с «голым» ESX

  19. virus говорит:

    2Вахитов
    мсье думает в линуксе и квм нету «Transparent Page Sharing, Memory Balloon и Memory Compression»?:))) Речь идет именно про плотность, если ты использовал все фишки на ESXi то при переходе на KVM (или обратно) это не даст каких-либо значительных преимуществ!
    Ну кроме огромной экономии в бабле

  20. Андрей Вахитов говорит:

    :))
    думаю, что нет.
    Ух ты, нашел пруфлинки обратного — http://avikivity.blogspot.com/2008/04/memory-overcommit-with-kvm.html и KSM — https://wiki.archlinux.org/index.php/KVM
    Можешь прислать скрины по эффективности этих фич?

  21. Андрей Вахитов говорит:

    Кстати, в KVM нет «детской» проблемы снапшотов а-ля Xen? Когда они коммитятся при выключении ВМ.

  22. EGarbuziv говорит:

    Ну раз уж вы тут продолжаете флудить, то у меня назрел вопрос 2 virus и Mr.Aloof: сколько реально будет сейчас стоить для бизнеса найти замену админу для великолепно подпёртой всеми костылями и обложенной «самописными скриптами повторяющими функционал» системы на KVM, если, например, вы завтра уходите к конкуренту/мигрируете на ПМЖ в Гватемалу/меняете IT на разведение пчёл?
    Как вы считаете, найдётся желающий за вменяемые деньги разбираться с этим всем прямо на боевой системе? Я уж даже не говорю про те случаи, когда бывший админ уходит по-плохому 😉

  23. virus говорит:

    EGarbuziv
    1. незаменимых людей не бывает, бывает что «итак все работает, чего кипишить»
    2. великолепные люди, как это не странно звучит — это те кто делают великолепно, всегда документируют свои изделия.

  24. j1m говорит:

    Все это напоминает анекдот об американцах, которые считают, что в России по красной площади гуляют медведи. Так, как автор настраивает виртуалку, нормальный Linux-админ никогда не сделает. В Linux уже давно есть libvirt и основанные на нем инструменты, с помощью которых можно создать, клонировать, мигрировать, изменить (вставьте нужное) виртуалку в одну-две команды или клик мыши (кому что больше нравиться).

  25. Anton Zhbankov говорит:

    >Еще раз повторяю: KVM – это гипервизор. Сравнивать его с комплексом vSphere не корректно. Сравнивать нужно с “голым” ESX

    Смысл? Нам ехать надо, управлять инфраструктурой, деньги зарабатывать с помощью того, что в виртуальных машинах работает, а не голые гипервизоры мерять.

    Сотни денег за vSphere Enterprise оказываются не такими уж сотнями, если начать считать стоимость лицензий приложений, которые работают в ВМ, стоимость инфраструктуры (не только серверы, а так же СХД, сети, коммутаторы).

  26. Solaris10 говорит:

    > как автор настраивает виртуалку, нормальный Linux-админ никогда не сделает

    Нормальный админ это не тот, кто мышкой клацает, а кто понимает, какие процессы происходят в ОС и как ими управлять. В данном случае человек прекрасно описал процесс на низком уровне — я думаю, кому нужно — тот воспользуется этой информацией. Всем остальным можно просто сделать умный вид и идти клацать мышкой…

  27. virus говорит:

    2Anton: Я ни секунды не сомневаюсь что именно Вам как внедренцу, консультанту и тренеру именно это и нужно 🙂
    Однако, в наших краях, большинство представителей малого бизнеса удавятся за те деньги которых стоят лицензии vsphere, лицензии на приложения о которых вы говорите, инфраструктура которую вы описываете и Ваши услуги.
    Их выбор это или ворованный виндоус или линукс, и написанное студентами под заказ ПО на java/php/.net (читай mono) работающее везде.
    В такой схеме, когда сервер стоит 150 тысяч, а свое ПО уже есть — лицензии это излишества.
    Этим прекрасным людям не надо никуда ехать, им не надо «управлять инфраструктурой», им надо именно «деньги зарабатывать с помощью того, что в виртуальных машинах работает».
    Сейчас оно прекрасно работает на ворованном vsphere с рисками получить проблемы и уголовное преследование.
    Лично Я пытаюсь донести что с таким же успехом будет работать на kvm без подобных рисков, и лично Я хочу чтобы они выбрали KVM.
    Я надеюсь что популяризация KVM и переход части клиентов VMware на него заставит компанию изменить свою политику в области качества и отношение к бесплатным продуктам, что лично для меня и всех кто посещает данный ресурс будет очень даже полезно.

  28. EGarbuzov говорит:

    > Я надеюсь что популяризация KVM и переход _части клиентов VMware_ на него заставит компанию изменить свою политику в области качества и отношение к бесплатным продуктам

    1. Компании, который скачали на торрентах vSphere — это НЕ клиенты VMware.
    2. Если случится чудо и в «ваших краях» ломаную vSphere массово заменят на бесплатный KVM — от этого компании VMware не станет ни тепло, ни холодно. Ничего в этом плане не изменится, смиритесь.
    3. Компаниям, которые вкладывают деньги в инфраструктуру чтобы самим зарабатывать деньги нужны сравнения функционала всей инфраструктуры. Им не важно, что один гипервизор сам по себе ничуть не хуже другого гипервизора.

    Virus, ваше стремление помочь уйти с ломанного ПО понятно и похвально, но правда, выберете себе уже для сражения Мельницу по-меньше.

  29. A.Vakhitov говорит:

    Не согласен с п2 🙂
    Оно, конечно, так — пока на серверах компании стоит пиратский VMware — компании прямой прибыли нет. Но пока на серверах стоит именно он — плодится количество VMware-админов и растет VMware-сообщество. Ну и есть шансы, что когда-нибудь этот админ уговорит руководство на покупку хотя бы vSphere Essentials, не говоря уже о более дорогостоящих редакциях.
    А вот если компания уйдет-таки на KVM (или кого-то другого), VMware тут же теряет потенциального клиента (пусть и не мегажирного) и специалиста в сообществе.
    Компании выгодно подсаживать всех на свои продукты 🙂

  30. EGarbuzov говорит:

    > Компании выгодно подсаживать всех на свои продукты
    Полностью согласен.
    Вот только… если деньги появятся. На что более вероятно согласится их дать _руководство_: на сферу с той же самой пиратской виндой, либо на лицензии винды, да ещё и с Hyper-Vизором впридачу? 😉

  31. A.Vakhitov говорит:

    Обсуждаемый вопрос…
    С одной стороны, предположительнее на винды. С другой стороны, Win_Enterprise/DataC не так уж нужен маленькой компании. А остальные лицензии не дают значимых бонусов при виртуализации (да и стоят не больше редакции Essentials). Вон, Windows Foundation и Windows Standard OEM стоят также невеликих денег. Правда, на всякое Г. оно не встанет 🙂
    И если у руководства есть план развития, можно также спланировать и покупку лицензий.
    Например, в этом году — антивирус и гипервизор. В следующем — винды/приложения.
    Главный косяк ИТ в том, что оно зачастую «забывает» сообщить руководству о том, что сервисы платные (и что надо купить не только железо, но и софт) 🙂
    Вон, показательная тема с форума нашего города — http://teron.ru/index.php?showtopic=1041978

  32. virus говорит:

    2EGarbuzov
    1. Компании, который скачали на торрентах vSphere — это ПОТЕНЦИАЛЬНЫЕ клиенты VMware. Собственно сами VMware это говорили не раз, и не сильно прижимают пиратов в том числе и по этой причине. (ссылок к сожалению не найду уже)
    2 и 3 тут даже спорить смешно, кладете масло масляное 🙂

    Как правильно говорит A.Vakhitov, мысль именно в том, что каждый новый человек который не будет продвигать VMware — это потеря потенциальной прибыли для VMware.
    А каждый новый человек который будет (уже разобравшись в KVM) продвигать в компаниях бесплатный KVM ВМЕСТО VMware — это уже потеря реальной прибыли.

  33. EGarbuzov говорит:

    Virus, для вас ситуация «в интернете снова кто-то неправ» не имеет срока давности, правда? 😀
    Ну хорошо, спорить тут уже действительно не о чём. Тем более, что читаете вы исключительно то, что вам выгодно, пропуская всё неудобное…

    > KVM ВМЕСТО (установленной пиратской) VMware

    Если за ГОД от этой даты опишете пусть даже в этом блоге (с пруфлинками, конечно же) хотя бы 3 подобных удачных «внедрения», не меньше чем на 5 ESX(i)-хостов каждое, то на ближайшем VMUGе в Мск, обещаю вам при всех выставить бутылку отличного вискаря (по-желанию, можете взять на себя подобное обязательство в случае не выполнения).

    И читателям профит от интересного чтива, и мне интересно узнать у таких людей легализовали бы они vSpher’у, если бы не KVM, и вам не на мельницы нападать… в смысле, и вам вкусного вискаря 😉 А то эти теоретизирования о том, что бы ОНИ там бы купили или не купили…

    PS: и не надо писать про то, что кто-же станет светить своей пираткой 😛 Пруфы можно и приватно прислать — я в отдел К не побегу 🙂

  34. virus говорит:

    EGarbuzov, прошу прощения за давность, но я не имею привычки каждый день писать комментарии, да даже читать…
    к сожалению, это заранее проигрышный для меня вариант, в нашем замкадье можно пересчитать по пальцам случаи малого бизнеса с пятью хостами. в лучше случае их 2, максимум 3.
    Если вас устроит 3 внедрения по 2-3 хоста то возможно за год получится насобирать.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *