我有部 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 有時會不穩定
且因過度依賴其服務,單點故障便導致廣泛問題。若大量 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
:
|
|
刪除本地的:
|
|
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
修改為:
|
|
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。
|
|
看來沒有問題呢。當 local 的 beacon node 下載好 data 後,我會改次序,優先用它,Infura 只作備用。
由於我刪除了整個 DB,所以一下子就釋放出了很多空間,除了 Freezer DB 部分外,其他部分應該都會恢復。而 Freezer DB 的增長速度則會減慢。
目前我還在觀察,如果以後仍然空間不足,可能還是砍掉 local beacon node 吧。
如果有任何建議或發現錯誤的地方,還望賜教。