→ Что такое kvm виртуализация. Что такое гипервизор

Что такое kvm виртуализация. Что такое гипервизор

KVM - одна из новых технологий виртуализации, которая дает возможность установить на физическом выделенном сервере несколько виртуальных выделенных серверов. Главным достоинством данной системы виртуализации является создание впс с разными типами операционных систем, то есть можно на одном сервере без проблем устанавливать как linux vps так и windows vps. К тому же каждый отдельный впс сервер на платформе KVM имеет свои независимые ресурсы: свое дисковое пространство, свою оперативную память, сетевой интерфейс и так далее.

Достоинства KVM виртуализации:

  • Возможность установить разные операционные системы: centos, debian, ubuntu, mint, freebsd, windows 7, windows 8, windows 10, windows xp и так далее.
  • Гарантированные ресурсы на сервере, то есть если вы заказали впс сервер с определенными ресурсами, то будьте спокойны, ресурсы у вас никто не отберет. С данной виртуализацией нельзя использовать ресурсы соседней впс. Есть такое понятие как оверселлинг, это когда хостинг компания продает больше ресурсов, чем есть на самом деле на сервере. В KVM такого не может быть, все ресурсы четко зафиксированы в конфигурационных файлах и направлены сразу все на виртуальный выделенный сервер.
  • Есть возможность установить на впс сервере полностью свою операционную систему, например вы разработчик ОС, и у вас есть своя написанная операционная система, вы можете установить ее на одной из впс на сервере с KVM, для этого нужно будет закачать файл с iso-образом ОС на сервер с специальную папку.
  • Удобная работа с VNC , которая дает возможность удаленно управлять вашим vps сервером так, как будто вы работаете за своим персональным ПК, с помощью VNC вы можете настраивать bios, перегружать впс и наблюдать это. Если вы установили на всп сервер windows и хотите на него зайти поработать в графическом режиме, то вы можете сделать это двумя способами: через VNC, или сразу попасть на впс по предварительно настроенному удаленному рабочему столу.

Из недостатков KVM виртуализации можно выделить то, что она сложнее в использовании и настройке чем, например, виртуализация openVZ . То какой вариант? Если вы планируете использовать впс сервер с операционными системами linux - тогда советуем выбрать openVZ. Если же собираете использовать на своем виртуальном выделенном сервере windows - то тогда лучше использовать именно KVM виртуализацию.

