Введение в аппаратную виртуализацию (Bare-metal)
Студент поймет концепцию гипервизоров первого типа и то, как они распределяют физические ресурсы процессора и памяти между виртуальными машинами.
Концепция аппаратной виртуализации
В классической архитектуре на один физический сервер устанавливается одна операционная система, которая монопольно владеет всеми аппаратными ресурсами (CPU, RAM, дисками). Это приводит к крайне низкой утилизации оборудования: сервер может использовать лишь 10-15% своей мощности, а остальное время простаивать.
Для решения этой проблемы была разработана технология аппаратной виртуализации, базирующаяся на гипервизорах 1-го типа (Bare-metal). Слово «Bare-metal» (голое железо) означает, что гипервизор устанавливается непосредственно на аппаратное обеспечение сервера, минуя какую-либо хостовую операционную систему (в отличие от гипервизоров 2-го типа, таких как VirtualBox, которые ставятся поверх Windows или Linux). Примеры гипервизоров 1-го типа: VMware ESXi, Proxmox VE, KVM, Microsoft Hyper-V.
Ключевой технологией, обеспечивающей работу таких гипервизоров, является аппаратная поддержка со стороны центрального процессора — инструкции Intel VT-x и AMD-V. В стандартной архитектуре x86 ОС работает в привилегированном кольце защиты Ring 0, а пользовательские приложения — в Ring 3. Аппаратная виртуализация вводит новый, еще более привилегированный уровень — Ring -1. Гипервизор работает в Ring -1, позволяя гостевым операционным системам виртуальных машин думать, что они работают в Ring 0 и имеют полный контроль над оборудованием. При этом гипервизор безопасно перехватывает и распределяет их обращения к физическому процессору.
Архитектура NUMA и ее влияние на производительность
Применяя метод Chunking, разобьем сложную тему управления памятью на логические блоки. Современные многопроцессорные серверы (с двумя, четырьмя и более CPU) строятся по архитектуре NUMA (Non-Uniform Memory Access — Неравномерный доступ к памяти).
В архитектуре NUMA оперативная память физически разделена на банки, и каждый банк жестко привязан к конкретному процессорному сокету. Связка «Процессор + его локальная память» называется NUMA-узлом (NUMA node). Доступ процессора к своей локальной памяти происходит с максимальной скоростью и минимальными задержками. Однако, если процессору из Узла 0 нужно обратиться к данным, находящимся в памяти Узла 1 (Remote Memory), этот запрос передается через специальные межпроцессорные шины (Intel QPI/UPI или AMD Infinity Fabric). Это значительно увеличивает задержку (latency) и снижает общую производительность системы.
Практическое правило для системного администратора (NUMA-awareness): При создании виртуальной машины гипервизор должен учитывать NUMA-топологию. Крайне важно выделять виртуальной машине (ВМ) виртуальные процессоры (vCPU) и оперативную память (RAM) в пределах одного физического NUMA-узла. Типичная ошибка новичка — выделить ВМ 20 ядер на сервере, где каждый физический процессор имеет по 16 ядер. Это заставит ВМ пересечь границы NUMA-узла, что приведет к непредсказуемым просадкам производительности в базах данных и высоконагруженных приложениях.
Почему при распределении ресурсов виртуальной машине на многопроцессорном сервере важно избегать пересечения границ NUMA-узла?
Технологии управления памятью в гипервизорах
Главное преимущество виртуализации — возможность оверкомиттинга (Overcommit). Это ситуация, когда сумма выделенных виртуальным машинам ресурсов превышает физически доступные ресурсы сервера. Например, на сервере с 128 ГБ RAM можно запустить ВМ с общим объемом выделенной памяти 150 ГБ. Это работает, потому что ВМ редко используют 100% выделенной им памяти одновременно.
Для обеспечения работы оверкомиттинга гипервизоры используют интеллектуальные технологии оптимизации памяти:
- Transparent Page Sharing (TPS): Гипервизор сканирует оперативную память и находит абсолютно идентичные страницы памяти (например, если запущено 10 ВМ с одинаковой ОС Ubuntu). Гипервизор сохраняет только одну физическую копию этой страницы, а всем ВМ дает на нее ссылку, экономя гигабайты RAM (дедупликация в RAM).
- Ballooning (Надувание шара): Если физическая память сервера заканчивается, гипервизор активирует специальный драйвер («шар») внутри гостевой ОС. Этот драйвер начинает запрашивать память у гостевой ОС. Гостевая ОС, думая, что память нужна важному приложению, выгружает неиспользуемые данные в свой собственный файл подкачки (swap) на диске. Освобожденную физическую память драйвер возвращает гипервизору для нужд других, более критичных ВМ.
- Memory Compression: Сжатие неактивных страниц памяти перед их сбросом в медленный своп гипервизора.
Задание
Сценарий (Problem-Based Learning): На сервере баз данных, работающем внутри виртуальной машины, наблюдаются сильные задержки при выполнении SQL-запросов. Сервер физически имеет 2 процессора по 12 ядер и 128 ГБ RAM. Виртуальной машине выделено 16 vCPU и 64 ГБ RAM.
- Анализ конфигурации ВМ: Обнаружено, что выделено 16 vCPU. Так как физический процессор имеет только 12 ядер, ВМ пересекает границы NUMA-узла (Spanning NUMA nodes).
- Анализ метрик гипервизора: В консоли мониторинга (например, ESXTOP или Proxmox GUI) проверяется метрика NUMA Remote Memory Access. Обнаружено высокое значение обращений к удаленной памяти.
- Решение проблемы: Выключить ВМ (Maintenance Window).
- Изменение конфигурации: Уменьшить количество vCPU до 12 (или менее), чтобы ВМ полностью помещалась в один NUMA-узел (vNUMA).
- Запуск ВМ и повторный замер производительности. Задержки (latency) должны вернуться к норме.
Флеш-карточки
Что такое гипервизор 1-го типа (Bare-metal)?
Нажмите, чтобы увидеть ответ
Это программное обеспечение, которое устанавливается непосредственно на аппаратное обеспечение сервера (без хостовой ОС) и управляет распределением ресурсов между ВМ.
Нажмите, чтобы вернуться
Как работает технология Ballooning?
Нажмите, чтобы увидеть ответ
Драйвер внутри гостевой ОС забирает у нее свободную память (заставляя ее при необходимости сбрасывать данные в свой swap) и отдает эту физическую RAM гипервизору.
Нажмите, чтобы вернуться