コンテンツへスキップ

Go Ethereum (geth)のプルーニング

gethのチェーンデータは1週間で14GBほど増えていきますが、殆どが不要なデータなので定期的にそぎ落とし(プルーニング)が必要です。プルーニング中はgethを使えなくなるため、予備のサーバーを設定することを推奨します。

  1. 実行中のgethを止める。
sudo systemctl stop geth
  1. sudo nano /etc/systemd/system/geth.serviceでgethのserviceファイルを開き、ExecStart=の箇所をプルーニング用に書き換える。既に書いているコードを消すのが面倒くさい場合は、#でコメントアウトできます。
ExecStart=/usr/local/bin/geth snapshot prune-state --datadir /var/lib/goethereum
  1. プルーニングを開始します。
sudo systemctl daemon-reload

sudo systemctl start geth

sudo journalctl -fu geth
  1. プルーニングが完了したら、gethは繰り返しプルーニングをしようとしますが失敗し続けます。
    gethを止め、serviceファイルのExecStart=を元に戻し、gethを再起動する。
sudo systemctl stop geth

sudo nano /etc/systemd/system/geth.service
sudo systemctl daemon-reload

sudo systemctl start geth
  1. gethが最新ブロックまで問題なく同期するか確認する。
    Imported potential new chain segmentage=が出なくなるまで)
sudo journalctl -fu geth