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

10

Я посмотрел на сайт stackexchange, но ничего не смог найти. Я посмотрел на запись в Википедии о контейнере Linux https://en.wikipedia.org/wiki/LXC, а также гипервизор https://en.wikipedia.org/wiki/Hypervisor, но объяснение обоим выходит за рамки того, кто не работал ни поймете. Я также видел http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun, но это также не объясняет этого.

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

Могут ли некоторые люди объяснить, что такое гипервизор и контейнер * nix (с аналогиями, если это возможно?)?
Является ли гипервизор * nix такой же, как виртуальная машина, или есть разница?

Shirish
источник

Ответы:

9

Виртуальная машина (VM) является довольно общим термином для многих технологий виртуализации.

Существует много вариантов технологий виртуализации, но основными из них являются:

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

qemu-kvmи VMWareявляются примерами первого. Они используют гипервизор для управления виртуальными средами, в которых работает полная операционная система. Например, в qemu-kvmсистеме вы можете иметь одну виртуальную машину с FreeBSD, другую под управлением Windows и другую под управлением Linux.

Виртуальные машины, созданные этими технологиями, ведут себя как отдельные компьютеры для гостя. У них есть виртуальный процессор, оперативная память, сетевая карта, графика и т. Д., Которые, по мнению гостя, являются настоящей статьей. Из-за этого на виртуальных машинах может быть установлено много разных операционных систем, и они работают «из коробки» без каких-либо изменений.

Хотя это очень удобно, поскольку многие ОС устанавливаются без особых усилий, у него есть недостаток, заключающийся в том, что гипервизор должен имитировать все оборудование, что может замедлять работу. Альтернативой является паравиртуализированное оборудование, в котором для гостя разработано новое виртуальное устройство и драйвер, предназначенный для производительности в виртуальной среде. qemu-kvmпредоставьте virtioряд устройств и драйверов для этого. Недостатком этого является то, что гостевая ОС должна поддерживаться; но если поддерживается, преимущества в производительности велики.


lxcпример виртуализации на уровне операционной системы или контейнеров В этой системе установлено только одно ядро ​​- ядро ​​хоста. Каждый контейнер - это просто изоляция пользовательских процессов. Например, веб-сервер (например apache) установлен в контейнере. Что касается этого веб-сервера, то единственный установленный сервер - сам. В другом контейнере может работать FTP-сервер. Этот FTP-сервер не знает об установке веб-сервера - только его собственный. Другой контейнер может содержать полную пользовательскую установку дистрибутива Linux (если этот дистрибутив способен работать с ядром хост-системы).

Однако при использовании контейнеров не существует отдельных установок операционной системы - только отдельные экземпляры пользовательских служб. Из-за этого вы не можете устанавливать разные платформы в контейнере - без Windows в Linux.

Контейнеры обычно создаются с использованием chroot. Это создает отдельный закрытый root ( /) для процесса, с которым можно работать. Создавая множество отдельных частных корней, процессы (веб-серверы или дистрибутив Linux и т. Д.) Выполняются в собственной изолированной файловой системе. Более продвинутые методы, такие как, cgroupsмогут изолировать другие ресурсы, такие как сеть и RAM.


Есть плюсы и минусы для обеих и многих длительных дискуссий о том, какой из них лучше.

  • Контейнеры легче, потому что не установлена ​​полная ОС для каждого; что имеет место для гипервизоров. Поэтому они могут работать на более низком аппаратном обеспечении. Тем не менее, они могут работать только с гостями Linux (на хостах Linux). Кроме того, поскольку они совместно используют ядро, существует вероятность того, что скомпрометированный контейнер может повлиять на другой.
  • Гипервизоры более безопасны и могут запускать разные ОС, поскольку в каждой виртуальной машине установлена ​​полная ОС, а гости не знают о других виртуальных машинах. Однако это использует больше ресурсов на хосте, который должен быть относительно мощным.
garethTheRed
источник
2

Контейнер немного похож на среду chroot, за исключением того, что он обеспечивает более полную изоляцию пространства пользователя. Он не обеспечивает настоящую виртуальную машину, а виртуальную операционную систему. Виртуальные машины создают иллюзию множества машин, внутри каждой из которых настоящая полноценная операционная система может работать как на голом железе. «Полная операционная система» здесь включает в себя ядро. Некоторые виртуальные машины (например, QEMU ) даже позволяют стимулировать различные виды архитектуры «голого металла».

Контейнеры вместо этого создают иллюзию множества ядер, каждое из которых работает на полноценном пользовательском пространстве. Вы можете, например, запустить Debian в одном контейнере и Arch в другом, так что перспектива изнутри контейнера во многом такая же, как у виртуальной машины. Однако вы можете запускать только пользовательскую область ОС, совместимую с реальным ядром, в данном случае Linux. Это отличается от реальных виртуальных машин, где вы можете запустить независимое ядро ​​и, следовательно, любую операционную систему.

Таким образом, настоящие виртуальные машины дороже, с точки зрения ресурсов, чем контейнеры; если вам не нужны разные ядра в каждой виртуальной машине, вы также можете использовать контейнер.

Существуют другие системы виртуализации, которые делают что-то похожее на LXE, например openVZ , широко используемые поставщиками VPS. OpenVZ VPS - это независимое пользовательское пространство, использующее ядро ​​своей операционной системы. Вот почему такие VPS-ы входят во множество разновидностей Linux, но не более того; они должны быть совместимы с ядром хоста.

Виртуализация в стиле OpenVZ и LXC называется виртуализацией на уровне операционной системы .

Гипервизор является системой , которая управляет виртуальными машинами, такими как VirtualBox , QEMU или Xen . Некоторые гипервизоры, такие как Xen, работают на голом железе и не требуют хост-ОС (хотя они могут требовать, чтобы хост-ОС служила интерфейсом управления). Другие, такие как VirtualBox и QEMU, работают внутри операционной системы. Некоторые, такие как QEMU, позволяют моделировать различные архитектуры машин; другие, такие как VirtualBox, этого не делают (т. е. архитектура виртуальных машин всегда совпадает с реальным хостом). Для моделирования архитектуры требуется больше ресурсов, так же как для реальных виртуальных машин требуется больше ресурсов, чем для контейнеров.

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

лютик золотистый
источник