SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor

VPS: что это такое и какие права он даёт

VPS это виртуальный сервер на общем физическом компьютере. Узнайте, что дают root-права, какие ресурсы выделены и какие ограничения зависят от тарифа.

Что такое VPS?

VPS (виртуальный частный сервер) — это часть одного физического компьютера в дата-центре, которую арендуют для вас так, будто это отдельная машина. Специальное программное обеспечение разделяет этот компьютер на несколько независимых серверов. Вы получаете один из них: выделенный объём памяти, дисковое пространство, IP-адрес и права администратора для установки программ в пределах вашего тарифного плана. Сервер работает постоянно, а публичные тарифы отвечают по адресу в Интернете.

Разберём название из трёх слов. Server — это компьютер, который постоянно включён и отвечает на запросы по сети. Virtual означает, что сервер создан программно. Ваш сервер является частью более крупной физической машины. Private означает, что эта часть предназначена только для вас. Арендатор соседней части не видит ваши файлы и запущенные программы.

Если раньше у вас не было прав root ни на одном сервере, последняя часть особенно важна. VPS предоставляет права администратора в вашей серверной среде. Что уже настроено и что можно изменить, зависит от образа, технологии виртуализации и тарифного плана.

Что гипервизор разделяет и чем он делится

На VPS с виртуальной машиной за разделение ресурсов отвечает гипервизор. Он работает на физическом сервере, который называется хостом. Каждому клиенту гипервизор предоставляет набор виртуального оборудования: процессор, память, диск и сетевую карту. На это виртуальное оборудование устанавливают операционную систему, и она загружается так, будто владеет настоящим компьютером. Эта гостевая система и есть ваш VPS. Эту задачу выполняют KVM (kernel-based virtual machine), Xen, VMware ESXi и Microsoft Hyper-V. Контейнерные VPS, например OpenVZ, вместо отдельного гостевого ядра используют слой виртуализации в ядре операционной системы хоста.

Память и диск разделяются по объёму пространства. Процессор разделяется по времени. Именно это различие объясняет большинство проблем, с которыми пользователи сталкиваются позже. Выделенная память не является автоматической резервацией физической RAM: KVM поддерживает overcommit памяти, а хост может перемещать память гостевой системы в swap. Ваш диск — это файл или logical volume в хранилище хоста, и он остаётся вашим, пока вы его не удалите. Ваши виртуальные ядра — это очереди к физическим ядрам хоста, а гипервизор планирует, какая гостевая система будет выполняться следующей.

Одна команда определяет обнаруженный тип виртуализации.

systemd-detect-virt
uname -r

systemd-detect-virt выводит kvm на KVM VPS. Это означает, что полноценный гипервизор загрузил ядро, принадлежащее только вам. Для контейнерных технологий команда выводит lxc или openvz. В этом случае ваш сервер представляет собой изолированную область внутри операционной системы хоста, а ядро используется совместно с другими контейнерами на этом сервере; container-other означает, что обнаружена другая контейнерная среда. Если виртуализация не обнаружена, команда выводит none. Это различие имеет практические последствия, поскольку общее ядро нельзя изменить. В контейнере с общим ядром загрузка модулей контролируется хостом, поэтому функция ядра, например модуль WireGuard для VPN, требует поддержки со стороны хоста. В контейнере с общим ядром uname -r обычно выводит release ядра хоста, но контейнерные среды работают по-разному: gVisor запускает контейнеры без общего с хостом ядра, и его официальный пример выводит 5.15.0-gvisor. На сервере KVM эта же команда показывает ядро, установленное внутри вашей гостевой системы. Вы обновляете или заменяете его так же, как на любой другой машине.

Что здесь означает virtual?

Поскольку сервер реализован программно, для его создания не нужно устанавливать для вас новый физический сервер в стойку. Аппаратное оборудование не устанавливается в стойку специально для вас. Сервер создаётся из шаблонного образа, поэтому пересоздание возвращает чистую Ubuntu, но также удаляет всё содержимое существующего диска. Большинство панелей провайдеров также позволяют создать snapshot диска перед рискованными действиями, изменить тариф с перезагрузкой и перенести виртуальную машину на другое оборудование, если базовый хост требует обслуживания.

