Три слова, продающихся по трём ценам, и лишь у одного из них есть определение, с которым все согласны. Выделенный сервер - это физическая машина, на которой больше никого нет. VPS - это виртуальная машина на общей физической. VDS - это VPS, продавец которого хочет, чтобы вы знали: доля CPU не переподписана, - что иногда действительно техническое отличие, а иногда просто новое название. Полезный вопрос никогда не звучит как «что из трёх мне нужно», он звучит как «что именно гарантировано и можно ли проверить это, когда машина заработает». Эта статья отвечает на оба вопроса, включая команды, которые показывают, что вы на самом деле купили.
Три слова и какое из них маркетинг#
VPS расшифровывается как virtual private server. Это виртуальная машина: доля физического хоста с собственной операционной системой, собственным IP-адресом и root-доступом внутри. Слово ничего не говорит о том, как эта доля нарезана. VPS на 1 GB у одного провайдера и VPS на 1 GB у другого могут отличаться по реальной производительности втрое, и оба описания будут верны.
VDS расшифровывается как virtual dedicated server. Индустрия использует его для VPS, где ресурсы не делятся: ваши vCPU закреплены или зарезервированы, а не оспариваются, память не переподписана, а выделение диска настоящее. Органа, который следил бы за этим, нет, и в этом вся проблема. Одни провайдеры используют VDS точно; другие - как синоним VPS с более высокой ценой. Слово - это утверждение, а не спецификация, и утверждение стоит ровно столько, сколько стоит то, что рядом с ним: названная модель CPU, заявленное число vCPU и ответ на вопрос «вы делаете overcommit».
Выделенный сервер - это вся физическая машина целиком. Один арендатор, один комплект железа, и никакого гипервизора между вами и CPU, если вы не поставите его сами. Это единственное из трёх слов с однозначным смыслом, и цена это отражает.
Честная иерархия - не VPS, затем VDS, затем выделенный сервер. Она такая: какая часть физической машины вам гарантирована и какая часть окружающей работы лежит на вас. Эти два вопроса почти независимы, и поэтому неудачно выбранный выделенный сервер может работать хуже удачно выбранного VDS за те же деньги.
Что на самом деле делает гипервизор#
Под маркетингом скрываются по-настоящему разные технологии, и разница проявляется в том, что вы можете делать.
Полная виртуализация (KVM, VMware, Hyper-V, Xen HVM). Гость получает эмулируемую машину и запускает собственное ядро. Вы можете загружать модули ядра, запускать Docker, задавать свои значения sysctl, использовать любой дистрибутив, подключать swap-файл и запускать версию ядра, отличную от хостовой. Сегодня почти всегда «VPS» означает именно это, и именно это вам нужно, если нет особой причины для другого.
Контейнерная виртуализация (OpenVZ, LXC, Virtuozzo). Гость делит ядро с хостом. Это дешевле запускать и плотнее, а значит, дешевле продавать, но менять параметры ядра нельзя, часть настроек sysctl доступна только для чтения, swap ведёт себя странно, а некоторые нагрузки - всё, что требует модулей ядра, некоторые конфигурации VPN, порой Docker - не работают или работают плохо. Учёт памяти тоже свободнее, из-за чего VPS в контейнере может «не хватать памяти», тогда как free -m говорит обратное. OpenVZ поблёк, но с дешёвого края рынка не исчез.
Прикладные контейнеры (Docker, а значит, и игровой хостинг на основе Pterodactyl). Это уже другое, и вовсе не VPS. Одно дерево процессов на контейнер, память и CPU ограничены контрольными группами ядра, собственного ядра нет, root на хосте тоже нет. Именно это представляет собой управляемый тариф для игры или приложения, и его как следует сравнивают в статье VDS или игровая панель.
Bare metal. Гипервизора нет. Каждый такт и каждый байт пропускной способности памяти - ваши, включая те, что вы не используете.
Узнать, на чём вы находитесь, можно одной командой:
$ systemd-detect-virtkvm$ systemd-detect-virt --containernonekvm, vmware, microsoft или xen означают полную виртуализацию. lxc, openvz или docker означают, что вы делите ядро. none означает bare metal либо гипервизор, который хорошо прячется.
«Выделенные ресурсы» - это три разных обещания#
Когда на странице написано «выделенные ресурсы», может иметься в виду любое из трёх, и их стоит разделять, потому что обычно людей волнует только одно.
Выделенная память. Ваш объём RAM обеспечен настоящей памятью и не переподписан. Это распространено, дёшево и редко оказывается тем, что ломается.
Выделенный CPU. Ваши vCPU не делятся с другими арендаторами. На общем VPS восемь арендаторов по два vCPU могут сидеть на хосте с восемью потоками; когда заняты все, ждут все. На настоящем тарифе с выделенным CPU соответствие ближе к одному vCPU на аппаратный поток, и на вашем никто другой не планируется. Именно это обещание должны нести буквы VDS, и именно оно сильнее всего влияет на игровой сервер, потому что игровой сервер - это работа одного потока, которая должна закончиться вовремя.
Выделенные диск и сеть. Встречается гораздо реже, чем кажется. Диски NVMe почти всегда общие для всех гостей через один контроллер, а внешний канал общий по определению. Хорошие провайдеры реально предлагают здесь ограничение глубины очереди или IOPS на гостя, чтобы один шумный арендатор не мог задушить остальных.
Измеримое следствие общего CPU - steal time: доля времени, когда ваш vCPU был готов работать, а гипервизор отдал физическое ядро кому-то другому. Он виден как столбец st в vmstat и значение %st в top:
$ vmstat 1 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 612344 84120 917640 0 0 3 14 201 388 9 2 88 0 1Менее 1% - нормально и неизбежно. Устойчивые 5% и больше на тарифе, проданном как выделенный CPU, означают, что это не он. Это число, которое можно сфотографировать и приложить к тикету, а это больше, чем можно сказать про «мне кажется, тормозит».
В статье общий CPU и шумные соседи подробнее о том, что гарантирует доля и чего не гарантирует.
Физическая машина и во что она обходится на самом деле#
Выделенный сервер убирает гипервизор и соседей. Работу он не убирает никакую.
Что вы реально получаете:
- Весь CPU, включая кэш. На виртуализированном хосте соседи вытесняют ваши данные из общего кэша L3, независимо от того, используют ли они время CPU, которое вам обещано. Это невидимо в любом бенчмарке, измеряющем пропускную способность, и очень заметно в нагрузках, чувствительных к задержке.
- Предсказуемость. 99-й перцентиль чего угодно лучше на машине, которой никто другой не касается. Для игрового сервера именно 99-й перцентиль замечают игроки.
- Выбор железа. Конкретные диски, конкретный RAID, больше памяти, чем предлагает любой тариф VPS, иногда GPU.
- Никакого overcommit, никогда. Не потому, что провайдер пообещал, а потому, что переподписывать некому.
Чего это стоит помимо месячной суммы:
- Время выдачи. Bare metal монтируют в стойку, ставят образ и передают. Это часы или дни, а не минуты, и то же самое касается замены, когда умирает диск.
- Вся работа системного администратора. То же, что и на VDS, только теперь о железе тоже приходится думать вам. Состояние RAID, прошивки, IPMI, настройка BIOS, сбросившаяся после отключения питания.
- Простаивающие мощности, за которые вы заплатили. Выделенная машина рассчитана на ваш пик. Всё, что выше вашего среднего, - деньги, потраченные на готовность.
- Единая точка отказа. Одна машина - это одна машина. ВМ часто можно за минуты перенести на другой хост. Умершую материнскую плату - нет.
Правило, которое выдерживает проверку: берите bare metal, когда вы действительно собираетесь использовать большую его часть или когда 99-й перцентиль и есть ваш продукт. Ниже этого хорошо описанный VDS - то же железо, где за части, которые не ваше дело, отвечает кто-то другой.
Собственная линейка RE:NODE на странице выделенных серверов - это VDS, а не bare metal, и страница говорит, на какой машине он работает: Intel i9-9900K, NVMe везде, на пуле ZFS, в Германии. Это важнее ярлыка категории. i9-9900K - это восьмиядерный шестнадцатипоточный процессор с высокой частотой одного ядра, то есть именно такой формы CPU, какой нужен игровому серверу или небольшой базе данных, и поэтому тарифы останавливаются на шести vCPU: шесть потоков из шестнадцати - доля, которую можно держать честной. В отличие от управляемых тарифов, которые создаются, когда проходит платёж, и обычно работают в течение минуты, VDS готовится вручную и передаётся в течение 24 часов.
Как читать спецификацию, не попавшись#
Одни и те же шесть строк решают почти любое сравнение, а в большинстве описаний есть ответы лишь на две.
| Что написано на странице | О чём спрашивать на самом деле |
|---|---|
| «4 vCPU» | Четыре потока какого CPU, и делятся ли они? |
| «Выделенный CPU» | Закреплённые ядра или вес планировщика? |
| «NVMe SSD» | Какой лимит IOPS или очереди на гостя, и есть ли RAID? |
| «8 GB RAM» | Переподписана ли память на хосте? |
| «Безлимит» | Какая скорость порта и какая политика fair use? |
| «Защита от DDoS» | Всегда включена или по триггеру, и что она отбрасывает? |
Конкретный пример того, почему важна первая строка: четыре vCPU на восьмиядерном настольном процессоре 2018 года с бустом 5,0 GHz обгонят четыре vCPU на шестидесятичетырёхъядерном серверном процессоре с частотой 2,2 GHz почти для любого игрового сервера, потому что игровому серверу нужно, чтобы один поток вовремя закончил tick, а остальные шестьдесят ему безразличны. Для сборочной фермы или веб-сервера, обрабатывающего много независимых запросов, те же две машины меняются местами полностью. Число vCPU без названия модели нельзя ни с чем сравнить.
Вторая строка стоит одного уточняющего вопроса в тикете перед покупкой, потому что ответы различаются: закреплённые ядра означают, что конкретные аппаратные потоки ваши; вес планировщика означает, что вы получаете больший кусок при конкуренции, а это другое и более слабое обещание.
Что подходит для какой нагрузки#
| Нагрузка | Правильный ответ | Почему |
|---|---|---|
| Один-два игровых сервера | Управляемый тариф | Нужна часть машины и никакой работы |
| Шесть и больше небольших сервисов | VDS | Память объединяется между ними, и одна ОС обслуживает всех |
| ПО, которое никто не продаёт как продукт | VDS | Root и собственное ядро - это и есть смысл |
| Загруженная база с настоящим IO | VDS или bare metal | Конкуренция за IO - то, от чего вы уходите |
| Собственная панель игрового хостинга | VDS, от 16 GB | Панель, Wings, Docker и база - ещё до первых игроков |
| Постоянно высокий CPU весь день | Bare metal | На общей инфраструктуре вы сами становитесь шумным соседом |
| Критична задержка на 99-м перцентиле | Bare metal | Нет гипервизора, посторонние не вытесняют кэш |
| Всё, что вы не будете обслуживать | Управляемый тариф | Самый дешёвый час - тот, который не пришлось потратить |
Закономерность в этой таблице такая: виртуализация почти никогда не бывает решающим фактором. Решает то, сколько отдельных вещей вы запускаете, насколько они неравномерны по нагрузке и хотите ли вы, чтобы операционная система была вашей ответственностью. В статье сколько стоит игровой сервер то же решение рассмотрено со стороны денег, а несколько игровых серверов на одном VDS - практический вариант второй строки.
Проверяем, что вы на самом деле получили#
Сделайте это в первые десять минут, до того как что-либо установите, и сохраните вывод. Это разница между тикетом, который решают, и разговором об ощущениях.
$ systemd-detect-virt # kvm, lxc, openvz, docker or none$ lscpu | head -20 # model name, sockets, cores, MHz$ nproc # threads visible to you$ free -m # real memory, and whether swap exists$ df -h / # disk actually available$ uname -r # your kernel, or the host'sСамая важная из них - lscpu. Она печатает название модели, благодаря чему «4 vCPU» становится сопоставимым, а строка Hypervisor vendor подтверждает то, что сказал systemd-detect-virt. Если название модели пустое или общее на тарифе, проданном как выделенный CPU, спросите почему.
Затем измеряйте, а не верьте. Скорость одного ядра - число, которое предсказывает поведение игрового сервера, и sysbench даёт грубый, но сопоставимый результат за десять секунд:
$ apt install sysbench fio$ sysbench cpu --threads=1 --time=10 run | grep "events per second"$ sysbench cpu --threads=$(nproc) --time=10 run | grep "events per second"Запустите однопоточный тест три раза в разное время суток. Если результаты расходятся более чем на 10%, вы делите машину с кем-то занятым. Для диска подходит небольшой тест случайной записи, потому что он соответствует тому, что реально делают сохранение мира или коммит базы данных:
$ fio --name=randwrite --ioengine=libaio --direct=1 --rw=randwrite \ --bs=4k --size=1G --numjobs=1 --runtime=30 --group_reportingСмотрите на IOPS и на задержку 99-го перцентиля, а не на среднее. В статье что на самом деле меняет NVMe объяснено, какие операции это число определяет, а каких вообще не касается.
Наконец, понаблюдайте за steal time неделю, выводя vmstat 60 в файл, или просто поглядывайте на top в часы пик. На тарифе с контейнерной виртуализацией steal time всегда будет нулевым, потому что троттлинг учитывается иначе; проверяйте контрольную группу:
$ cat /sys/fs/cgroup/cpu.statusage_usec 184203311nr_periods 291844nr_throttled 0throttled_usec 0Растущий nr_throttled означает, что вы упираетесь в собственный лимит CPU, то есть это проблема размера, а не соседей, и решение - большая доля или меньше работы. Метод, как выбрать между ними, описан в статье CPU или RAM: что сдерживает ваш сервер.
Когда вы убедились в том, что купили, потратьте следующие полчаса на первый час на новом VDS: пользователь без root, ключи SSH, файрвол с запретом по умолчанию и автоматические обновления. Новую машину с парольной аутентификацией сканеры находят в течение нескольких часов после появления её адреса, и это не преувеличение.
FAQ#
VDS - это просто другое название VPS?
Иногда. Задуманное различие в том, что VDS не переподписывает CPU и память, так что ваша доля действительно ваша. Ничто не обеспечивает соблюдение этого слова, поэтому считайте его утверждением, которое нужно проверить: спросите модель CPU, спросите, закреплены ли ядра, затем неделю измеряйте steal time сами.
Нужен ли мне выделенный сервер для игрового сервера?
Почти никогда. Одному игровому серверу нужен один поток симуляции и несколько гигабайт памяти, то есть малая доля любой современной машины. Bare metal оправдан, когда вы запускаете много серверов одновременно, когда вам нужен каждый такт быстрого ядра на 99-м перцентиле или когда вы занимаетесь перепродажей.
Сколько vCPU мне нужно?
Меньше, чем вы думаете, и более быстрых. Большинство игровых серверов, большинство небольших веб-приложений и большинство баз данных под настоящей нагрузкой ограничены тем, насколько быстро один поток заканчивает свою работу. Два vCPU с высокой частотой обгоняют восемь медленных для такой формы нагрузки. Добавляйте ядра, когда запускаете несколько независимых вещей, а не для того, чтобы ускорить одну.
Можно ли запустить Docker на любом VPS?
На KVM, VMware, Hyper-V или Xen - да. На контейнерной виртуализации, такой как OpenVZ или LXC, это варьируется от неудобного до невозможного, потому что ядро вам не принадлежит. Запустите systemd-detect-virt перед покупкой всего, где Docker входит в план, а если не уверены, отдавайте предпочтение полной виртуализации.
Что происходит, когда на VDS кончается память?
OOM killer ядра выбирает процесс и завершает его, обычно самый большой, а это обычно то, что вам дорого. Предупреждения нет, а следы остаются в dmesg. Управляемые контейнеры ведут себя иначе: контейнер останавливается на своём лимите и запускается заново с чистого листа, а не уходит в swap.
Отличается ли железо у VPS и VDS?
Обычно нет. Одни и те же машины часто обслуживают оба варианта, а разница в том, сколько гостей на них размещено и закреплён ли CPU. Именно поэтому модель CPU и политика overcommit стоят больше, чем название продукта на странице.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.