==== Что такое KVM и для чего он нужен ==== __//**Подходы к виртуализации**//__ Независимо от того, какой вы подход выберите и технологию, всегда существует host -машина и установленный в ней гипервизор, устанавливающий guest -машина. В зависимости от того какая технология применяется, гипервизор может быть как отдельным программным обеспечением, устанавливаемым прямо на железо, так и частью операционной системы. На данный момент, существует три способа взаимодействия виртуальной машины с железом. __//**Динамическая трансляция**//__ В этом случае VPS не имеет понятия что она виртуальная машина. Гипервизор перехватывает на лету все команды от виртуалки и обрабатывает их, заменяя на безопасные, а потом возвращает назад в виртуальную машину. Такой подход , конечно, страдает некоторыми проблемами с производительностью, но при этом позволяет виртуализировать любую операционную систему, так как гостевая ОС не нуждается в модификации __//**Паравиртуализация**//__ В случае с паравиртуализацией первичный код гостевой операционной системы изменяется так, чтобы все инструкции выполнялись максимум максимально безопасно и эффективно. При этом виртуальная машина в курсе, что она – VPS . Из преимуществ можно выделить – улучшение производительности, а из минусов – нельзя виртуализировать MacOS , Windows или любую другую операционную систему, к исходникам которым нет доступа. Паравиртуализация в той или иной форме используется в XEN или KVM . __//**Аппартная виртуализация**//__ Разработчики процессоров вовремя смогли осознать что архитектура х86 плохо подходит для виртуализации, так как изначально они подходят для одной операционной системы. И после того как появилась динамическая трансляция от VMWare и паравиртуализация от XEN , Intel и AMD начали выпускать процессоры с аппаратной поддержкой виртуализации. Аппаратную виртуализацию использует и требует KVM , которую мы опишем нижу. __//**Kernel-based Virtual Machine**//__ KVM – это решение для виртуализации, встроенное в ядро Linux , не уступающие другим решениям в функциональности и превосходящее большинство в удобстве использования. Более того, KVM open source технология, которую, тем не менее на всех парах двигается вперед как в плане написания кода, так и в плане маркетинговой кампании, что позволяет внедрять в свои продукты Red Hat . Создатели KVM изначально сфокусировались на поддержке аппаратной виртуализации и не стали выдумывать заново те вещи который уже существуют. Гипервизор, по сути, это небольшая операционная система, которая должна уметь работать с памятью, с сетью и т.п. Linux на данный момент отлично умеет всё это делать, поэтому использование ядра Linux в качестве гипервизора – логичное и очень правильное техническое решение. Каждая виртуальная машина KVM – это всего лишь отдельный Linux процесс, безопасность обеспечивается при помощи SELinux / sVirt , ресурсы управляются при помощи CGroups . KVM не просто работает как часть ядра Linux : начиная с версии ядра 2.6.20 KVM является основной составляющей Linux . Другими словами, если у вас стоит Linux , то у вас уже есть KVM . Стоит отметить, что в сфере публичных облачных платформ Xen сейчас еще доминирует . Например AWS EC 2 и Rackspace использует именно Xen . Обосновать это можно тем, что Xen появился раньше всех и первый достиг достаточного уровня производительности. Но есть хорошие новости: в ноябре 2017 AWS анонсировали новый основанный на KVM гипервизор, который постепенно заменит Xen для крупнейшего облачного провайдера. Несмотря на то, что KVM использует аппаратную виртуализация, для некоторых драйверов I / O устройств KVM может использовать паравиртуализацию, что обеспечивает прирост производится для определенных сценариев использования. __//**libvirt** //__ libvirt – это набор инструментов представляющий единственный API к множеству различных технологий виртуализации. Используя libvirt вам без разницы, что там за «бекенд»: Xen , KVM , VirtualBox или чтото еще. Более того, можно использовать libvirt внутри Ruby ( а еще Python , C ++ и много другого). Также можно удаленно подключаться к VPS. __//**Основные преимущества KVM**//__ * Есть возможность использовать модифицированное ядро ОС, в зависимости от ваших потребностей. Вы можете установить собственный дистрибутив используя свой установочный ISO -образ; * Независимость ресурсов: каждому серверу постоянно выделяется своя память на жестком диске в оперативной памяти, что заметно повышает надежность в работе такого сервера и не позволяет соседними серверами использовать те же самые участки дискового пространства и памяти. Также по этим причинам не позволяется «оверселлить» многие ресурсы, если хостер захотел продать ресурсов больше, чем он реально имеет; * Поддержка множества гостевых операционных систем: установка любых дистрибутивов: BSD ; Linux , Solaris и др. А также ОС, таких как Windows 2008 Server или Windows XP ; * Эммуляция сетевых карт, подразумевает полную поддержку абсолютно всех сетевых протоколов, а также полноценную поддержку сетевого экрана firewall ; * Поддержка VNC позволит управлять VPS как будто вы непосредственно находитесь перед монитором своего компьютера, начиная от загрузки виртуальной машины и заканчивая графическим рабочим столом.