gethのチェーンデータは1週間で14GBほど増えていきますが、殆どが不要なデータなので定期的にそぎ落とし(プルーニング)が必要です。プルーニング中はgethを使えなくなるため、予備のサーバーを設定することを推奨します。
- 実行中のgethを止める。
sudo systemctl stop geth
sudo nano /etc/systemd/system/geth.service
でgethのserviceファイルを開き、ExecStart=
の箇所をプルーニング用に書き換える。既に書いているコードを消すのが面倒くさい場合は、#
でコメントアウトできます。
ExecStart=/usr/local/bin/geth snapshot prune-state --datadir /var/lib/goethereum
- プルーニングを開始します。
sudo systemctl daemon-reload
sudo systemctl start geth
sudo journalctl -fu geth
- プルーニングが完了したら、gethは繰り返しプルーニングをしようとしますが失敗し続けます。
gethを止め、serviceファイルのExecStart=
を元に戻し、gethを再起動する。
sudo systemctl stop geth
sudo nano /etc/systemd/system/geth.service
sudo systemctl daemon-reload
sudo systemctl start geth
- gethが最新ブロックまで問題なく同期するか確認する。
(Imported potential new chain segment
でage=
が出なくなるまで)
sudo journalctl -fu geth