Перейти к содержанию

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

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

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

  • Изоляция рабочих нагрузок;
  • Более эффективная утилизация CPU/RAM;
  • Упрощение масштабирования;
  • Быстрое восстановление инфраструктуры;
  • Миграция workload между хостами;

Гипервизор

Система, которая эмулирует ваше физическое железо, выделяет ресурсы виртуальным машинам и позволяет создавать/изменять/удалять виртуальные машины.

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

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

Виды виртуализации

  • Полная виртуализация (bare metal, native, гипервизоры первого типа)

Info

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

Схема полной виртуализации
Схема полной виртуализации

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

Преимущества

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

  • VMware ESXI

  • Паравиртуализация (hosted, гипервизоры второго типа)

Info

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

Схема паравиртуализации
Схема паравиртуализации

Гипервизор второго типа выполняется поверх хостовой операционной системы (как правило Linux). Он управляет гостевыми операционными системами, в то время как эмуляцией и управлением физическими ресурсами занимается хостовая ОС.

Особенности

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

  • Oracle VM VirtualBox;
  • VMware Workstation

  • Виртуализация на уровне ОС (контейнеризация)

Info

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

Контейнеризация
Контейнеризация
  • Docker;
  • containerd;
  • Podman;
  • LXC

Особенности контейнеризации

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

Отличие виртуализации от контейнеризации

Контейнеры не эмулируют отдельное оборудование и не запускают собственное ядро ОС. Контейнеры используют ядро host-системы и изолируются через namespaces и cgroups

В виртуальных машинах происходит эмуляция физического железа хостовой системы (CPU, RAM, Storage...)


Контейнеры - это не виртуальные машины

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

Информация о контейнерах

Контейнеры "эфемерны" - они появляются и исчезают гораздо быстрее и проще, чем традиционная виртуальная машина.

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