Своё ядро против общего, выделенная память против плавающей, WireGuard и Docker, как определить тип виртуализации на своём сервере и что выбрать.
Когда выбираете VPS, в характеристиках почти всегда стоит тип виртуализации: KVM или OpenVZ (иногда пишут LXC или «контейнер»). От этого зависит, будет ли у сервера своё ядро, заработает ли WireGuard и Docker, гарантирована ли оперативная память. Разберём, чем эти два подхода отличаются, как узнать, что у вас, и что выбрать под конкретную задачу.
Коротко. KVM - полноценная виртуальная машина: своё ядро Linux, своя память и swap, можно грузить модули ядра, ставить любую ОС, поднимать VPN и Docker без оговорок. OpenVZ - это контейнер: все серверы делят ядро хоста, своего ядра нет, память бывает «плавающей», часть настроек недоступна. OpenVZ дешевле и плотнее, но с оговорками. Для своего VPN, Docker и предсказуемой производительности берите KVM.
Что такое виртуализация на VPS
Провайдер берёт один физический сервер и делит его на много виртуальных. Способ деления и есть тип виртуализации. Их два семейства.
Аппаратная виртуализация (KVM, а также Xen HVM, VMware) - физический сервер запускает гипервизор, а тот создаёт отдельные виртуальные машины. Каждая машина думает, что она - настоящий компьютер: со своим BIOS, своим ядром операционной системы, своими виртуальными дисками и сетевой картой.
Виртуализация на уровне ОС (OpenVZ, LXC, контейнеры) - физический сервер запускает одно ядро Linux, а оно изолирует друг от друга группы процессов. Каждая такая группа выглядит как отдельный сервер, но ядро у всех общее - хостовое.
KVM: полноценная виртуальная машина
KVM (Kernel-based Virtual Machine) - это аппаратная виртуализация, встроенная в ядро Linux. Ваш VPS на KVM:
- Имеет своё ядро. Можно обновлять его отдельно от провайдера, грузить модули (
wireguard,nf_tables,tun), собирать своё ядро. - Получает выделенную память. Сколько указано в тарифе - столько и есть, её не «одолжат» соседу.
- Имеет настоящий swap. Файл или раздел подкачки создаётся и работает как на обычном сервере.
- Запускает любую ОС. Linux, Windows, FreeBSD - гипервизору всё равно.
- Даёт полный доступ к системе.
dmesg, изменение параметров ядра (sysctl), включение BBR, форвардинг пакетов, вложенные контейнеры Docker и LXC внутри VPS.
Плата за это - небольшие накладные расходы: гипервизор тратит несколько процентов ресурсов на эмуляцию. На практике это незаметно.
OpenVZ и LXC: виртуализация на уровне ОС
OpenVZ (и родственный ему LXC) не создаёт виртуальную машину. Он нарезает один физический сервер на изолированные окружения поверх общего ядра. Ваш VPS на OpenVZ:
- Не имеет своего ядра. Оно общее с хостом и обычно старее того, что вы поставили бы сами. Модули ядра грузить нельзя.
- Часто получает «плавающую» память. Вместо честного swap - vSwap; заявленный объём может быть «до», а не «гарантированно».
- Ограничен в настройках. Часть
/procи/sysтолько для чтения, ряд параметровsysctlизменить нельзя,dmesgпустой. - Только Linux. Windows или BSD не поставить.
- Плотнее и дешевле. Накладных расходов почти нет, провайдер размещает больше клиентов на одном железе - отсюда низкая цена, но и выше риск шумного соседа.
Признак OpenVZ - каталог /proc/vz или файл /proc/user_beancounters внутри сервера.
KVM против OpenVZ: таблица
Параметр | KVM | OpenVZ / LXC |
|---|---|---|
Своё ядро | да | нет, общее с хостом |
Модули ядра (WireGuard и т.п.) | грузятся штатно | нельзя |
Оперативная память | выделенная | часто «до», vSwap |
Swap | настоящий | vSwap или запрещён |
Операционная система | Linux, Windows, BSD | только Linux |
Docker | без оговорок | зависит от провайдера, бывают сбои |
Доступ к параметрам ядра | полный | ограниченный |
Накладные расходы | несколько процентов | почти нулевые |
Риск шумного соседа | ниже | выше (плотнее посадка) |
Цена | выше | ниже |
Как узнать, какая виртуализация у вашего сервера
Зайдите на сервер по SSH и выполните любую из команд.
systemd-detect-virt
Выведет kvm, openvz, lxc или none (последнее - если это физический сервер).
hostnamectl | grep Virtualization
Строка Virtualization: kvm или Virtualization: openvz.
ls /proc/vz /proc/user_beancounters 2>/dev/null
Если что-то из этого существует - у вас OpenVZ. Если команда молчит - скорее всего KVM.
lscpu | grep -i hypervisor
На KVM в выводе будет Hypervisor vendor: KVM.
Что это меняет на практике
- Свой VPN. WireGuard на KVM ставится модулем ядра за пару команд. На OpenVZ модуля нет - работает только userspace-реализация, и то не у всех провайдеров.
- Docker и Kubernetes. На KVM - штатно. На OpenVZ бывают проблемы с cgroups и файловой системой overlay; часть провайдеров Docker на OpenVZ просто запрещает.
- Нагрузка под пик. На KVM память и ядра выделены - под нагрузкой сервер ведёт себя предсказуемо. На OpenVZ при «плавающей» памяти процесс может неожиданно убить OOM-killer, потому что реального объёма меньше заявленного.
- Тонкая настройка сети. BBR, форвардинг, нестандартные
sysctl, свои правилаnftablesс модулями - всё это про KVM. - Своё ядро и свежие фичи. Новые возможности ядра доступны на KVM сразу, а на OpenVZ - когда их подтянет провайдер на хост.
Что выбрать
Берите KVM, если планируете свой VPN, Docker, нестандартную сеть, Windows, или если важна предсказуемая производительность под нагрузкой. Это стандарт для большинства задач.
OpenVZ имеет смысл, только когда нужен максимально дешёвый сервер под простую задачу без требований к ядру: небольшой сайт, бот, кэш, тестовый стенд - и вы готовы к тому, что сосед по железу может просесть по производительности.
Серверы WeaselCloud - на KVM: выделенная память, своё ядро, WireGuard и Docker без оговорок.
Частые вопросы
OpenVZ и VPS - это одно и то же? Нет. VPS - это любой виртуальный сервер. KVM и OpenVZ - два способа его сделать.
На KVM медленнее из-за накладных расходов? Разница в несколько процентов, её не видно в реальных задачах. Зато нет риска, что провайдер оверселлит память.
Можно ли поменять тип виртуализации на своём сервере? Нет, это определяется на стороне провайдера. Чтобы сменить - нужен новый сервер на нужной виртуализации.
Что такое KVM в облаке? Большинство облачных провайдеров под капотом используют KVM (или его развитие). «Облачный VPS» почти всегда = KVM с дополнительным слоем управления.
Что дальше
- Как выбрать VPS - сколько ядер, памяти и диска закладывать под задачу.
- VPS, VDS, облако и выделенный сервер - чем эти форматы отличаются и что брать.