Цена объясняется тем же фактом: один физический сервер одновременно оплачивают несколько клиентов. Поэтому VPS стоит столько, сколько стоит по сравнению с арендой целого сервера.

У этой особенности есть и обратная сторона. Базовое оборудование общее, поэтому нагрузка со стороны соседнего клиента становится и вашей проблемой. Команда для её измерения приведена в разделе об ограничениях ниже.

Что здесь означает «private»?

«Private» означает изоляцию. Важно понимать, насколько полной она является. Вы получаете собственную корневую файловую систему, собственные учётные записи пользователей и собственный список процессов. VPS на виртуальной машине также получает собственное ядро, а контейнер OpenVZ использует ядро хоста совместно с другими контейнерами. Другой клиент на том же хосте не может просматривать ваши процессы или читать ваши файлы, потому что из его гостевой системы нет доступа к вашей памяти или виртуальному диску. Виртуальные машины запускают отдельные операционные системы, а контейнеры с общим ядром изолируют пользователей и программы внутри одной операционной системы. Однако на самом хосте эта конфиденциальность заканчивается: оператор гипервизора может в любой момент прочитать память вашей гостевой системы. Для устранения этого последнего пробела требуется аппаратная поддержка шифрования памяти, описанная в разделе конфиденциальные вычисления на VPS.

В shared hosting всё устроено иначе. Вы получаете каталог на машине, которая обслуживает сотни других сайтов, панель управления и программное обеспечение, выбранное провайдером. Там нет apt install, потому что установка пакета изменяет всю машину, а вы не можете изменять всю машину. В разделе Shared hosting и VPS этот компромисс рассмотрен подробно. Кратко: shared hosting предоставляет вам учётную запись, а VPS — компьютер.

Спецификация одного VPS, строка за строкой

Каждый VPS продаётся как короткий список чисел. Ниже приведён пример тарифа среднего уровня, который мы будем использовать далее. Эти значения приведены для примера. Это не коммерческое предложение и не актуальный обзор рынка.

ГрафикAn illustrative mid-range VPS plan
Данные, на которых построен график
[
  {
    "plan": "Example mid-range VPS",
    "vcpu_cores": 4,
    "ram_gb": 16,
    "nvme_gb": 160,
    "bandwidth_tb": 8,
    "ipv4_addresses": 1
  }
]

Эта строка содержит всю информацию о продукте. Разбирайте её слева направо.

4 vCPU. vCPU (virtual central processing unit) — это виртуальный процессор, которому гипервизор выделяет время на физических процессорах хоста. Если в тарифе не указано dedicated, речь идёт о доле потока, а не о зарезервированном процессоре. Внутри сервера nproc обычно выводит значение 4. Оно показывает число процессоров, доступных текущему процессу. CPU affinity и поддерживаемые квоты CPU в cgroup могут уменьшить это значение, а OMP_NUM_THREADS и OMP_THREAD_LIMIT задают соответственно его минимальное и максимальное возвращаемые значения. nproc --all считает все установленные процессоры. lscpu показывает название модели, которая в зависимости от конфигурации хоста может соответствовать реальному CPU хоста или универсальной модели QEMU.

16 GB RAM. Тариф задаёт объём памяти или лимит, но это само по себе не гарантирует резервирование физической RAM на хосте. free -h сообщает доступную память в двоичных единицах, исключая память, занятую ядром и зарезервированными областями. Перед сравнением проверьте, использует ли провайдер GB или GiB. Дополнительная память сверх выделенного объёма зависит от тарифа и конфигурации виртуализации.

160 GB NVMe. NVMe (non-volatile memory express) — это способ подключения накопителя внутри хоста. Он значительно быстрее SATA SSD, которые использовались в более старых тарифах. Ваш объём отображается как виртуальный диск, обычно /dev/vda в KVM. df -h / сообщает размер корневой файловой системы в двоичных единицах. Поэтому отображаемый размер отличается от размера диска, указанного в десятичных GB, и не включает пространство, занятое другими разделами и метаданными файловой системы. Доступный объём ещё меньше, поскольку ext4 по умолчанию резервирует 5 процентов файловой системы для root. В статьях Что на самом деле означает SSD в SSD VPS и как проверить проданный вам диск эта тема рассмотрена подробнее.

