LINUX.ORG.RU
ФорумAdmin

Контейнеризация - можно ли ее отнести к «hardware virtualization»?

 , ,


0

2

Википедия не может решить, является ли контейнеризация подтипом внутри hardware virtualization.

* https://en.wikipedia.org/wiki/Virtualization. Здесь она расположена на том же уровне, то есть:

* Hardware virtualization
* Operating-system-level virtualization (also known as "containerization")

* https://en.wikipedia.org/wiki/Hardware_virtualization. А если следовать логике этой страницы - то на младшем, то есть:

* Hardware virtualization
  * Operating-system-level virtualization (also known as "containerization")

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

Deleted

Всё-таки ближе к chroot чем к полноценным VM. Но при использовании ОС отличных от той в которой был собран контейнер используется именно полноценная виртуализация.

Mike_RM ()

Контейнеры это chroot на стероидах, индивидуальный userspace, ядро хоста но с изоляцией групп процессов. Так что контейнеры можно называть визуализацией на уровне ядра.

anonymous ()
Ответ на: комментарий от Mike_RM

Спасибо. То есть я правильно понимаю, что:

  • «hardware virtualization» существует лишь тогда, как мы используем полноценную виртуализацию.
  • полноценную виртуализация используется в контейнерах лишь в том случае, если контейнер был собран на одной ОС, а используется на другой

... и поэтому ответом на мой вопрос будет «когда как»?

Deleted ()
Ответ на: комментарий от pfg

Ну как бы да, везде в статьях так и пишут. Но выше человек говорит что

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

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

Deleted ()
Ответ на: комментарий от pfg

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

najar ()
Ответ на: комментарий от Deleted

Нет.

И нет нельзя назвать: аппаратной она у тебя будет только когда будет использовать возможности виртуализации конкретного CPU. Как отписали выше, докер это всего лишь раздутый chroot для микросервисов и прочего хипстерского дерьма.

alpha, докер же не умеет в возможности VT-x/VT-d ?

Twissel ★★★★★ ()
Последнее исправление: Twissel (всего исправлений: 2)

С моей точки зрения первый вариант правильный, а второй - нет. А с вашей?

Какое определение дашь, так и будет. С моей точки зрения процессы под одной ОС — это виртуализация процессора и памяти, т. е. тоже hardware virtualization.

Там всё написано https://www.oreilly.com/library/view/virtual-machines/9781558609105/.

anonymous ()
Ответ на: комментарий от hippi90

только в Солярке можно было запустить RH в контейнере.

Э.. Но в описанном тобой случае вообще, как я понимаю, теряется различие между контейнером и ВМ. Если мы можем загрузить отдельную ОС как внутри ВМ, так и внутри контейнера - в чем будут различия между ними?

Deleted ()
Ответ на: комментарий от Deleted

Виртуальная машина - это эмуляция определенного окружения, в том числе и железа. Использование всяких VT-x, не является обязательным условием, чтобы это можно было называть ВМ.

Контейнер - это изоляция в рамках существующей среды, здесь эмуляции нет.

В примере с Соляркой, ядро Linux не использовалось, контейнер работал на ядре Солярки.

hippi90 ★★★★ ()
Ответ на: комментарий от hippi90

А, понял, спасибо.

Тут еще такой вопрос. Вот ты используешь сейчас слово «эмуляция».

