November 18, 2021

Реинкарнация Solana ноды

Let's Node!

⠀Тестовая сеть легла, надо реинкарнировать ноду.


Содержание


Реинкарнация

К содержанию

Актуально на 10.08.22

Мы публикуем обновлённую версию только после тестов на нескольких серверах, поэтому она может выйти не сразу.

Подготовка

⠀Остановить ноду

sudo systemctl stop solana

⠀Добавить в систему переменную

slot=199641374

⠀Запустить проверку последнего подтвержденного слота

if [ `solana-ledger-tool --ledger $HOME/solana/ledger/ latest-optimistic-slots 2>&1 | grep -A1 Slot | tail -1 | awk '{print $1}'` -ge "$slot" ]; then echo -e "\033[1;32mGood\033[0m"; else echo -e "\033[0;31mBad\033[0m"; fi

Всё хорошо

⠀Создать снепшот:

  • Если нет RAM-диска или при возникновении вопроса «Что это?»
solana-ledger-tool --ledger $HOME/solana/ledger \
  create-snapshot $slot $HOME/solana/ledger \
  --hard-fork $slot
  • Если есть RAM-диск
solana-ledger-tool --ledger $HOME/solana/ledger \
  create-snapshot $slot $HOME/solana/ledger \
  --hard-fork $slot \
  --accounts /mnt/ramdisk/accounts

⠀При возникновении ошибки Error: Slot 199641374 is not available перейти к пункту «Всё плохо»

⠀Через некоторое время работа завершится и появится надпись Shred version: 28353

⠀Вывести список всех снепшотов

find $HOME/solana/ledger/ -name snapshot-*

⠀В списке должен быть снепшот с названием

snapshot-199641374-njbdgtFvyDqiaCXRsgddu3J5uEtG6zPH81cmArcQSxS.tar.zst

⠀Удалить все снепшоты, где блок больше 199641374, где меньше удалять не надо.

⠀Обновить ноду до версии 1.14.18

solana-install init v1.14.18

⠀Сделать резервную копию штатного сервисного файла

cp $HOME/solana/solana.service $HOME/solana/solana.service.bak

⠀Открыть сервисный файл, изменить дубликаты опций ниже на обновлённые опции ниже и удалить опцию --expected-genesis-hash

--no-snapshot-fetch \
--no-genesis-fetch \
--wait-for-supermajority 199641374
--expected-shred-version 28353
--expected-bank-hash 7qKeiLLRxvxkD2hZx1Ai1RABKMg7x2n4GVJFcrEh3js2
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on

⠀Проверить, чтобы опции не повторялись и сохранить сервисный файл.

⠀Перезапустить ноду

sudo systemctl daemon-reload
sudo systemctl enable solana
sudo systemctl restart solana

⠀Перейти к пункту «Проверка»

Всё плохо

⠀Обновить ноду до версии 1.14.18

solana-install init v1.14.18

⠀Удалить БД и снепшоты

rm -rf $HOME/solana/ledger/rocksdb $HOME/solana/ledger/incremental-* $HOME/solana/ledger/snapshot-*

⠀Сделать резервную копию штатного сервисного файла

cp $HOME/solana/solana.service $HOME/solana/solana.service.bak

⠀Открыть сервисный файл, изменить дубликаты опций ниже на обновлённые опции ниже и удалить опции --no-snapshot-fetch и --expected-genesis-hash

--wait-for-supermajority 199641374
--expected-shred-version 28353
--expected-bank-hash 7qKeiLLRxvxkD2hZx1Ai1RABKMg7x2n4GVJFcrEh3js2
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on

⠀Проверить, чтобы опции не повторялись и сохранить сервисный файл.

⠀Перезапустить ноду

sudo systemctl daemon-reload
sudo systemctl enable solana
sudo systemctl restart solana

Проверка

⠀Подождать 5-20 минут.

⠀Проверить, есть ли вывод после выполнения команды

tail -n 10000 $HOME/solana/solana.log | grep "Waiting for"

⠀Проверить текущий слот, должно вывести 199641374

solana -ul slot

⠀Сеть будет запущена, когда значение активного стейка будет выше 80%

tail -fn 10000 $HOME/solana/solana.log | grep "active stake visible"

После запуска сети

⠀Заменить сервисный файл на штатный

mv $HOME/solana/solana.service.bak $HOME/solana/solana.service

⠀Обновить список сервисных файлов

sudo systemctl daemon-reload

Полезные ссылки

К содержанию

Официальный гайд | Официальный сайт проекта

Тех. русскоязычная группа Telegram (по запросу)

Тех. группа для новичков | Discord


Благодарности

К содержанию

Команда Let’s Node! — написание статьи

Выразить благодарность