ETH2 Lighthouse 硬碟空間不足筆記

記錄 ETH2 Lighthouse 佔用太多硬碟空間,以致空間不足,去嘗試解決的筆記。

我有部 server 在運行 ETH2 client Lighthouse。然而,硬碟的容量即將耗盡。儘管 Lighthouse 的開發者表示他們會研究如何減少硬碟的使用量,但我認為這可能來不及。

我並不打算增加硬碟的容量,也不打算搬位置,所以我唯一的選擇就是減少使用量。


過去的對策

我停止運行 ETH1 客戶端,轉而依賴 Infura、Alchemy 和其他供應商(可參考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 中修改了命令。

原來的 lighthouse vc

1
lighthouse vc <other_param> --beacon-nodes https://<PROJECT_ID>:<PROJECT_SECRET>@eth2-beacon-mainnet.infura.io,http://localhost:5052

刪除本地的:

1
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 修改為:

1
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, 沒發現問題,成功。

等待數據補齊後,以後 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。

1
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 吧。

如果有任何建議或發現錯誤的地方,還望賜教。

comments powered by Disqus