Сокращение базы данных для Ethereum Geth validator. Освобождение места на SSD.

Ethereum Geth validator Криптовалюта

Для POS-майнинга криптовалюты Ethereum используется специальное программное обеспечение под общим названием Validator. Валидатор, в свою очередь, состоит из двух компонентов: уровня исполнения и уровня консенсуса. Уровень консенсуса — это сам POS-майнинг, в то время как уровень исполнения — бывшая блокчейн-сеть POW Ethereum, которая работала с 2015 года до слияния в 2022 году. Все данные, накопленные за это время, были полностью перенесены в новую POS-сеть.

Поскольку существует несколько вариантов программного обеспечения для проверки подлинности, следующие соображения будут применимы к GETH клиенту, самому популярному из них.

Каждый уровень использует свою собственную базу данных, а для уровня выполнения эта база данных увеличивается на 14 ГБ каждую неделю. Общий размер базы данных уже составляет почти 2 ТБ. Для архивного валидатора (используемого для различных сервисов, таких как Etherscan и beacoincha.in) требования к дисковому пространству на SSD еще выше, превышая 14 ТБ при использовании GETH-клиента.

Чтобы уменьшить требования к размеру SSD для полного узла (стандартный валидатор), разработчики разработали процедуру сокращения базы данных до последних 128 блоков для каждой транзакции.

Теоретически, эта процедура позволяет использовать твердотельный накопитель емкостью 1 ТБ, но обрезку необходимо проводить каждый месяц. Поэтому рекомендуется приобрести твердотельный накопитель емкостью 2 ТБ для валидатора и выполнять сокращение базы данных раз в год. Эта процедура занимает около 6-7 часов, в течение которых ваш валидатор будет отключен и может понести штрафные санкции.

Уровень консенсуса также имеет свою собственную базу данных, но ее размер увеличивается не так быстро, как база данных уровня выполнения. Следовательно, основное внимание уделяется уменьшению размера базы данных для уровня выполнения.

Важно: начиная с версии 1.13.0, клиент GETH поддерживает новый тип базы данных под названием Pebble. Если вы уже перешли на Pebble или планируете установить ETH validator с новым типом базы данных, нет необходимости сокращать базу данных. Для всех других клиентов, которые обновились до версии 1.13.0 или выше, старая версия базы данных продолжает работать. Чтобы переключиться на новую базу данных, вам необходимо полностью удалить базу данных клиента Geth (используя команду geth removedb), установить флаг —db.engine pebble в настройках GETH и дождаться полной синхронизации узла в течение 15 дней, при условии, что у вас быстрый SSD, мощный современный процессор и быстрый интернет.

Теперь давайте перейдем к инструкциям о том, как выполнить эту очистку базы данных для клиента GETH.

Сокращение базы данных для GETH

Важно: вы можете сократить базу данных, только если на SSD есть не менее 40 ГБ свободного места. Если у вас меньше места на SSD, вы можете увеличить его, уменьшив файл подкачки или увеличив размер логического диска. В качестве альтернативы, временно переместите базу данных уровня консенсуса на другой диск или, в качестве последнего средства, выполните новую синхронизацию с нуля, но с базой данных Pebble.

Чтобы проверить свободное место на диске в Linux, используйте команду:

df -h

Еще один момент: ваш GETH-клиент должен быть полностью синхронизирован и работать не менее 35 минут после начала сбора необходимых данных.

Первый шаг — остановить процесс GETH:

sudo systemctl останавливает geth

Вы также можете остановить уровень консенсуса. Остановить команды для клиента PRYSM:

sudo systemctl останавливает prysmvalidator
sudo systemctl останавливает prysmbeacon

Подождите 3 минуты, прежде чем переходить к следующему шагу.

Перед дальнейшими действиями рекомендуется запустить терминальный мультиплексор, такой как TMUX, чтобы гарантировать, что процесс очистки не будет прерван, если вы потеряете доступ к удаленному серверному терминалу.

tmux

