搭建大规模Filecoin挖矿集群的方法
人生的路,自己去书写,你不能左右天气,但可以改变心情。学会适应,让你的环境变得明亮;学会调节,让你的心情不再忧伤;学会宽容,让你的生活充满阳光。
摘要
曾经在电影《蜘蛛侠》中看到过一句话“With great power comes great reponsibility”。之前这句话都翻译为“能力越大,责任越大”,但在区块链挖矿行业中它应该是“算力越大,责任越大”。
本文讲述了如何基于石榴的挖矿软件,包括社区版和收费版,来搭建大规模Filecoin挖矿集群的方法。
读者应该可以根据文中的内容,顺利完成集群的所有前期准备工作。我们以此文作为对于社区的回馈,也作为对区块链公开透明精神的致敬。
背景
之前关于搭建Filecoin挖矿集群的教程都来自于陆续的视频分享。在此,我们将所有过去的这些分享总结成这偏文章,帮助后续的矿工能在最短的时间内了解Filecoin的挖矿部署流程。并且,会附加一些设计原理的解释,让矿工不仅能知道需要怎么做,还能知道为什么要这么做。
Filecoin因为挖矿算法复杂、运维难度极大,一直成为阻碍传统矿工进入的门槛。但自从我们进入这个领域以来,始终在致力于帮助矿工理解其原理并且搭建属于自己的矿机。目前,仅使用社区版软件(https://github.com/shannon-6block/lotus-miner)的矿工就已经达到了20+,其中最高的拥有着PB级别的算力。他们从未在我们这里充值过任何信仰,也能在Filecoin挖矿上获得巨大的收益。
矿机
Filecoin的矿机分为三种,Worker、Miner和Storage。以下将分别介绍。
Worker
Worker的主要工作是封装扇区,因此需要选取高性能的AMD处理器,因为其包含SHA extension,能高效地完成PreCommit1的计算。目前我们评测性价比最高的是3960x。但是由于3960x是家用机型,而很多客户更愿意采购服务器机型,所以7F52、7F72、7542等高主频的服务器CPU则成为了更多的选择。
基于AMD 7系的CPU,最佳的搭配是1TB内存、16TB SSD、双2080Ti的显卡。其中16TB SSD是由多张SSD组成的Raid 0,最好采用NVMe接口的SSD。显卡可以换成3080、3090,其中单3080性能是低于双2080Ti,双3080又超过了。关于后续显卡的选型我们会继续评测。
Miner
Miner的主要工作是爆块(WinningPoSt)和抽查(WindowPoSt),因此也需要性能较好的机器。我们建议直接选用和Worker相同的机器即可,但是一定要装两张显卡。因为我们通过软件的优化,可以将一张显卡专门用于爆块,另一张专门用于抽查。两张显卡各司其职,不会发生占用冲突。
我们目前使用单2080Ti能够在5分钟内完成1个WindowPoSt证明,即在要求的30分钟内可以完成6个证明。这意味着,单台Miner机器就足以支撑32*2349*6*48=21648384GiB≈21PiB的算力的抽查工作。当未来矿工的算力超过21PiB后,可以再考虑升级Miner配置(比如显卡升级到3090或是升级到3张显卡)或是通过单独的机器来计算WindowPoSt来解决,是非常轻松随意的。现阶段增加配置只是徒增成本而已,完全没有必要。
Storage
Storage的作用是存储封装好的扇区。因此,需要保证Storage机器有较高的品质,硬盘、主板、电源、网卡都要采用较好的配置,否则因为硬件故障导致扇区失联被惩罚得不偿失。这里建议大家选用品牌机或是成熟的解决方案,尽量不要为了节省成本而降低配置或是自己DIY。
关于存储软件的选择,目前市场上还没有形成共识。我们自己最初尝试过Ceph,发现维护成本极高,且得盘率极低。尝试过RAID,听闻有因为同时损坏两张盘而导致整台机器的存储全部丢失的案例,而且得盘率也并不高。最终我们大部分集群选择直接就用硬盘存数据,这样可以达到接近100%的得盘率。虽然不能抵御硬盘损坏,但是通过存储和计算的分离、严格把控存储硬件的质量和及时地重新生成或是终止错误的扇区,最终性价比远高于其他方案。市面上宣扬的多备份或冗余方案,大多数是因为存储硬件质量不过关或设计不合理而迫不得已。
组网
组网的原则是:
Worker往Storage传输扇区的流量,不能影响Miner和Worker之间请求的流量;
集群内部的流量,不能影响集群访问外网的流量。
因此,最终我们将集群的组网设计为如下:
江湖有传言:石榴只能做小集群。这纯属无稽之谈。从组网的图中可以看到,这样的一个集群是可以自由扩容的,想放多少机器在里面都可以。只不过机器多了之后,核心交换机的型号要再升级一下(例如100G的交换机),或是采用多台交换机进行堆叠;或是在一个交换机下混合地部署Worker和Storage,并修改调度让Worker优先给就近的Storage传输扇区,从而避免流量经过核心交换机。
技术上完全支持把集群做大。但是我们并未采用大集群的原因是,大集群的硬件成本、运维难度和故障风险会呈指数级上升,如非为了营销则完全没有必要。而且,大多数客户也要求将自己的机器放在独立的集群中,不希望和别人的机器掺和在一起。还有,Filecoin集群下资产是具有多样性的,包括机器、有效算力、前置抵押币、区块奖励未释放的币等,都是资产的组成,独立算账会更加清晰透明。特别是客户在当前gas费高昂的情况下,有助于客户自由灵活地暂停或开始封装算力。当然,如果有大客户一定想要大集群的话,只要多付?来覆盖额外的交换机和运维成本即可。
软件
众所周知,软件是我们的核心竞争力。对于Filecoin的官方代码,我们主要进行了以下的优化。
封装速度:官方的封装代码仅仅是做到了能用,但远远未达到高效的程度。我们通过对底层算法的优化和重构,使得封装效率成倍地提升。如果购买收费版软件,会先提供性能测试程序在客户的机器上进行实验,封装速度可以一目了然;
任务调度:官方的封装任务调度模块,充满了各种各样的问题。其中有一点原因是,官方并没有一个上规模的集群用于调试。而我们的挖矿软件在发布前,都会使用我们自己的集群进行开发和测试,所以可以做到合理地调度任务,充分地利用机器资源;
爆块率:众所周知,算力再高,不爆块也是白瞎。爆块率的提升需要多个角度进行优化,才能达到90%以上甚至100%的幸运值。
还有其他一些比如稳定性,gas费用的优化,在此就不过多描述。核心技术还是要有所保密的。