Но ведь насколько я понимаю, очень часто слово «эмуляция», «эмулятор» используют в несколько другом значении. А именно:

  • Используя гипервизор (например (VMware Workstation) ты не сможешь запустить AmigaOS на x86-компьютере, потому что у тех компов, для которых AmigaOS создавалась, был иной instruction set.
  • Но ее запуск на x86-компьютере будет возможным если использовать эмулятор (QEMU) вместо гипервизора.

Таким образом, слово «эмуляция», как я понимаю, имеет два разных значения:

  • Та эмуляция, когда ОС запущена в гипервизоре
  • Та эмуляция, когда ОС запущена в эмуляторе

Так?

Deleted ()
Ответ на: комментарий от Deleted

QEMU - это тоже гипервизор, вообще-то. Создание и управление виртуальными машинами - это и есть гипервизор.

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

hippi90 ★★★★ ()
Ответ на: комментарий от hippi90

QEMU - это тоже гипервизор, вообще-то.

Пример не очень хороший, да. Но QEMU вроде может работь и как эмулятор:

QEMU is a generic and open source machine emulator and virtualizer.

When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performance.

When used as a virtualizer, QEMU achieves near native performance by executing the guest code directly on the host CPU.

https://wiki.qemu.org/Main_Page

Deleted ()
Ответ на: комментарий от Deleted

В этом конкретном случае это подчеркивает характер виртуализации, можем динамически транслировать, а можем аппаратно исполнять.

Если вернуться к изначальному вопросу, то hardware virtualization - это имитирование (эмулирование) некого окружения, в данном случае некоторой машины с определенным набором аппаратного обеспечения. Т.е. ПО запущенное в «hardware virtualization» будет вести себя, как и будучи запущенным на реальном железе (с оговорками). Какими средствами это достигается, вопрос второй.

hippi90 ★★★★ ()
Ответ на: комментарий от hippi90

Что тебе аргументировать? Что qemu - это проект по реализации эмуляции? Что эмуляция не имеет отношения к виртуализации? Что ты вообще не понимаешь значения слов «виртуализаци» и «эмуляция»? Или что проект qemu-kvm является синтезом qemu и kvm, а ты не в состоянии читать буквы?

targitaj ★★★★★ ()
Ответ на: комментарий от Deleted

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

Совершенно необязательно. Более того, например у меня в lxc на x86 машине прекрасно работает ARM rootstrap из Harmattan SDK, где я легко собираю всё что мне нужно для N9 без кросс-компиляции в реальном харматтановском окружении. ARM бинарники запускаются через соответсвующую магию binfmt_misc и qemu-user, который в данном случае работает просто интерпретатором байт-кода ARM. Системные выовы и пр этих ARMовых бинарников при этом идут в ядро x86.

Такое можно даже в croot провернуть, контейнер тут не обязателен.

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

Stanson ★★★★★ ()
Последнее исправление: Stanson (всего исправлений: 3)
Ответ на: комментарий от targitaj

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

hippi90 ★★★★ ()
Ответ на: комментарий от hippi90

Таненбаум использует рафинированные cs-определения терминов, которые в реальном, повседневном айти используются чуть чаще, чем никогда. Чего только стоит его «операционная система = ядро»

Так что тут надо для начала спросить, чего хочет добиться ТС, и для чего ему нужны эти определения.

Deleted ()
Ответ на: комментарий от Deleted

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

hippi90 ★★★★ ()
Ответ на: комментарий от targitaj

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

Deleted ()
Ответ на: комментарий от targitaj

Когда ты создаешь новую виртуалку, например так:

qemu -enable-kvm -cdrom some.iso -hda disk.qcow2 ...

Qemu, в качестве гипервизора создает ВМ и управляет её жиненным циклом, эмулирует окружение в виде несуществующего cdrom и hdd и использует kvm для доступа к аппаратной виртуализации. Если ты уберешь опцию -enable-kvm, то qemu не будет использовать аппаратную виртуализацию, заменив её динамической трансляцией. Перестает ли qemu от этого быть гипервизором? Очевидно, нет.

hippi90 ★★★★ ()
Ответ на: комментарий от hippi90

То есть я правильно понимаю, что ты «эмулятор» как отдельную сущность не признаешь? В твоей терминологии гипервизор = эмулятор, и всё различие лишь в том, что одни «гиперляторы» обладают б_О_льшим набором фич (например: эмуляция instruction set architecture) и это позволяет, например, запустить AmigaOS на x86 (ПРИМЕР: QEMU), а другие — меньшим (эмуляция CD-ROM, объема памятия) (ПРИМЕР: WMWARE WORKSTATION). Всё верно здесь или моя шиза?

Deleted ()
Ответ на: комментарий от Deleted

Ты в его профиль глянь. Senior Java developer. У него мозга нет вообще. Ни грамма. Этот придурок всё оценил про имени файла-бинарника. Настоящий, эталонный программист. Уж поверь, я этих синьоров навидался. Они, как правило, сидят на маке и не в состоянии самостоятельно себе убунту накатить. Безмозглые животные.

targitaj ★★★★★ ()
Последнее исправление: targitaj (всего исправлений: 2)
Ответ на: комментарий от Deleted

«hardware virtualization» существует лишь тогда, как мы используем полноценную виртуализацию.

Hardware virtualization - это когда виртуализируются, внезапно, устройства. Аппаратные устройства.

tailgunner ★★★★★ ()
Ответ на: комментарий от targitaj

А может быть это технология виртуализации, имеющая реализацию в железе?

Нет. Если немного залезть в дебри, мы найдем там виртуальные устройства вроде виртуальной сетевой карты и или виртуального контроллера прерываний. Это и есть hardware virtualization. Кроме того, если зайти на страницу Wikipedia, о которой говорит ТС, там вполне однозначно сказано:

«act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources.»

Например, amd pacific.

Устройства виртуализировались еще до появления процессоров Intel, не говоря уже об AMD. Кроме того, без виртуализации устройств и SVM, и VTx практически бесполезны.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

я не знаю кто там писал в википедии, но

«act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources.»

называется словом «эмуляция». Эмуляция - это программая имитация устройства. Всегда так было и всегда так будет.

targitaj ★★★★★ ()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от targitaj

«act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources.»

называется словом «эмуляция»

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

Эмуляция - это программая имитация устройства.

Можно сказать и так.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Я не знаю, где ты набрался этого говна, но это всё не так. Виртуализация - это процесс разделения существующего (эмулированного) аппаратного ресурса между потребителями. Чтобы разделить ЦП между разными ОС необходимо уметь запоминать состояние ЦП и уметь переключаться между этими состояниями. Это можно сделать программно, как раньше. Позже эту технологию реализовали в железе. Потому что это быстрее, чем старая программная реализация. И вот эта реализация в железе и называется словосочетанием «аппаратная виртуализация». Еще раз, имитация оборудования называется эмуляцией и реализуется проектом qemu. Еще раз, разделение ресурсов называется виртуализацией, имеет поддержку (или НЕ имеет) в железе (как SR-IOV, например) и реализуется проектом KVM. Всё вместе это даёт «систему виртуализации», в рамках которой виртуальная машина получает часть РЕАЛЬНОГО ЦП, часть РЕАЛЬНОГО ОЗУ и пачку эмулированных или проброшенных устройств. ТОЧКА.

targitaj ★★★★★ ()
Ответ на: комментарий от tailgunner

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

Да, это правильно сказано. Если захочешь всё это сказать одним словом, то слово «разделить» подойдёт. Разделить устройство между (потребителями). Ровно то, что я и говорю.

В случае ЦП это значит, что надо сохранить состояние и передать ЦП другому потребителю. Что и реализуется, в том числе, в технологиях типа amd pacifica. Реализуется на уровне аппаратуры. В железе. И именно за счет реализации технологии виртуализации в железе мы и имеем производительность виртуальных машин на уровне хост-ос.

targitaj ★★★★★ ()
Последнее исправление: targitaj (всего исправлений: 3)