技術 ブログ

Baseノードのプルーニング方法



はじめに


Baseノードを立ち上げているとブロックチェーンの状態データが日々増えていってしまいます。

しかし、プルーニング (pruning) を行うことで、過去の不要な状態データを削除することが可能です。

やり方は、Gethと同じなのですがDocker環境で起動しているためDockerのコンテナ操作を使ったコマンドが必要になります。

以下、比較的安全にプルーニングする方法が判明しましたので共有いたします。


Baseのop-gethのプルーニング方法

注意:公式な手順は公開されていないため、実行は自己責任でお願いいたします。自分のノードでは成功後しばらく動作していましたが、誤動作が発生しデータが同期できなくなりました。


1. op-geth と op-node のコンテナの停止


gitリポジトリnodeに移動してコンテナを止めます。

$ cd node
$ docker-compose stop



2. op-geth と op-node のコンテナが適切に停止したことを確認

コンテナが止まっていることを確認します。状況によっては停止に数分時間がかかります。

$ docker-compose ps -a



3. op-gethの状態のプルーンを実施

プルーニング処理は、時間がかかるためコンテナをデタッチ(※ detach= -d)して実行します。コンテナのIDが標準出力に出力されます。

※コンソールの接続が切れても実行されるようにするためです。

$ docker-compose run -d geth /app/geth snapshot prune-state --datadir=/data
[container id]




4. プルーンの正常終了を確認

「3.」で出力された [container id] から、実行ログを確認します。

注意:プルーンニングされるデータ量が多いと、数時間を要します。終わるまで辛抱強く待つ必要があります。強制停止によってデータが破壊されないように気を付けてください。

$ docker logs -f --tail 100 [container id]



5. op-gethとop-nodeコンテナの起動

「4.」で正常終了が確認できたら、立ち上げることができます。

注意:プルーニングが終了するまえに立ち上げると状態データが壊れる可能性があります。必ずプルーニングが終了してから立ち上げて下さい。

$ docker-compose start



まとめ


プルーニング方法は、以上です。

Baseのノード運用について、不明点があれば引き続き共有します。

より良い方法があれば、情報共有していただけますと幸いです。

読んでくださりありがとうございました。

コメント投稿フォーム

メールアドレスが公開されることはありません。 が付いている欄は必須項目です