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のノード運用について、不明点があれば引き続き共有します。
より良い方法があれば、情報共有していただけますと幸いです。
読んでくださりありがとうございました。