@David138

Для чего нужна виртуализация в серверах?

Всем привет. когда хожу на собеседования, меня постоянно спрашивают про знания об виртуализациях. Можете подсказать для каких целей они служат? Я работаю дома у себя с virtualbox, но на работе спрашивают про kvm, hyper-v, в чем разница, и какие у них функции в серверной части? для чего они там могут пригодиться. можете привести пример ?
  • Вопрос задан
  • 196 просмотров
Решения вопроса 5
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Легко гуглится. Заодно сразу почитайте про контейнеризацию ОС и особенно контейнеризацию приложений (стоп-слово - Докер).
Ответ написан
@LuchS-lynx
инженер-ПТО
меня постоянно спрашивают про знания об виртуализациях.

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

Можете подсказать для каких целей они служат?
Для тех целей и задач, которые ставит перед собой компания или ее отделы, в рамках той специфики, для которой она разрабатывалось. Если тупо - виртуализация создает некоторую среду, в рамках которой ПО и ОС думают что они работают на реальном железе. Зачем это нужно или где может пригодится, зависит от Вашей фантазии и нескромного бюджета, который на это можно потратить. А помимо этого виртуальное железо тоже требует администрирования и обслуживания.

Я работаю дома у себя с virtualbox, но на работе спрашивают про kvm, hyper-v, в чем разница, и какие у них функции в серверной части?

https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D...

VB это гипервизор второго типа, дело в том, что он работает как надстройка над базовой операционкой, из-за чего относительно высокие потери на операциях ввода-вывода. Кроме того у него есть и свои ограничения, например в VB нельзя пробрасывать PCI-e порты (да я знаю что для Linux версии это работало, но вроде как потом выпилили эту функцию)

KVM - программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine).
https://ru.wikipedia.org/wiki/KVM
KVM это гипервизор первого типа, работает напрямую с железом, из-за чего накладные потери на виртуализацию сильно меньше, чем у той же VB, при этом и возможностей больше, например он может эмулировать поколение процессоров для виртуалки. На его базе есть и более продвинутые решения, например Proxmox.

Помимо виртуализации оборудования для виртуальных машин (масло-масляное), т.е. создания этих виртуалок, их нужно бэкапить, оперативно разворачивать, обеспечивать бесперебойную и непрерывную работу, для чего в случае останова хоста виртуалка должна быть быстро поднята на другом хосте, управлять загруженностью несколькими хостами, через миграцию и распределение ресурсов... много функций и функционала... Отдельная история про создание и разворачивание из типового шаблона копии/клона виртуалки, с определенными настройками и ПО. Могу сказать лишь гуглите видео по тому же Proxmox/ESXi. там очень много функций и возможностей. От тонкой настройки виртуалки под конкретное ПО, до бэкапов и миграций... Которые тоже не так уж и просты.
Ответ написан
Комментировать
GavriKos
@GavriKos
И kvm и hv нужны ровно для того же, для чего и виртуалбокс - в рамках одной машины запустить несколько операционок, если грубо говорить. А для чего нужны разные ОС - тут вариантов несоклько. Например - изоляция сред. Или разные требования у разного софта. Или удобство менеджмента.

А уж чем они отличаются вам поможет узнать гугл.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
На одном железном сервере с 32-я ядрами и 196 ГБ памяти крутится 12 контейнеров с разными Windows-ами и Linux-ами. Разумеется все контейнеры заточены под что-то конкретное. А рядом стоят ещё железяки, на которые контейнеры мигрируют в случае выхода из строя этого сервера. Вот и весь ответ!
Ответ написан
Комментировать
@rPman
Напомню многое из того что дают виртуальные машины можно частично решить средствами ос.

Существует разные уровни виртуализации, в конечном счёте это два типа - виртуализация через симуляцию железа (hyperv,virtualbox,kvm/qemu,vmware,..) и песочница средствами ос (контейнеры lxc/lxd docker, wine, windows wsl).

Основные направления использования виртуализации (и/или):
1. Изоляция
Уровень изоляции приложений, запущенных в разных виртуальных машинах максимально возможный, сравнимый с аппаратной, когда приложения буквально запускаться на разных железках, позволяет отдать виртуальные машины разными пользователями и они не смогут навредить друг другу, как случайно так и намеренно (на самом деле есть уязвимости в процессорах, страшнейшая беда последних лет) Помимо разделения между пользователями важно ещё и разделение между приложениями, которые не умеют или противятся одновременному своему запуску на одном железе, типичный пример приложения под разные ос win/linux или их разные версии
Отладка, виртуальная машина в отличии от физического железа легче (дешевле) контролируется, очень актуально при разработке самих ос
2. Квантование/разделение/дробление ресурсов
Ресурсы сервера физически нарезаются на части и распределяются между приложениями/пользователями, допуская оверселинг, обещание большего суммарного их количества, в надежде что одновременно максимум нагрузки на случится. Подавляющее количество времени большинство приложений ждут, нее тратя процессор, или используют меньше чем имеется памяти и т.п. почему бы эти ресурсы на отдать другому. Или одно приложение хочет много процессора и мало памяти а другое наоборот.
3. Возможности по резервированию/дублированию запущенных приложений, например можно переносить приложение между физическими серверами вплоть до без остановки из работы (что почти невозможно без виртуализации или хотя бы контейнеризации), что открывает интересные реализации отказоустойчивых систем и просто возможность управления нагрузкой в комитете там где сами приложения этого делать не умеют
Например есть инструменты по запуску виртуальной машины с одновременной синхронизацией ее состояния на другую машину, например в другом датацентре (для оптимизации трафика это может быть синхронизация на каждый входящий сетевой пакет), с моментальным переключением пользователей на эту резервную ноду.
Также по простому, виртуальное окружение чаще более постоянное чем физическое, и позволяет изолировать приложение (точнее ос) от необходимости поддерживать обновления железа, перенести готовый парк серверов, запущенных в виртуалках, дело пары команд, даже если это устаревшие и не поддерживаемые версии.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
meDveD_spb
@meDveD_spb
Зачем ты постоянно ходишь на собеседования, если у тебя до сих пор есть подобные влпросы?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы