Подтвердить что ты не робот

Разница между KVM и LXC

В чем разница между KVM и контейнерами Linux (LXC)? Мне кажется, что LXC также является способом создания нескольких виртуальных машин в одном и том же ядре, если мы используем функции ядра "namespaces" и "control groups".

4b9b3361

Ответ 1

Текст https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html/Resource_Management_and_Linux_Containers_Guide/sec-Linux_Containers_Compared_to_KVM_Virtualization.html Copyright © 2014 Red Hat, Inc.:

Контейнеры Linux по сравнению с виртуализацией KVM

Основное различие между виртуализацией KVM и Linux Контейнеры - это то, что виртуальным машинам требуется отдельный экземпляр ядра для запуска, в то время как контейнеры могут быть развернуты из хоста система. Это значительно снижает сложность контейнера создание и обслуживание. Кроме того, уменьшенные накладные расходы позволяют создавать большое количество контейнеров с более высокой скоростью запуска и выключения. Оба Linux-контейнера и виртуализация KVM обладают определенными преимуществами и недостатки, которые влияют на варианты использования, в которых эти технологии обычно применяются:

Виртуализация KVM

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

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

гостевая виртуальная машина изолирована от изменений хоста, что позволяет запускать разные версии одного и того же приложения на хосте и виртуальные машина. KVM также предоставляет множество полезных функций, таких как live миграция. Дополнительные сведения об этих возможностях см. В статье Red Hat Руководство по развертыванию и администрированию виртуальных машин Linux 7.

Контейнеры Linux:

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

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

Так как контейнеры легкие, многие из них могут работать одновременно на главной машине. Теоретический максимум составляет 6000 контейнеров и 12 000 привязок к каталогам корневых файловых систем. Кроме того, контейнеры быстрее создают и имеют низкое время запуска.

source

Ответ 2

LXC или Linux Containers - это легкие и портативные операционные системы на базе ОС, которые совместно используют ядро ​​базовой операционной системы, но в то же время действуют как изолированные среды с собственной файловой системой, процессами и стеком TCP/IP. Их можно сравнить с Solaris Zones или Jails на FreeBSD. Поскольку нет накладных расходов на виртуализацию, они работают намного лучше, чем виртуальные машины. С другой стороны, KVM представляет возможности виртуализации, встроенные в собственное ядро ​​Linux. Как уже было сказано в предыдущих ответах, это гипервизор типа 2, т.е. Он не работает на голом металле.

Ответ 3

В этом документе дается разница между гипервизором и контейнерами linux, а также некоторой историей за контейнерами http://sp.parallels.com/fileadmin/media/hcap/pcs/documents/ParCloudStorage_Mini_WP_EN_042014.pdf

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

С другой стороны, виртуализация контейнеров (показана на рисунке 2), является виртуализация при уровень операционной системы, вместо аппаратного уровня. Поэтому каждый из гостей, работающих системы используют одно и то же ядро ​​и иногда части операционной системы, с гостья. Этот расширенный обмен дает контейнеров - большое преимущество в том, что они более компактные и меньшие, чем гости гипервизора, просто потому, что они разделяют гораздо больше части с хозяином. Это также дает им огромное преимущество в том, что гостевое ядро более эффективный обмен ресурсами между контейнерами, поскольку он видит контейнеров как просто ресурсов удалось.

Пример: Контейнер 1 и Контейнер 2 открывают один и тот же файл, ядро ​​хоста открывает файл и помещает страницы из него в кеш страницы ядра. Затем эти страницы Контейнер 1 и Контейнер 2 по мере необходимости, и если оба хотят прочитать то же самое позиции, они оба получают одну и ту же страницу. В случае, когда VM1 и VM2 делают то же самое, хост открывает файл (создание страниц в кеше главной страницы), но затем каждое из ядер в VM1 и VM2 делает то же самое, если VM1 и VM2 читают один и тот же файл, теперь есть три отдельные страницы (один в кэшах страницы хоста, ядра VM1 и ядра VM2) просто потому что они не могут совместно использовать страницу таким же образом, как контейнер. Эта расширенное совместное использование контейнеров означает, что плотность (количество контейнеров Виртуальные машины, которые вы можете запускать в системе) в три раза выше контейнер, как в случае с Hypervisor.

Резюме: KVM - это гипервизор, основанный на эмуляции виртуального оборудования. Контейнеры, с другой стороны, основаны на общих операционных системах и более тощие. Но это ограничивает контейнеры тем, что мы используем одно общее ядро ​​и, следовательно, не можем запускать Windows и Linux на одном общем оборудовании