8 TB трафика. Это объём данных, переданных за месяц. Обычно учитывается только исходящий трафик. Объём трафика и скорость порта — разные параметры, указанные в тарифе отдельно. После превышения лимита провайдер может выставить счёт или ограничить скорость. Поэтому изучите этот пункт до размещения видео. sudo apt install vnstat предоставляет ваш собственный счётчик с помощью vnstat -m, начиная со дня установки.

1 IPv4-адрес. Адрес закреплён за вами, пока вы арендуете сервер. Вы можете указать его в DNS-записи домена и принимать трафик на портах, разрешённых вашим firewall и сетевой политикой провайдера. Настройки reverse DNS также зависят от провайдера. На очень дешёвых тарифах несколько клиентов иногда используют один общий адрес. Такой вариант называется NAT VPS. В этом случае ip -4 addr show сообщает частный адрес, например 10.0.0.5, а входящие порты ограничены.

Четыре команды подтверждают выданные вам параметры.

nproc
free -h
df -h /
ip -4 addr show

Если какой-либо параметр отличается от спецификации больше, чем допускает описанное выше округление, обратитесь в поддержку до размещения чего-либо на сервере.

Что означает доступ root на практике

root — это учётная запись администратора в Linux с идентификатором пользователя 0. Выполните id -u. Если вы вошли как root, команда выведет 0. root может устанавливать пакеты для всей системы, открывать порты ниже 1024 (по умолчанию ядро резервирует их для root или процессов с CAP_NET_BIND_SERVICE, поэтому процесс без root с такой возможностью может привязаться к порту 80 без снижения net.ipv4.ip_unprivileged_port_start), читать и изменять системные файлы, а одной ошибочной командой вывести систему из строя. Загрузка модулей и замена ядра требуют управления ядром, которого нет у контейнеров с общим ядром. Никто не исправит последствия за вас.

Практическая разница проста. На shared hosting вы создаёте обращение в поддержку и просите установить нужное программное обеспечение. На VPS вы вводите следующую команду.

sudo apt update
sudo apt install -y nginx
systemctl status nginx

В образе Ubuntu с systemd после установки systemctl status nginx должна вывести active (running). Если порт 80 доступен, IP-адрес сервера в браузере должен показать стандартную страницу nginx. Если статус выводит failed, выполните journalctl -u nginx -n 50 и прочитайте последние строки. В них сервис обычно указывает причину отказа при запуске. Чаще всего это опечатка в конфигурационном файле или другая программа, которая уже слушает порт 80.

root — это также вся граница безопасности системы. Доступ предоставляется через настроенный для сервера способ входа, например с помощью SSH-ключа или пароля. Первый сеанс на новом сервере — не время для установки приложений. Создайте обычного пользователя, переведите вход на SSH-ключ и установите firewall перед открытыми портами. Первые десять минут на новом VPS — это пошаговый список действий. В разделе Основы SSH-ключей описан сам вход. В разделе Основы firewall ufw описаны порты. В разделе Пользователи с минимальными привилегиями описано, от каких учётных записей должны запускаться сервисы. Отслеживайте попытки входа в журнале SSH-сервиса с помощью journalctl -u ssh -f.

Каковы ограничения VPS?

Процессор общий, и совместное использование можно измерить. Steal time — это доля времени, когда ваш виртуальный процессор был готов выполнять задачи, но не получил физическое ядро, потому что гипервизор передал его другой гостевой системе.

vmstat 1 5

