База знаний

Обновление тарифа с минимальным простоем

Ядра, память и диск можно увеличивать на работающем инстансе; смена семейства — нет. Что должна сделать гостевая система, чтобы заметить новое оборудование.

Что можно сделать на лету

  • Ядра: добавляются на лету, при условии, что целевой размер помещается на текущем хосте. Обычно помещается.
  • Память: добавляется на лету, при том же условии.
  • Дополнительный NVMe: добавляется на лету, всегда.
  • Корневой диск: увеличивается на лету, с расширением файловой системы под вами.

Чего нельзя: уменьшить что-либо и перейти между семействами. Ryzen и EPYC — это разные машины, поэтому это переезд, а не апгрейд — та же процедура, что и смена сайта, минус смена города.

Как это сделать

curl -s -X POST https://paragonvps.com/api/v1/instances/<instance-id>/resize -H "Authorization: Bearer $Paragon_TOKEN" -H "Content-Type: application/json" -d '{"plan":"r-12","mode":"hot"}'

"mode":"hot" отказывает в изменении, а не перезагружается, когда это нельзя сделать на лету. Используйте это. Разрешающий по умолчанию режим — вот почему инстансы перезапускаются в одиннадцать вечера в пятницу.

Как дать гостевой системе заметить

Новые ядра на некоторых ядрах появляются в офлайне:

lscpu | head
grep . /sys/devices/system/cpu/cpu*/online
echo 1 > /sys/devices/system/cpu/cpu8/online

Сделайте это автоматическим, чтобы следующий апгрейд ничего от вас не требовал:

cat > /etc/udev/rules.d/80-cpu-hotplug.rules <<EOF
SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1"
EOF
udevadm control --reload

Блоки памяти рассказывают ту же историю:

free -h
echo online > /sys/devices/system/memory/auto_online_blocks

Эта настройка не переживает перезагрузку. Добавьте memhp_default_state=online в параметры ядра, чтобы сохранить её.

Увеличение корневой файловой системы

Блочное устройство становится больше. Раздел и файловая система не следуют за ним сами по себе:

lsblk
growpart /dev/vda 1
resize2fs /dev/vda1

На XFS последний шаг — xfs_growfs /. Оба образа уже содержат growpart. Разрыв между увеличением раздела и изменением размера файловой системы — это та самая секунда, когда отключение питания было бы некстати.

Приложения тоже не замечают

Большинство демонов читают количество ядер один раз, при запуске. Веб-сервер, выбравший четыре воркера на четырехъядерном инстансе, так и работает с четырьмя воркерами на вашем новом двенадцатиядерном. Перезапустите службы или задайте количество воркеров явно, а не оставляйте их на auto:

nproc
systemctl restart nginx

Всё, что держит пул памяти, требует того же внимания. Удвоение ОЗУ ничего не даёт базе данных, которой по-прежнему сказано использовать четыре гигабайта буфера.

Сколько это стоит

Пропорционально до секунды. Разница между старым и новым тарифом за остаток цикла списывается с баланса аккаунта, если он есть, и выставляется счётом, если нет. При понижении тарифа кредит идёт на баланс, а не выплачивается на кошелёк, потому что возврат небольшой суммы монет обойдётся дороже в сетевых комиссиях, чем сам кредит.

Дата продления не меняется. Апгрейд двадцатого числа продлевается двадцатого, как и раньше. Актуальные тарифы — на странице цен.

Когда это не работает

Если хост не может принять новый размер, API сообщает об этом, и ничего не меняется. Отсюда это превращается в переезд: тот же диск, другая машина, несколько минут простоя и изменение тарифа на другом конце. Эту часть делаем мы; вы получаете письмо с окном.

Готовы, когда вы готовы

Выберите город. Выберите размер. Оплатите монетой.

Никаких форм о том, кто вы, никакого ожидания одобрения человеком, никаких звонков для проверки. Счёт оплачен — и учётные данные приходят на почту.