Урок 1. Гипервизор, виртуальные машины и контейнеры
Прежде чем ставить Proxmox, полезно понять, что именно он делает. В этом уроке — основные слова, без которых дальше будет непонятно: гипервизор, виртуальная машина, контейнер, узел и гость.
Что такое виртуализация
Обычный сервер большую часть времени почти не нагружен: сайт или база данных занимают малую долю процессора и памяти. Виртуализация позволяет разделить один физический компьютер на несколько независимых «компьютеров» и загрузить его полезной работой.
Каждый такой виртуальный компьютер думает, что он настоящий: у него свой процессор, память, диск и сетевая карта. Внутри ставится обычная операционная система — Ubuntu, Debian, Windows — и обычные программы. Если внутри одной машины что-то сломалось, остальные продолжают работать.
Гипервизор
Гипервизор — программа, которая создаёт виртуальные машины и делит между ними ресурсы настоящего компьютера. Гипервизоры делят на два вида:
- первого типа — работают прямо на «железе», сервер нужен только для них. Это Proxmox VE, VMware ESXi, Microsoft Hyper-V;
- второго типа — обычная программа внутри вашей системы: VirtualBox, VMware Workstation. Удобно, чтобы попробовать Linux на ноутбуке, но для сервера, который работает круглосуточно, это лишний слой.
Proxmox VE — гипервизор первого типа: его ставят на сервер вместо Windows или другой системы, а управляют им с другого компьютера через браузер.
Виртуальная машина
Виртуальная машина (ВМ, по-английски VM — virtual machine) — полная копия компьютера в программе. В Proxmox их запускает QEMU с модулем ядра Linux KVM: QEMU изображает оборудование, а KVM использует аппаратную виртуализацию процессора (Intel VT-x или AMD-V), чтобы машина работала почти так же быстро, как настоящая.
У виртуальной машины своё ядро операционной системы, поэтому в ней можно запустить что угодно: Windows, любой Linux, FreeBSD. Цена — накладные расходы: машине нужна память под своё ядро и свои кэши, а загрузка идёт столько же, сколько у обычного компьютера.
Контейнер
Контейнер — более лёгкий способ разделить сервер. Контейнер не изображает оборудование: программы внутри него работают на ядре самого сервера, но видят только свои файлы, процессы и сеть. Снаружи контейнер выглядит как отдельная система Linux со своим адресом, пользователями и пакетами.
Proxmox использует контейнеры LXC (Linux Containers). Контейнер запускается за секунды и почти не тратит лишней памяти. Ограничения:
- внутри может работать только Linux — Windows в контейнере не запустить;
- изоляция слабее, чем у виртуальной машины: общее ядро означает, что ошибка в ядре касается всех;
- работающий контейнер нельзя перенести на другой сервер без перезапуска.
Сравнение
| Виртуальная машина | Контейнер LXC | |
|---|---|---|
| Какие системы | любые: Windows, Linux, BSD | только Linux |
| Ядро | своё | общее с сервером |
| Запуск | как у компьютера, десятки секунд | секунды |
| Расход памяти | больше: своё ядро, свои кэши | меньше: только сами программы |
| Изоляция | сильная | слабее |
| Перенос без остановки | да, в кластере | нет, только с перезапуском |
Правило простое: Windows и всё, где важна изоляция, — в виртуальную машину; лёгкие службы на Linux (DNS, веб-сервер, база для домашних нужд) — в контейнер.
Контейнеры LXC и Docker — разные вещи. LXC — целая система Linux с входом, пользователями и службами. Docker запускает одно приложение из готового образа. Ставить Docker прямо на сервер Proxmox документация не советует: обычно его ставят внутрь виртуальной машины. О самом Docker — в теме Docker.
Что добавляет Proxmox
KVM и LXC есть в любом Linux. Proxmox VE собирает их в одну систему и добавляет:
- веб-интерфейс на порту 8006 — создание машин, консоль, графики нагрузки;
- хранилища — диски машин на локальных дисках, ZFS, сетевых папках;
- резервные копии по расписанию и восстановление в пару щелчков;
- кластер — несколько серверов в одном интерфейсе с переносом машин между ними;
- брандмауэр, учётные записи и права доступа.
Слова, которые встретятся в курсе
- узел (node) — один физический сервер с Proxmox;
- гость (guest) — общее название виртуальных машин и контейнеров;
- VMID — номер гостя: 100, 101, 102… Номера до 100 зарезервированы, номер уникален во всём кластере;
- хранилище (storage) — место, где лежат диски машин, образы и копии;
- шаблон (template) — заготовка, из которой быстро создаются одинаковые машины или контейнеры;
- Datacenter — верхний уровень в интерфейсе: настройки, общие для всех узлов.
Коротко
- Гипервизор делит один сервер на несколько виртуальных; Proxmox VE — гипервизор первого типа на основе Debian.
- Виртуальная машина (QEMU/KVM) — полный компьютер со своим ядром, подходит для любой системы.
- Контейнер LXC — лёгкая изолированная система Linux на ядре сервера.
- Proxmox добавляет к ним веб-интерфейс, хранилища, резервные копии и кластер.
- Каждый гость получает номер VMID, начиная со 100.