Столбец st показывает steal time. Кратковременные всплески steal time возникают на общих хостах. Стабильное двузначное значение при простое ваших процессов обычно означает, что хост перегружен виртуальными машинами. Настройка внутри вашего сервера это не исправит, потому что ожидание происходит за его пределами. Hostinger отделяет CPU steal от системы CPU credits. Полная производительность восстанавливается после снижения нагрузки и накопления credits до порога восстановления. Прочитайте правила использования CPU для своего тарифа, прежде чем обвинять соседние виртуальные машины. В статье Как правильно тестировать VPS показано, как подтвердить проблему до обращения к провайдеру. Steal time передаётся гостевым системам KVM и Xen. В контейнерах отображаемое значение зависит от способа предоставления статистики CPU и не является надёжным показателем ограничения CPU для контейнера.

Объём памяти фиксирован, и предел наступает резко. Когда память заканчивается, а освобождение памяти не позволяет получить достаточный объём, OOM (out of memory) killer в ядре выбирает процесс и завершает его сигналом SIGKILL.

sudo dmesg -T | grep -i "out of memory"

Одна строка объясняет сбой, который иначе выглядит необъяснимым:

Out of memory: Killed process 2412 (mysqld) total-vm:2183104kB, anon-rss:1897224kB, file-rss:0kB

Собственный журнал приложения обычно ничего не сообщает, потому что SIGKILL не оставляет процессу возможности что-либо записать. Найдите причину в журнале ядра. Доступ контейнера к этому журналу зависит от конфигурации хоста. Перед созданием файла подкачки проверьте, настроен ли swap. Для VPS с контейнерами также проверьте правила хоста.

Диск быстрый, но общий. NVMe-накопитель хоста работает быстро, однако ваш сегмент конкурирует с другими гостевыми системами за операции ввода-вывода. Результат теста, выполненного в период низкой нагрузки, не гарантирует такую же производительность на той же машине в часы пиковой нагрузки.

Оборудование не принадлежит вам. Вы не можете подключать к нему устройства. USB-устройство, карту захвата и графическую карту можно использовать только в том случае, если тариф специально предусматривает их проброс. Это отдельный продукт: VPS с GPU.

Экземпляр ровно один. VPS — это одна машина. Сбой хоста может вывести ваш сервер из строя. Перенесёт ли провайдер его на другой хост или перезапустит там, зависит от услуги. Отказоустойчивость приложения всё равно нужно настраивать отдельно. Резервное копирование — ваша ответственность, поэтому резервные копии с VPS с помощью restic должны входить в список задач при настройке. Снимок, созданный провайдером, удобен, но его защита зависит от места хранения и срока хранения. Дополнительно создавайте независимую резервную копию.

Поддержка заканчивается на уровне гипервизора. В рамках unmanaged-тарифа провайдер поддерживает оборудование, сеть и слой виртуализации в рабочем состоянии. Всё начиная с операционной системы, включая обновления безопасности, находится в вашей зоне ответственности. В статье Управляемый и неуправляемый хостинг показано это различие, а автоматические обновления в Ubuntu — минимальная полезная настройка, которую стоит включить.

Чем VPS отличается от сервисов, с которыми его часто путают

Virtual machine — это гостевая система с виртуальным оборудованием и собственным ядром операционной системы. VPS — это арендуемый серверный продукт, работающий либо как virtual machine, либо как контейнер. Обычно он уже подключён к сети и имеет публичный адрес. VPC (virtual private cloud) — это частная сеть внутри более крупного облака. Серверы размещаются внутри неё, поэтому этот термин отвечает на другой вопрос. В статье VPS, VM и VPC: различия эти три термина разделены корректно.

Dedicated server — это целая физическая машина, выделенная вам. На ней нет гостевых систем других клиентов, и вы можете самостоятельно установить hypervisor. Такой вариант подходит, если основной проблемой стали steal time или конкуренция за дисковые ресурсы. В статье VPS и dedicated server перечислены основные критерии выбора.

VPN (virtual private network) имеет с VPS только две общие буквы. VPN — это зашифрованный туннель между машинами. VPS — это машина. Один из распространённых вариантов его использования — запуск собственного VPN. Из-за этого эти термины часто путают. В статье VPS и VPN объясняется разница между ними.

