Что можно сделать на лету
- Ядра: добавляются на лету, при условии, что целевой размер помещается на текущем хосте. Обычно помещается.
- Память: добавляется на лету, при том же условии.
- Дополнительный 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 сообщает об этом, и ничего не меняется. Отсюда это превращается в переезд: тот же диск, другая машина, несколько минут простоя и изменение тарифа на другом конце. Эту часть делаем мы; вы получаете письмо с окном.