Очистка базы Ethereum

Автор: | 27 сентября 2024

На самом деле это будет некий воль­ный пере­вод из доку­мен­та­ции, кото­рую мож­но про­честь тут, с неболь­ши­ми добав­ка­ми от себя.

Итак, нода эфи­ра рабо­та­ла с момен­та запи­си о ее уста­нов­ке и запус­ке (это было тут), то есть почти 2 года. За это вре­мя ни разу ее не обслу­жи­вал, толь­ко обнов­ле­ния и все. На сер­ве­ре было почти 3.5 Тб и они почти закон­чи­лись. Поэто­му реше­но было про­ве­сти очист­ку. Кста­ти, база дан­ных кли­ен­та кон­сен­су­са — prysm к это­му момен­ту достиг­ла уже 699 Гб. И это все одним фай­лом beaconchain.db. Как сжать этот файл я пока не нашел.

Что бы очи­стить ноду от ненуж­но­го мусо­ра — она долж­на быть пол­но­стью син­хро­ни­зи­ро­ва­на, geth дол­жен быть стар­ше чем вер­сия 1.10.3, нода долж­на была закон­чить созда­ние снэп­шо­та (в логах не долж­но быть строк типа “state snapshot generation”) и на дис­ке долж­но быть не менее 40 Гб сво­бод­но­го места. Но в реаль­но­сти у меня при очист­ке потре­бо­ва­лось око­ло 80 Гб (навер­ное пото­му что ред­ко чистил).

Очист­ка идет в три эта­па:

  1. При­ве­де­ние ноды к послед­не­му снэп­шо­ту
  2. Очист­ка дан­ных из базы
  3. Сжа­тие базы дан­ных

Пер­вые два шага пери­о­ди­че­ски выво­дят инфор­ма­цию о рабо­те в кон­соль, а вот тре­тий шаг может доста­точ­но дол­го “мол­чать” в кон­со­ли, так что сто­ит про­сто ждать. В кон­це кон­цов появит­ся над­пись “State pruning successful” и мож­но будет про­ве­рить сколь­ко места осво­бо­ди­лось.

Теперь коман­ды чист­ки. Пер­вым делом оста­нав­ли­ва­ем ноду (я оста­но­вил и кон­сен­сус, что бы он не ругал­ся в логах)

systemctl stop geth.service prysmbeacon.service

Теперь откро­ем новый сеанс через tmux (он поз­во­ля­ет выпол­нять зада­чи в фоне, даже если вы отклю­чи­тесь от сер­ве­ра)

tmux new -s geth

И теперь запус­ка­ем очист­ку

sudo -u geth geth --datadir /home/geth/.ethereum snapshot prune-state

То есть запуск про­цес­са geth от име­ни поль­зо­ва­те­ля geth с ука­за­ни­ем пап­ки, где хра­нят­ся дан­ные ноды. Все, теперь ждем и наблю­да­ем. Выгля­деть будет при­мер­но так.

То есть очист­ка 1.36 Тб мусор­ных дан­ных из базы ноды у меня заня­ло чуть боль­ше 15 часов. После это­го запус­ка­ем ноду и кон­сен­сус и дого­ня­ем сеть.

systemctl start geth.service prysmbeacon.service

Вот как-то так. Всем добра.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*