2017年8月,我的chaindata目录的大小约为12 In。现在是11月份,我的chaindata目录现在是220 as -这与Ethereum越来越受欢迎的预期一致。
我使用以下命令行在Windows 10上运行我的geth节点:
geth.exe --syncmode fast --cache 1024 --datadir D:\Ethereum\GethBlockchain我一直在我的2TB磁盘驱动器上运行我的节点,但是在10月底左右,我的第一个节点根本无法跟上新的块:它接收到的块的处理速度比它们正在产生的速度要慢,我猜想它是我的互联网连接或其他什么东西。
但是,我在任务管理器中看到,我的2TB磁盘的随机IO的使用率是100%不变的。我把它换成了500 20的SSD (只有SATA3,而不是NVME/U.2/M.2),我的磁盘随机IO下降到了大约20%,而geth又能够足够快地处理块。看起来Ethereum (或至少geth)确实需要快速的随机IO SSD驱动器来处理新的块(为什么?默克尔的树不意味着没有必要去查询旧的街区吗?)
考虑到区块链正在以非常快的速度增长,可能在几个月内就会达到1TB (然后可能在2018年中期之前达到2TB及以后),这是一个问题,因为这已经达到了正常人负担得起的SSD的容量限制--那么您就开始需要由超级昂贵的高容量SSD或大型阵列(大概是连接/JBOD,不一定需要RAID )组成的特殊(读为:昂贵的)SSD的设备来存储区块链。我不喜欢每隔几个月花200美元购买500 of的SSD的想法--最终我会耗尽SATA端口。
如果这是真的,即使没有它的继续加速,Ethereum区块链最终也将不可能存储在一个在商品硬件上运行的完全节点上:取消它的民主化,并且只把它的控制放在那些能够负担得起运行一个完整节点所需的硬件的人手中。
我读到,geth和--syncmode fast将在初始同步期间修剪不必要的额外数据块链(例如,智能合同的中间结果),但是在同步完成之后,任何处理过的新块都会保留额外的数据,而且目前还不可能修剪这些新的块。
这已在GitHub的Geth/Mist回购中提出.,建议是删除整个区块链并运行另一个--sync fast,但我发现随着时间的推移,这变得越来越不可行。有人说,这种无法修剪/清理区块连锁店只是暂时的不便,所以我希望这意味着他们很快就会增加支持。
geth执行这么多随机IO?chaindata目录内容,以尽量减少磁盘的使用?发布于 2017-11-29 15:05:48
关于第三个问题,我不认为这种情况在很长一段时间内会发生。运行完整节点还有其他选项。我建议查看奇偶,使用带有"warp“功能的客户机运行一个完整的节点,只需20-30 GB。
关于原因的更多细节,我建议阅读这篇博文:
https://ethereum.stackexchange.com/questions/31658
复制相似问题