我有個 server 在運行 ETH2 client Lighthouse
, 現在硬碟容量快要不夠用了。雖然 Lighthouse 的開發者說會研究減省硬碟佔用量,但我覺得應該等不及。
我不打算增加硬碟容量,也不想搬位置,那就只能減少用量了。
之前的措施
不再運行 ETH1 client, 依賴了 Infura, Alchemy 和其他 providers (可以參考Ethereum Nodes 這網站) 的 eth1 endpoints,
即是 --eth1-endpoints
裡把 http://localhost:8545
放到最後或刪走。
現在的措施
依賴 Infura 的 ETH2 endpoint, 同時繼續運行 local beacon node, 但盡量省位置。
為什麼要繼續運行 local beacon node 呢,主要考慮都是 Infura 有時不穩定
https://status.infura.io/, 也因依賴它的服務太多,單點故障便導致廣泛問題。 若大量 ETH2 validators 因此離線,可能引致大問題的。
先查看剩下多少空間:
df -h
du -hd1 "${HOME}/.lighthouse/mainnet/"
du -hd1 "${HOME}/.lighthouse/mainnet/beacon/"
能減省的空間應該是freezer_db
, 即這裡:${HOME}/.lighthouse/mainnet/beacon/freezer_db
.
確保只運行 Infura ETH2 endpoint 沒有問題
之前有寫過如何為 Lighthouse 添加 Infura 為冗餘 beacon node, 其實也算是為這件事鋪路。
我是靠 systemd 去運行的,所以我是在在 /etc/systemd/system/validator.service
修改 command.
原本的 lighthouse vc
:
lighthouse vc <other_param> --beacon-nodes <https://<PROJECT_ID>:<PROJECT_SECRET>@eth2-beacon-mainnet.infura.io>,<http://localhost:5052>
刪走 local 的:
lighthouse vc <other_param> --beacon-nodes <https://<PROJECT_ID>:<PROJECT_SECRET>@eth2-beacon-mainnet.infura.io>
restart validator, 發現沒問題,成功。
減省用量
參考這裡:
https://lighthouse-book.sigmaprime.io/advanced_database.html
https://lighthouse-book.sigmaprime.io/checkpoint-sync.html
我是放在 /etc/systemd/system/beacon-chain.service
.
lighthouse bn
修改成:
lighthouse bn <other_param> --slots-per-restore-point 8192 --checkpoint-sync-url "<https://<PROJECT_ID>:<PROJECT_SECRET>@eth2-beacon-mainnet.infura.io>" --purge-db
restart beacon-chain, 不見有問題,成功。
待補齊 data 後,以後 restart 時應該可以刪走 --purge-db
.
查看目前硬碟空間:
df -h
du -hd1 "${HOME}/.lighthouse/mainnet/"
du -hd1 "${HOME}/.lighthouse/mainnet/beacon/"
之後把這裡 /etc/systemd/system/validator.service
改回去,把 local beacon node 用作備用,然後 restart。
INFO Connected to beacon node(s) synced: 2, available: 2, total: 2, service: notifier
看來沒有問題呢。當 local 的 beacon node 下載好 data 後,我會改次序,優先用它,Infura 只作備用。
因為刪了整個 DB, 所以一下子顯得多了很多空間,除了 Freezer DB 部份外應該都會漲回來的。Freezer DB 的增張速度則會減慢。
目前還是先觀望,之後若果依仍不夠空間,可能還是砍掉 local beacon node 吧。
如有任何建議/發現錯誤之處,還望賜教。