Это необходимо на случай, если вы потеряете доступ к удаленному терминалу. В этом случае процесс очистки базы данных не будет прерван вместе с вашей сессией.

Теперь вы можете начать уменьшать размер базы данных.

Команда для удаления базы данных:

сокращение состояния моментального снимка geth

Если вы установили валидатор, следуя инструкциям Somer Esat на Medium, то есть GETH запускается с systemd, команда будет другой:

sudo -u <пользователь> geth —datadir <путь> удаление состояния моментального снимка

Например: sudo -u geth geth —datadir /var / lib /geth удаление состояния моментального снимка

или sudo -u goeth geth —datadir / var / lib / goethereum удаление состояния моментального снимка

Выбор команды зависит от того, где на сервере хранится ваша база данных GETH. Вы можете найти путь к базе данных в файле geth.service:

sudo nano /etc/systemd/system/geth.service

Путь к базе данных указан под флагом —datadir.

Если все сделано правильно, начнется процесс сокращения базы данных, разделенный на 3 этапа:

Первый этап — создание фильтра Bloom, который занял чуть более 2 часов на моем компьютере.

истекло: сколько времени прошло

eta: расчетное время до окончания процесса

Начнется фактическая очистка базы данных, которая займет еще около 4 часов.

После очистки база данных будет уплотнена, что указано в консоли как «Сжатие базы данных». Этот процесс может занять около дополнительного часа.

После успешного завершения задачи по сокращению базы данных Ethereum validator появится сообщение «Сокращение состояния выполнено успешно«.

Отключите TMUX:

tmux kill-сервер

Далее запустите GETH-клиент и валидатор, если он также был выключен:

sudo systemctl запускает geth

sudo systemctl запускает prysmbeacon

sudo systemctl запускает prysmvalidator

Ошибка: «Снимок недостаточно старый: требуется еще 128 блоков»

Эта ошибка возникает, если ваш валидатор работал недостаточно долго, прежде чем принять решение об уменьшении базы данных. Рекомендуется, чтобы GETH работал не менее 35 минут перед сокращением.

Также эта ошибка возникает, если вы выбрали неправильную команду для очистки базы данных клиента GETH. Укажите правильный путь или используйте другой формат команды.

Еще один способ начать сокращение базы данных GETH Ethereum

Отредактируйте существующий файл geth.service:

sudo nano /etc/systemd/system/geth.service

Добавьте следующую строку в конец ExecStart:

сокращение состояния моментального снимка

Все остальные параметры должны остаться неизменными.


Перезагрузите systemd:

демон sudo systemctl-перезагрузка

Запустите службу GETH:

sudo systemctl запускает geth

Вы можете отслеживать ход очистки базы данных с помощью команды:

journalctl -fu geth

После завершения очистки базы данных GETH удалите строку snapshot prune-state из файла geth.service:

sudo nano /etc/systemd/system/geth.service

Перезагрузите systemd:

демон sudo systemctl-перезагрузка

Запустите службу GETH:

sudo systemctl запускает geth

Весь процесс сокращения базы данных клиента GETH занял около 7 часов на сервере с процессором Ryzen 1700X, 32 ГБ оперативной памяти и твердотельным накопителем ADATA XPG GAMMIX S11 Pro объемом 2 ТБ.

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

Вывод: сокращение базы данных ETH-валидатора, работающего на GETH-клиенте, является очень полезной функцией, поскольку позволяет использовать гораздо меньший SSD, чем фактически требовалось бы. Это также устраняет проблемы, если вашего SSD объемом 2 ТБ уже недостаточно для поддержки Ethereum validator. Всего за несколько часов вы можете уменьшить базу данных и избежать необходимости полной синхронизации GETH в течение 2 недель для перехода на Pebble, где сокращение базы данных происходит автоматически.

Если вы решите не переходить на Pebble, не забывайте периодически выполнять команду snapshot prune-state, пока на вашем SSD еще есть 40 ГБ свободного места.

Оцените статью
( 1 оценка, среднее 5 из 5 )
Coinrial
Добавить комментарий