自己搭建了一个主网节点,同步始终落后 120 - 60个区块之间,整整一周都这样,网上各种查找方案,最后确定问题在磁盘上
主要问题:机械硬盘随机读取性能太低,SSD 足够,但是现在SSD比M2只便宜一点点,性价比太低,直接上M2
!!!别不信邪,真就是硬盘问题,我刚开始的时候以为用机械硬盘然后对geth调参就可以解决,最后发现不行,读写速度跟不上
遂增加了一块 1TB.M2 硬盘作为 Datadir 存储盘,Freezer 数据放到机械盘
注:以太坊每 3 个纪元固化一次数据到 Freezer ,也就是 3 * 30000 区块
截至到目前 2022年6月23日 ,区块高度 15008654
同步模式 snap
DataDir 占用 216.65 GB
Freezer 占用 334.19
换盘后差不多12个小时 14000000 区块就同步完成
geth 配置命令行如下,datadir.ancient 为 Freezer 目录(HDD),datadir 为数据库目录(M2)
--datadir "/nvme/ethereum/main" --datadir.ancient "/data/ethereum/main"
在 geth 同步过程中,状态数据的处理阶段(尤其是状态树的构建、更新和验证) 是最依赖固态硬盘(SSD)性能的关键步骤。这一步也是机械硬盘(HDD)最容易 “掉链子” 的环节。
区块链同步不仅需要下载区块(包含交易记录),更核心的是维护全网账户状态(比如每个地址的余额、智能合约的存储数据等)。这些状态数据通过一种特殊的数据结构 ——Merkle Patricia Tree(默克尔帕特里夏树) 组织和存储,其特性直接导致了对存储设备的极端 IO 需求
博主遇到以太坊主网节点同步慢的问题,归因于机械硬盘的随机读取性能不足。通过更换1TB M2硬盘作为Datadir,并将Freezer数据存至机械盘,成功解决了同步问题。在12小时内完成了14000000区块的同步,显著提升了效率。
1262

被折叠的 条评论
为什么被折叠?