Hardware you own, либо hypervisor, например Proxmox на домашней машине, даёт контроль над оборудованием и подключение из residential-сети, к которой многие сервисы относятся с подозрением. Кроме того, вы получаете сам host. Поэтому guest может запускать собственный hypervisor после того, как вы включите nested virtualization в Proxmox. Арендуемый VPS также должен явно поддерживать эту возможность. В статье Proxmox и VPS сравниваются мощность, уровень шума и доступность с ежемесячной платой.

Что запускают на VPS?

Честный ответ: программное обеспечение, совместимое с операционной системой и архитектурой VPS, доступными ресурсами и правилами провайдера. Обычно это сайт с базой данных, частный VPN, игровой сервер, монитор мониторинга, почтовый сервер, медиатека или coding agent, который продолжает работать, пока ноутбук закрыт. Для почты сначала нужно проверить правила провайдера. Например, DigitalOcean по умолчанию блокирует порты SMTP 25, 465 и 587 на Droplets. Сетевые службы прослушивают порты, поэтому следующим полезным понятием будет что такое порт в Linux, а в материале что можно делать с VPS приведён более длинный список с указанием затрат ресурсов для каждого варианта.

FAQ

VPS — это то же самое, что виртуальная машина?

VPS — это сервер, который компания сдаёт вам в аренду вместе с операционной системой, обычно с публичным IP-адресом и указанной стоимостью. Это может быть виртуальная машина с собственным ядром или контейнер, например OpenVZ VPS, использующий ядро хост-системы. Эти понятия имеют разный смысл: «виртуальная машина» — это любой гостевой экземпляр, работающий на гипервизоре, в том числе на вашем ноутбуке, а «VPS» — это приобретаемый вами продукт. VPC — это уже третье понятие: частная сеть внутри облачного провайдера, а не сервер.

Нужно ли знать Linux, чтобы использовать VPS?

Некоторые базовые знания нужны, а остальное можно освоить по мере работы. Для начала достаточно уметь подключаться с помощью ssh, перемещаться по каталогам с помощью cd и ls, редактировать файл с помощью nano, устанавливать ПО с помощью apt и читать журналы с помощью journalctl. Неуправляемый VPS предполагает, что вы сами будете устанавливать обновления и настраивать firewall. Если это выходит за рамки ваших задач, сравните стоимость и зоны ответственности управляемого тарифа или панели управления.

Почему на моём VPS доступно меньше RAM, чем обещано в тарифе?

Linux показывает доступную для использования память, а в тарифе указывается выделенная память. Перед расчётом общего объёма в free -h вычитаются образ ядра и несколько зарезервированных областей памяти; кроме того, в free -h используются двоичные единицы, которые отличаются от десятичных GB, поэтому проверьте, какие единицы использует провайдер. Перед оценкой разницы сравните выделенный объём, единицы измерения и зарезервированную память. Если нехватка не объясняется, стоит обратиться в поддержку.

Что такое steal time и нужно ли из-за него беспокоиться?

Steal time — это процент времени, когда ваш виртуальный CPU был готов выполнять задачи, но был вынужден ждать, потому что гипервизор передал физическое ядро другой гостевой системе. Этот показатель отображается в столбце st команды vmstat 1. На общем оборудовании возможны кратковременные всплески steal time. Если при низкой собственной нагрузке показатель длительно держится на уровне двузначного числа, это обычно означает, что физический хост перегружен виртуальными машинами. Решение — другой хост или другой тариф, поскольку ничто внутри вашего сервера не управляет планировщиком хоста. Ограничения на использование CPU также снижают производительность, а восстановление выполняется по правилам провайдера, включая восстановление CPU credits, если это предусмотрено.

Можно ли запускать несколько сервисов на одном VPS?

Да. Для этого и нужен root: машина имеет универсальное назначение, а сервисы могут работать одновременно, если им хватает памяти и каждый из них слушает свой порт. Обычно первым ограничением становится память, а вторым — скорость диска. Почта — сложное исключение, поскольку доставка зависит от репутации вашего IP-адреса и SMTP-политики провайдера, а также от самого почтового сервера.

Была ли эта статья полезной?