Please enable JavaScript to view the comments powered by Disqus.
Недавние записи
  • Применение новейших пассажирских и грузовых подъемников разрешает предоставить оптимальные обстоятельства…

  • Дабы ваш веб-сайт постоянно открывался по неопасному https:// протоколу, мы…

  • В новых версиях браузера Chrome перестала работать прокрутка страницы колесиком…

  • Интернет торговля в Украине с каждым годом набирает все больше…

  • ПВТ - это такое IT направление в Белоруссии, которое создано…

  • В Украине, а именно в Днепропетровске изобрели и протестировали 1-й…

  • Сейчас уже тяжело представить себе мир без ИТ, так как…

  • Предлагаем вашему вниманию новую услугу на сайте abcname.com.ua. Кроме того,…

  • Сегодня мы расскажем вам об особенностях выбора VPS сервера. Сперва…

  • Сегодня мы спешим обрадовать всех новой возможностью нашего уникального, и…

  • 1) Проверка доменного имени Проверяем, является ли строка правильным доменным…

  • Проверить IP-адрес можно на данной странице: http://abcname.com.ua/index.php?c=192 IP-адрес (если дословно, то…

  • Компания ABCname представляет вашему вниманию программу СИНОНИМИЗАТОР. Ссылка на синонимизатор: https://abcname.net/news-new/sinonimizator-ru.html…

  • Скачать счетчик посещений, разработанный компанией ABCname вы можете зайдя по данной ссылке: http://abcname.com.ua/stat/…

  • В последнем обновлении операционной системы iOS 9.0.2 разработчики закрыли очень…

  • Последние новости Skype: для пользователей данной программы на Windows…

  • Компания Google вновь порадовала своим изобретением, на днях в городе…

  • На днях стало известно, что компания Samsung запускает новую платежную…

  • В новых ноутбуках ThinkPad от компании Lenovo, на которых предустановлена…

  • Недавно компания Pebble разработала новую серию умных часов под…

  • Гипервизоры (технологии виртуализации) существуют более 30 лет и за это время сумели стать одним из главных «винтиков» в составе облачной экосистемы. Многие компании, подбирающие решения для виртуализации, останавливают свой выбор на двух популярных гипервизорах - VMware и KVM. Предлагаем разобраться какой же из них лучше. Но для начала немного теории.

    Что такое гипервизор?

    Гипервизор - это программа, отделяющая операционную систему от железа. Гипервизоры виртуализируют ресурсы сервера (процессор, память, диск, сетевые интерфейсы и др.), позволяя использовать их как свои собственные, и создают на основе одного сервера несколько отдельных виртуальных машин. Каждая созданная виртуальная машина изолируется от соседей, чтобы не влиять на работу других. Для работы гипервизора необходима поддержка виртуализации: для процессоров Intel на процессоре Intel VT, а для процессоров AMD на AMD-V.

    Гипервизоры делятся на два типа: первые работают непосредственно с сервером, а операционная система пользователей работает поверх гипервизора. Эти гипервизоры могут предоставлять некоторым пользователям функции управления сервером и большинство предприятий используют именно такие гипервизоры.

    Гипервизоры второго типа, также известные как размещенные гипервизоры (Hosted Hypervisor), работают с операционной системой, установленной на сервере. А операционные системы для новых пользователей создаются поверх гипервизора.

    Настольные гипервизоры, такие как Oracle VirtualBox или VMware Workstation, являются гипервизорами второго типа, а VMware и KVM – первого. VMware и KVM устанавливаются непосредственно на сервер и не требуют установки какой-либо операционной системы.

    VMware vSphere

    Перед покупкой VMware vSphere можно попробовать поработать в пробной версии (60 дней), после чего необходимо покупать лицензию, либо мириться с ограничениями бесплатной версии.

    В бесплатной версии, которая называется VMware Free vSphere Hypervisor, нет ограничений для хоста по процессорам и памяти, зато есть ряд других:

    • API продукта доступно только для чтения;
    • виртуальная машина не может иметь более 8 ядер;
    • ее нельзя использовать вместе с Veeam для создания резервных копий;
    • подключение к vCenter Server не поддерживается;
    • не поддерживается и высокая доступность, а также технологии VM Host Live Migration и VM Storage Live Migration.

    Продукт от VMware отличается от аналогов поддержкой большого количества операционных систем - Windows, Linux, Solaris, FreeBSD, Netware, MacOS и других.

    Установка дистрибутива VMware на сервер очень проста: достаточно загрузиться с CD, флешки или через PXE. К тому же поддерживаются сценарии, позволяющие автоматизировать процесс инсталляции программного обеспечения, настройку сети и подключения к vCenter Server.

    Немаловажно и наличие специального конвертера VMware vCenter Converter , позволяющего использовать в ESXi образы MS Virtual Server, Virtual PC, Hyper-V, а также физические серверы и образы дисковых разделов, созданных такими программами как Acronis True Image, Norton Ghost и другими.

    У VMware vSphere есть встроенная интеграция с Microsoft Active Directory, то есть аутентификацию пользователей в частном или гибридном облаке можно производить при помощи доменных служб Microsoft. Гибкое распределение ресурсов позволяет использовать горячее добавление CPU, ОЗУ и жесткого диска (в том числе изменять размер текущего жесткого диска без перезагрузки).

    VMware Fault Tolerate - технология VMware, предназначенная для защиты виртуальных машин с помощью кластеров непрерывной доступности. При отказе хоста (сервера ESXi) с основной (Primary) рабочей копией виртуальной машины, защищенная виртуальная машина мгновенно переключится на «вторичную» (Secondary) или «теневую» копию, работающую на другом сервере ESXi. Для машин, защищенных VMware Fault Tolerance, происходит постоянное (в реальном времени) копирование всего состояния памяти и процессорных инструкций с основной копии на «теневую». При сбое основного хоста ESXi, пользователи даже не заметят процесса переключения на второй узел. Именно этим Fault Tolerance отличается от High Availability. В High Availability при отказе физического сервера виртуальные машины будут перезапущены на других узлах, и пока операционные системы перезагружаются пользователи не смогут получить доступ к виртуальным серверам.

    Кроме VMware Foult Tolerate, лицензия VMware vCloud Suite Enterprise обеспечивает высокую доступность, отказоустойчивость и восстановление после аварий с помощью функций vSphere HA, vMotion, Storage vMotion, и vCenter Site Recovery Manager.

    Для уменьшения плановых остановок в обслуживании серверов или систем хранения данных (СХД), функции vMotion и Storage vMotion в онлайн-режиме переносят виртуальные машины и их диски без остановки работы приложений и пользователей. Функция vSphere Replication поддерживает разные варианты репликации vCenter Site Recovery Manager (SRM) для защиты от крупных аварий. SRM обеспечивает централизованное планирование послеаварийного восстановления, автоматические Failover и Failback с резервного сайта или из облака vCloud, а также тестирование послеаварийного восстановления без прерывания работы приложений.

    К особенностям этого гипервизора стоит отнести избирательность к железу - перед установкой необходимо тщательно проверить имеющееся оборудование на совместимость с нужной версией ESXi. Для этого на сайте VMware есть специальная .

    Лицензирование продуктов VMware имеет свои особенности. Дополнительную путаницу добавляют периодические изменения (от версии к версии vSphere) в лицензионной политике VMware. Существует несколько пунктов, которые нужно учесть перед приобретением лицензий VMware vSpere:

    • лицензирование гипервизора выполняется по числу физических процессоров (CPU). Каждый CPU сервера требует отдельной лицензии vSphere (ядра не являются физическими процессорами и не учитываются в лицензировании);
    • доступный функционал сервера ESXi определяется установленной на нем лицензией vSphere. Подробное руководство по лицензиям есть на ;
    • для каждой купленной лицензии vShpere необходимо приобретать пакет сервисной поддержки (минимум на год);
    • VMware не накладывает ограничения на количество памяти (RAM), установленной на сервере, и на количество запущенных виртуальных машин.

    Управлять множеством хостов с гипервизорами ESXi, СХД и сетевым оборудованием можно с помощью еще одного продукта VMware - Vcenter Server. Подключаемые модули клиента vSphere, предоставляемые партнерами VMware, дают IT-администраторам возможность управлять сторонними элементами в дата-центре непосредственно из этой консоли. Поэтому пользователи vCenter могут выполнять резервное копирование, защищать данные, управлять серверами, сетями и безопасностью непосредственно из интерфейса vCenter. В этой же консоли можно настроить триггеры, которые оповестят о возникших проблемах, и получить данные о работе всей инфраструктуры в виде графиков или таблиц.

    KVM

    KVM - простой в использовании, легкий, нетребовательный к ресурсам и довольно функциональный гипервизор. Он позволяет за минимальные сроки развернуть площадку виртуализации и организовать виртуализацию под управлением операционной системы Linux. В процессе работы KMV осуществляет доступ к ядру операционной системы через специальный модуль (KVM-Intel или KVM-AMD). Изначально KVM поддерживал только процессоры x86, но современные версии KVM поддерживают самые разные процессоры и гостевые операционные системы, в том числе Linux, BSD, Solaris, Windows и др. Кстати, все Wiki-ресурсы (MediaWiki, Wikimedia Foundation, Wikipedia, Wikivoyage, Wikidata, Wikiversity) используют именно этот гипервизор.

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

    KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, VMware и другие образы, содержащие операционные системы. Каждая виртуальная машина имеет своё собственное виртуальное аппаратное обеспечение: сетевые карты, диск, видеокарту и другое железо.

    Благодаря поддержке немодифицированных образов VMware, физический сервер можно легко виртуализовать при помощи все той же утилиты VMware vServer Converter, а затем перенести полученный файл в гипервизор.

    Установка KVM в операционной системе Linux заключается в инсталляции пакета KVM и библиотеки виртуализации Libvirt, а также в тщательной настройке среды виртуализации. В зависимости от используемой на хосте операционной системы необходимо настроить мост или подключение к VNC-консоли, с помощью которой виртуальные машины будут взаимодействовать с хостом.

    Администрировать KVM сложнее, так как прозрачный доступ к файлам, процессам, консолям и сетевым интерфейсам отсутствует, это приходится настраивать самостоятельно. Перестройка параметров VM в KVM (CPU, RAM, HDD) не очень удобна и требует дополнительных действий, включающих перезагрузку ОС.

    Сам проект не предлагает удобных графических инструментов для управления виртуальными машинами, только утилиту Virsh, реализующую все необходимые функции. Для удобного управления виртуальными машинами можно дополнительно установить пакет Virt-Manager.

    У KVM нет встроенных инструментов, подобных Fault Tolerate для VMware, поэтому единственный способ создать кластер высокой доступности - использовать сетевую репликацию при помощи DRDB. Кластер DRBD поддерживает только два узла, а узлы синхронизируются без шифрования. То есть для более безопасной связи необходимо использовать VPN-соединение.

    Кроме того, для построения кластера высокой доступности понадобится программа Heartbeat, которая позволяет обмениваться служебными сообщениями о своем состоянии узлам в кластере, и Pacemaker - менеджер ресурсов кластера.

    Гипервизор KVM распространяется как продукт с открытым исходным кодом, а для корпоративных пользователей существует коммерческое решение Red Hat Virtualization (RHEL), основанное на KVM и платформе управления виртуальной инфраструктурой oVirt.

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

    Следует учесть, что у KVM нет службы поддержки. Если что-то не получится, можно рассчитывать на форумы и помощь сообщества. Или перейти на RHEL.

    Так что же выбрать?

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

    KVM обычно более масштабируем, чем VMware, в первую очередь потому что vSphere имеет некоторые ограничения на серверы, которыми он может управлять. Кроме того, VMware добавила большое количество сетей хранения данных (SAN) для поддержки различных поставщиков. Эта функция означает, что VMware имеет больше вариантов хранения, чем KVM, но также усложняет поддержку хранилища VMware при расширении.

    KVM обычно является наиболее популярным гипервизором для компаний, которые стремятся сократить стоимость внедрения и менее заинтересованы в функциях корпоративного уровня.

    Исследования показали, что совокупная стоимость владения KVM, как правило, на 39 процентов ниже, чем у VMware, хотя фактическая совокупная стоимость владения зависит от специфичных факторов, таких как эксплуатационные параметры и рабочая нагрузка площадки.

    Тесная интеграция с операционной системой на хосте является одной из наиболее распространенных причин, по которой разработчики выбирают KVM. Особенно те, кто использует Linux. Включение KVM во многие дистрибутивы Linux также делает его удобным выбором для разработчиков.

    Облачные провайдеры, предлагающие своим клиентам услуги по модели IaaS, обычно выбирают инфраструктуру, построенную на продуктах VMware. Решения на основе VMware Sphere содержат все важные корпоративные функции по обеспечению высокой и непрерывной доступности, обеспечивают поддержку большего числа гостевых операционных систем и имеют возможность сопряжения инфраструктуры заказчика с облачными сервисами.

    Мне лично проще всего думать о KVM (Kernel-based Virtual Machine), как о таком уровне абстракции над технологиями хардверной виртуализации Intel VT-x и AMD-V. Берем машину с процессором, поддерживающим одну из этих технологий, ставим на эту машину Linux, в Linux’е устанавливаем KVM, в результате получаем возможность создавать виртуалки. Так примерно и работают облачные хостинги, например, Amazon Web Services . Наряду с KVM иногда также используется и Xen, но обсуждение этой технологии уже выходит за рамки данного поста. В отличие от технологий контейнерной виртуализации, например, того же Docker , KVM позволяет запускать в качестве гостевой системы любую ОС, но при этом имеет и бо льшие накладные расходы на виртуализацию.

    Примечание: Описанные ниже действия были проверены мной на Ubuntu Linux 14.04, но по идее будут во многом справедливы как для других версий Ubuntu, так и других дистрибутивов Linux. Все должно работать как на десктопе, так и на сервере, доступ к которому осуществляется по SSH.

    Установка KVM

    Проверяем, поддерживается ли Intel VT-x или AMD-V нашим процессором:

    grep -E "(vmx|svm)" / proc/ cpuinfo

    Если что-то нагреполось, значит поддерживается, и можно действовать дальше.

    Устанавливаем KVM:

    sudo apt-get update
    sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

    Что где принято хранить:

    • /var/lib/libvirt/boot/ — ISO-образы для установки гостевых систем;
    • /var/lib/libvirt/images/ — образы жестких дисков гостевых систем;
    • /var/log/libvirt/ — тут следует искать все логи;
    • /etc/libvirt/ — каталог с файлами конфигурации;

    Теперь, когда KVM установлен, создадим нашу первую виртуалку.

    Создание первой виртуалки

    В качестве гостевой системы я выбрал FreeBSD. Качаем ISO-образ системы:

    cd / var/ lib/ libvirt/ boot/
    sudo wget http:// ftp.freebsd.org/ path/ to/ some-freebsd-disk.iso

    Управление виртуальными машинами в большинстве случаев производится при помощи утилиты virsh:

    sudo virsh --help

    Перед запуском виртуалки нам понадобится собрать кое-какие дополнительные сведения.

    Смотрим список доступных сетей:

    sudo virsh net-list

    Просмотр информации о конкретной сети (с именем default):

    sudo virsh net-info default

    Смотрим список доступных оптимизаций для гостевых ОС:

    sudo virt-install --os-variant list

    Итак, теперь создаем виртуальную машину с 1 CPU, 1 Гб RAM и 32 Гб места на диске, подключенную к сети default:

    sudo virt-install \
    --virt-type =kvm \
    --name freebsd10 \
    --ram 1024 \
    --vcpus =1 \
    --os-variant =freebsd8 \
    --hvm \
    --cdrom =/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
    --network network =default,model =virtio \
    --graphics vnc \
    --disk path =/ var/ lib/ libvirt/ images/ freebsd10.img,size =32 ,bus =virtio

    Вы можете увидеть:

    WARNING Unable to connect to graphical console: virt-viewer not
    installed. Please install the "virt-viewer" package.

    Domain installation still in progress. You can reconnect to the console
    to complete the installation process.

    Это нормально, так и должно быть.

    Затем смотрим свойства виртуалки в формате XML:

    sudo virsh dumpxml freebsd10

    Тут приводится наиболее полная информация. В том числе есть, к примеру, и MAC-адрес, который понадобятся нам далее. Пока что находим информацию о VNC. В моем случае:

    С помощью любимого клиента (я лично пользуюсь Rammina) заходим по VNC , при необходимости используя SSH port forwarding. Попадаем прямо в инстялятор FreeBSD. Дальше все как обычно — Next, Next, Next, получаем установленную систему.

    Основные команды

    Давайте теперь рассмотрим основные команды для работы с KVM.

    Получение списка всех виртуалок:

    sudo virsh list --all

    Получение информации о конкретной виртуалке:

    sudo virsh dominfo freebsd10

    Запустить виртуалку:

    sudo virsh start freebsd10

    Остановить виртуалку:

    sudo virsh shutdown freebsd10

    Жестко прибить виртуалку (несмотря на название, это не удаление):

    sudo virsh destroy freebsd10

    Ребутнуть виртуалку:

    sudo virsh reboot freebsd10

    Склонировать виртуалку:

    sudo virt-clone -o freebsd10 -n freebsd10-clone \
    --file / var/ lib/ libvirt/ images/ freebsd10-clone.img

    Включить/выключить автозапуск:

    sudo virsh autostart freebsd10
    sudo virsh autostart --disable freebsd10

    Запуск virsh в диалоговом режиме (все команды в диалоговом режиме — как описано выше):

    sudo virsh

    Редактирование свойств виртуалки в XML, в том числе здесь можно изменить ограничение на количество памяти и тд:

    sudo virsh edit freebsd10

    Важно! Комментарии из отредактированного XML, к сожалению, удаляются.

    Когда виртуалка остановлена, диск тоже можно ресайзить:

    sudo qemu-img resize / var/ lib/ libvirt/ images/ freebsd10.img -2G
    sudo qemu-img info / var/ lib/ libvirt/ images/ freebsd10.img

    Важно! Вашей гостевой ОС, скорее всего, не понравится, что диск внезапно стал больше или меньше. В лучшем случае, она загрузится в аварийном режиме с предложением переразбить диск. Скорее всего, вы не должны хотеть так делать. Куда проще может оказаться завести новую виртуалку и смигрировать на нее все данные.

    Резервное копирование и восстановление производятся довольно просто. Достаточно сохранить куда-то вывод dumpxml, а также образ диска, а потом восстановить их. На YouTube удалось найти видео с демонстрацией этого процесса, все и вправду несложно.

    Настройки сети

    Интересный вопрос — как определить, какой IP-адрес получила виртуалка после загрузки? В KVM это делается хитро. Я в итоге написал такой скрипт на Python :

    #!/usr/bin/env python3

    # virt-ip.py script
    # (c) 2016 Aleksander Alekseev
    # http://сайт/

    import sys
    import re
    import os
    import subprocess
    from xml .etree import ElementTree

    def eprint(str ) :
    print (str , file = sys .stderr )

    if len (sys .argv ) < 2 :
    eprint("USAGE: " + sys .argv [ 0 ] + " " )
    eprint("Example: " + sys .argv [ 0 ] + " freebsd10" )
    sys .exit (1 )

    if os .geteuid () != 0 :
    eprint("ERROR: you shold be root" )
    eprint("Hint: run `sudo " + sys .argv [ 0 ] + " ...`" ) ;
    sys .exit (1 )

    if subprocess .call ("which arping 2>&1 >/dev/null" , shell = True ) != 0 :
    eprint("ERROR: arping not found" )
    eprint("Hint: run `sudo apt-get install arping`" )
    sys .exit (1 )

    Domain = sys .argv [ 1 ]

    if not re .match ("^*$" , domain) :
    eprint("ERROR: invalid characters in domain name" )
    sys .exit (1 )

    Domout = subprocess .check_output ("virsh dumpxml " +domain+" || true" ,
    shell = True )
    domout = domout.decode ("utf-8" ) .strip ()

    if domout == "" :
    # error message already printed by dumpxml
    sys .exit (1 )

    Doc = ElementTree.fromstring (domout)

    # 1. list all network interfaces
    # 2. run `arping` on every interface in parallel
    # 3. grep replies
    cmd = "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
    "xargs -P0 -I IFACE arping -i IFACE -c 1 {} 2>&1 | " + \
    "grep "bytes from") || true"

    for child in doc.iter () :
    if child.tag == "mac" :
    macaddr = child.attrib [ "address" ]
    macout = subprocess .check_output (cmd .format (macaddr) ,
    shell = True )
    print (macout.decode ("utf-8" ) )

    Скрипт работает как с default сетью, так и с bridged сетью, настройку которой мы рассмотрим далее. Однако на практике куда удобнее настроить KVM так, чтобы он всегда назначал гостевым системам одни и те же IP-адреса. Для этого правим настройки сети:

    sudo virsh net-edit default

    … примерно таким образом:

    >



    >

    После внесения этих правок


    >

    … и заменяем на что-то вроде:




    >

    Перезагружаем гостевую систему и проверяем, что она получила IP по DHCP от роутера. Если же вы хотите, чтобы гостевая система имела статический IP-адрес, это настраивается как обычно внутри самой гостевой системы.

    Программа virt-manager

    Вас также может заинтересовать программа virt-manager:

    sudo apt-get install virt-manager
    sudo usermod -a -G libvirtd USERNAME

    Так выглядит ее главное окно:

    Как видите, virt-manager представляет собой не только GUI для виртуалок, запущенных локально. С его помощью можно управлять виртуальными машинами, работающими и на других хостах, а также смотреть на красивые графички в реальном времени. Я лично нахожу особенно удобным в virt-manager то, что не нужно искать по конфигам, на каком порту крутится VNC конкретной гостевой системы. Просто находишь виртуалку в списке, делаешь двойной клик, и получаешь доступ к монитору.

    Еще при помощи virt-manager очень удобно делать вещи, которые иначе потребовали бы трудоемкого редактирования XML-файлов и в некоторых случаях выполнения дополнительных команд. Например, переименование виртуальных машин, настройку CPU affinity и подобные вещи. Кстати, использование CPU affinity существенно снижает эффект шумных соседей и влияние виртуальных машин на хост-систему. По возможности используйте его всегда.

    Если вы решите использовать KVM в качестве замены VirtualBox, примите во внимание, что хардверную виртуализацию они между собой поделить не смогут. Чтобы KVM заработал у вас на десктопе, вам не только придется остановить все виртуалки в VirtualBox и Vagrant , но и перезагрузить систему. Я лично нахожу KVM намного удобнее VirtualBox, как минимум, потому что он не требует выполнять команду sudo / sbin/ rcvboxdrv setup после каждого обновления ядра, адекватно работает c Unity , и вообще позволяет спрятать все окошки.

    Проверка поддержки гипервизора

    Проверяем, что сервер поддерживает технологии виртуализации:

    cat /proc/cpuinfo | egrep "(vmx|svm)"

    В ответ должны получить что-то наподобие:

    flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm epb tpr_shadow vnmi flexpriority ept vpid dtherm ida arat

    В противном случае, заходим в БИОС, находим опцию для включения технологии виртуализации (имеет разные названия, например, Intel Virtualization Technology или Virtualization) и включаем ее — задаем значение Enable .

    Также проверить совместимость можно командой:

    * если команда вернет ошибку «kvm-ok command not found» , установите соответствующий пакет: apt-get install cpu-checker .

    Если видим:

    INFO: /dev/kvm exists
    KVM acceleration can be used

    значит поддержка со стороны аппаратной части есть.

    Подготовка сервера

    Для нашего удобства, создадим каталог, в котором будем хранить данные для KVM:

    mkdir -p /kvm/{vhdd,iso}

    * будет создано два каталога: /kvm/vhdd (для виртуальных жестких дисков) и /kvm/iso (для iso-образов).

    Настроим время:

    \cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

    * данная команда задает зону в соответствии с московским временем.

    ntpdate ru.pool.ntp.org

    * выполняем синхронизацию с сервером времени.

    Установка и запуск

    Устанавливаем KVM и необходимые утилиты управления.

    а) Ubuntu до версии 18.10

    apt-get install qemu-kvm libvirt-bin virtinst libosinfo-bin

    б) Ubuntu после 18.10:

    apt-get install qemu-kvm libvirt-daemon-system libvirt-bin virtinst libosinfo-bin

    * где qemu-kvm — гипервизор; libvirt-bin — библиотека управления гипервизором; virtinst — утилита управления виртуальными машинами; libosinfo-bin — утилита для просмотра списка вариантов операционных систем, которые могут быть в качестве гостевых.

    Настроим автоматический запуск сервиса:

    systemctl enable libvirtd

    Запустим libvirtd:

    systemctl start libvirtd

    Настройка сети

    Виртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.

    Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.

    Устанавливаем bridge-utils:

    apt-get install bridge-utils

    а) настройка сети в старых версиях Ubuntu (/etc/network/interfaces).

    Открываем конфигурационный файл для настройки сетевых интерфейсов:

    vi /etc/network/interfaces

    И приведем его к виду:

    #iface eth0 inet static
    # address 192.168.1.24
    # netmask 255.255.255.0
    # gateway 192.168.1.1
    # dns-nameservers 192.168.1.1 192.168.1.2

    Auto br0
    iface br0 inet static
    address 192.168.1.24
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1 192.168.1.2
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

    * где все, что закомментировано — старые настройки моей сети; br0 — название интерфейса создаваемого моста; eth0 — существующий сетевой интерфейс, через который будет работать мост.

    Перезапускаем службу сети:

    systemctl restart networking

    б) настройка сети в новых версиях Ubuntu (netplan).

    vi /etc/netplan/01-netcfg.yaml

    * в зависимости от версии системы, конфигурационной файл yaml может иметь другое название.

    Приводим его к виду:

    network:
    version: 2
    renderer: networkd
    ethernets:
    eth0:
    dhcp4: false
    dhcp6: false
    wakeonlan: true

    Bridges:
    br0:
    macaddress: 2c:6d:45:c3:55:a7
    interfaces:
    - eth0
    addresses:
    - 192.168.1.24/24
    gateway4: 192.168.1.1
    mtu: 1500
    nameservers:
    addresses:
    - 192.168.1.1
    - 192.168.1.2
    parameters:
    stp: true
    forward-delay: 4
    dhcp4: false
    dhcp6: false

    * в данном примере мы создаем виртуальный бридж-интерфейс br0 ; в качестве физического интерфейса используем eth0 .

    Применяем сетевые настройки:

    Настаиваем перенаправления сетевого трафика (чтобы виртуальные машины с сетевым интерфейсом NAT могли выходить в интернет):

    vi /etc/sysctl.d/99-sysctl.conf

    Добавляем строку:

    net.ipv4.ip_forward=1

    Применяем настройки:

    sysctl -p /etc/sysctl.d/99-sysctl.conf

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

    Для создания первой виртуальной машины вводим следующую команду:

    virt-install -n VM1 \
    --autostart \
    --noautoconsole \
    --network=bridge:br0 \
    --ram 2048 --arch=x86_64 \
    --vcpus=2 --cpu host --check-cpu \
    --disk path=/kvm/vhdd/VM1-disk1.img,size=16 \
    --cdrom /kvm/iso/ubuntu-18.04.3-server-amd64.iso \
    --graphics vnc,listen=0.0.0.0,password=vnc_password \
    --os-type linux --os-variant=ubuntu18.04 --boot cdrom,hd,menu=on

    • VM1 — имя создаваемой машины;
    • autostart — разрешить виртуальной машине автоматически запускаться вместе с сервером KVM;
    • noautoconsole — не подключается к консоли виртуальной машины;
    • network — тип сети. В данном примере мы создаем виртуальную машину с интерфейсом типа «сетевой мост». Для создания внутреннего интерфейса с типом NAT вводим --network=default,model=virtio ;
    • ram — объем оперативной памяти;
    • vcpus — количество виртуальных процессоров;
    • disk — виртуальный диск: path — путь до диска; size — его объем;
    • cdrom — виртуальный привод с образом системы;
    • graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
    • os-variant — гостевая операционная система (весь список мы получали командой osinfo-query os , в данном примере устанавливаем Ubuntu 18.04).

    Подключение к виртуальной машине

    На компьютер, с которого планируем работать с виртуальными машинами, скачиваем VNC-клиент, например, TightVNC и устанавливаем его.

    На сервере вводим:

    virsh vncdisplay VM1

    команда покажет, на каком порту работает VNC для машины VM1. У меня было:

    * :1 значит, что нужно к 5900 прибавить 1 — 5900 + 1 = 5901.

    Запускаем TightVNC Viewer, который мы установили и вводим данные для подключения:

    Кликаем по Connect . На запрос пароля вводим тот, что указали при создании ВМ, (vnc_password ). Мы подключимся к виртуальной машине удаленной консолью.

    Если мы не помним пароль, открываем настройку виртуальной машины командой:

    И находим строку:



    * в данном примере для доступа к виртуальной машине используется пароль 12345678 .

    Управление виртуальной машиной из командной строки

    Примеры команд, которые могут пригодиться при работе с виртуальными машинами.

    1. Получить список созданных машин:

    virsh list --all

    2. Включить виртуальную машину:

    virsh start VMname

    * где VMname — имя созданной машины.

    3. Выключить виртуальную машину:

    ubuntu-vm-builder — пакет, разработанный компанией Canonical для упрощения создания новых виртуальных машин.

    Для его установки вводим:

    apt-get install ubuntu-vm-builder

    Сегодня сложно представить мир без компьютеризированных устройств. Лет этак 20 назад почти все бытовые приборы были электро-механические, об использовании компьютерных схем повсеместно не было даже и речи. Самые первые компьютеры занимали значительные объемы пространства, и могли относительно не много. Компьютерно-вычислительные комплексы за последнее время прошли достаточно большой путь развития. Хотя, принципиально компьютеры ничем не изменились, но вычислительные мощности стремительно возросли. Наличие компьютера в простой семье теперь не является чем-то особенным.

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

    По своей сути, все ОС это в общем-то и так некоторая виртуальная среда, которая предоставляется разработчику ПО, как средство реализации конечных задач. Уже давно прошло то время, когда программы писались конкретно под аппаратную часть компьютера по средствам аппаратных кодов и запросов. Сегодня же, любое приложение – это в первую очередь приложение, написанное на некотором API, который находится под управлением ОС. Задачи же ОС – предоставить данным API непосредственно доступ к аппаратным ресурсам.

    Собственно видов виртуализации существует несколько:

    • Программная виртуализация;
    • Аппаратная виртуализация;
    • Виртуализация уровня операционной системы.

    Виртуализация в свою очередь бывает полной и частичной .

    Программная виртуализация – вид виртуализации, который задействует различные библиотеки ОС, транслируя вызовы виртуальной машины в вызовы ОС. (DOSBox, Virtualbox, VirtualPC)

    Аппаратная виртуализация – такой вид, который предусматривает специализированную инструкцию аппаратной части, а конкретно инструкций процессора. Позволяет исполнять запросы в обход гостевой ОС, и исполнять прямо на аппаратном обеспечении. (виртуализация KVM,виртуализация XEN, Parallels, VMware, Virtualbox)

    Виртуализация уровня операционной системы – виртуализация только части платформы, без полной виртуализации аппаратной части. Подразумевает работы нескольких экземпляров среды ОС. (Docker, LXC)

    Данная статья будет рассматривать Аппаратную виртуализацию, а конкретно виртуализацию KVM.

    Схема 1. – Взаимодействие компонентов виртуальной машины с аппаратной частью

    Особенности виртуализации для ядра Linux

    Для исполнения прямых аппаратных запросов в ОС должна иметься библиотека, которая направляла бы эти запросы аппаратной части напрямую. На платформах базы Linux долгое время никакой встроенной системы виртуализации (встроенного гипервизора), просто не существовало. Каждый производитель ПО для виртуализации, который поддерживало технологию аппаратной виртуализации, вынуждены были создавать собственные модули для ядра Linux (vboxdrv в Virtualbox, vmware-service в VMWare и пр.) Естественно, это не могло продолжаться вечно, и компания Qumranet, Inc, выкупленая затем Radhat создала ассоциацию Open Virtualization Alliance, которая была признана решить проблему отсутствия базового гипервизора для ядра Linux. Так и был создан гипервизор KVM или Kernel-based Virtual Machine.

    Реализация

    Гипервизор KVM представляет из себя загружаемый модуль ядра Linux, который предназначен для обеспечения виртуализации на платформе Linux x86. Сам модуль содержит компонент собственно виртуализации(kvm.ko), и процессорно-специфический загружаемый модуль kvm-amd.ko либо kvm-intel.ko.

    Необходимым условием для использования KVM является поддержка инструкций виртуализации - Intel VT либо AMD , и ядро Linux версии 2.6.20 и выше. Существует также порт KVM под Free-BSD. Для вызова KVM традиционно используется QEMU, но также ведутся попытки добавить поддержку KVM в Virtualbox.

    Сам по себе KVM не выполняет эмуляции. Вместо этого программа, работающая в пространстве пользователя, использует интерфейс /dev/kvm для настройки адресного пространства гостя виртуальной машины, через него же эмулирует устройства ввода-вывода и видеоадаптер.

    KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, VMware и других, содержащие операционные системы. Каждая виртуальная машина имеет своё собственное виртуальное аппаратное обеспечение: сетевые карты, диск, видеокарту и другие устройства.

    Использование

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

    Для наглядности рассматривается виртуализация KVM на базе библиотеку virt-manager.

    Данная библиотека позволяет упростить вызов различных гипервизоров, предоставляя удобный интерфейс для автоматизации процесса виртуализации. Кроме того, библиотека имеет возможность работы с сетевой инфраструктурой, что иногда важно, при построении клиент-серверных рабочих мест.

    Схема 2. – Взаимодействие компонентов libvirt

    QEMU позволяет создать фрейм для вызова гипервизора на клиентской системе. Данная программа настраивается аргументами вызова командной строки, является достаточно легкой и простой.

    Существуют кроме того несколько графических оболочек, таких как Gnome-Boxes .

    Вывод

    Виртуализация – неотъемлемая часть современных корпоративных систем, она позволяет сэкономить колоссальные денежные и энергетические ресурсы. Развитие технологий виртуализации является приоритетным направлением многих организаций. Развиваются такие технологии как как VGAPassthrough (технология "проброса" видеокарты хост-устройства в виртуальную машину) и PCIPassthrough ("проброс" PCI устройства).

     

     

Это интересно: