Filecoin的存储单元称为扇区。对传统硬盘结构理解的小伙伴,对这个术语应该比较亲切,传统硬盘的最小存储单元就叫Sector。为了证明Sector的存储,Filecoin进行了一系列的处理,传说中的P1/P2/C1/C2。在处理过程中,一个Sector的计算会生成若干文件,最终会生成replica。相关文件是如何组织的?Cache都是由哪些文件组成,分别是多大?本文就从存储的角度看看这些过程和逻辑。
Filecoin的存储管理的逻辑主要实现在sector-storage项目中。在深入理解Sector存储逻辑之前,先讲讲Worker和Manager。
01?相关术语
Worker-处理P1/P2/C1/C2的服务,Worker又分为两种:localworker和remoteworker。localworker处理本地服务处理,remoteworker支持远程服务处理
HECO借贷平台FilDA价格突破1.75美元,再创历史新高:2月11日12点45分,HECO 借贷平台治理代币 FilDA价格在MDEX上超过1.75美元,突破历史新高,三日最低点累积增幅高达450%,流动性深度高达1720万美金,亦突破历史新高。目前 FilDA 流通市值和流动性深度在HECO借贷项目中均排名第一。
据了解,FilDA作为首个基于Heco的跨链借贷DeFi项目,于2021年1月5日晚20:00开启创世挖矿Fair Launch,首发HUSD、HBTC、HT、ELA-HECO、USDT-HECO、HDOT、HLTC、HBCH、ETH、HPT、HBSV、HXTZ等17种资产的借贷功能,同时也是Heco首个公开平台各项APY数据,存借双向实时透明数据的借贷项目。
FilDA项目无募资,无预挖,致力成为Heco首选的用户友好型的DeFi借贷平台。[2021/2/11 19:31:22]
Manager-管理多个Worker
Filecash社区协调员Marco:Filecoin矿工争抢有限的TPS会造成网络恶性循环:11月17日下午2时,Filecash Community Coordinator Marco参加POW POWER系列活动之《Filecoin分叉进行曲》。面对POW POWER运营总监Kaysen提出关于Filecoin Gas费消耗呈暴涨式增加迫使很多矿机停止运行的现象,Marco认为这一现象产生的原因就是Filecoin的TPS不足。Filecoin的GAS费采用了EIP1559。在TPS吃紧的时候GAS费骤涨,而EIP1559本身会对手续费进行预测,为了让一些不重要的消息滞后上传,设计了这种机制。但Filecoin的每一条消息都很重要,为了上传每一条重要的消息可能要付出骤然飙升的手续费,因为大小矿工们竞相抢夺有限的TPS来证明自己,抢不到就掉算力,一旦掉算力就倒扣很多抵押币。这样小矿工们就根本无法承受这种成本,也导致大矿工的自私挖矿,最后形成恶性循环导致很多小矿工们湮灭掉。[2020/11/17 21:03:53]
Scheduler-调度器,调度多个Worker,一个Manager通常有一个Scheduler
人人矿场在Space race 1阶段中单T有效存储产量位居第一,高达11.53FIL每TB:北京时间9月15日06:00,Filecoin有奖测试竞赛Space Race圆满结束,此次竞赛共解锁275万枚FIL。RRMine/人人矿场在此次竞赛中获得了颇为亮眼的成绩,单T有效存储产量为11.53FIL,RRM云算力产币量计算公式如下:用户每T分币量 = 每T有效存储使用率*当前FIL产量/T有效存储。
按该次竞赛有效存储使用率与单T FIL产量来估算,当有效存储使用率100%时,RRM用户每万元投入累计理论产量将超过75个FIL。详细成绩如下:
有奖测试期总封存:9308T;
有奖测试期总产出:107317FIL(最终结果以Filecoin官方为准);
有奖测试期RRMine/人人矿场每T有效封存产量;11.53FIL;
存储使用率100%时,客户每万元算力投入产币量大于75FIL。[2020/9/19]
Store-Sector存储系统
Filecoin校准网络将于北京时间8月14日晚进行重置:8月13日中午,Filecoin项目开发人员在Slack频道发布最新消息,要点如下:
1.Filecoin链上吞吐量的改善比预期快,官方还发现并修复了一些检索错误,增加了配置交易和消息选择方法,并更新到v28证明参数文件;
2.Filecoin校准网络将于北京时间8月14日晚11点至8月15日凌晨1点进行重置。[2020/8/13]
02?Sector存储
Sector处理相关的文件存储在Store中。Store通过sectorstore.json进行配置:
CanSeal表明Store可以用来Seal,CanStore表面Store可以持久存储Seal的结果(replica)。Weight是权重,在多个Store选择时使用。ID是Store的UUID编号。
TOP Network联合创始人Noah:供需关系和对Filecoin生态的想象力将决定FIL的价格:IPFS100.com现场报道,8月3日,由IPFS100.com主办,CapitalN节点咨询承办,金色算力云联合主办,深圳市先河系统技术有限公司金牌赞助,逆熵科技银牌赞助,金色财经作为联合主办媒体的星际漫游指南·逐鹿中原·IPFS技术与应用研讨论坛在郑州举行。
在主题为《纯粹的技术信仰与炽热的代币激励》的圆桌环节,TOP Network联合创始人Noah Wang表示,FIL的价格取决于两点,供需关系和对FIL生态的想象力,大家对Filecoin的预期有多少想象空间,以及有多少真正的供需和实体的支撑,将决定Filecoin代币的价格。
对于IPFS的爆发,这可能取决于实际应用最终的落地以及数据的应用,无论是传输还是存储,无论是C端还是B端,如果它能实现快捷安全的体验,就有可能会快速爆发。[2020/8/3]
一个Store中存在三种存储,分别对应三种目录:unsealed(未封存的文件),cache,sealed。
03?Worker&Store
sector-storage项目的README中的这张图很好的解释了sectorstorage的各个模块以及相互的关系:
整幅图分为上下两个部分:上部分是Manager,下部分是RemoteWorker。Manager中包括一个LocalWorker。stores.Index是所有Sector存储的索引。Scheduler,上部分的中间,管理所有的Worker,并且调度Sector相关的存储。
workermanagementAPIs通过/rpc/v0的jsonRPC接口实现remoteworker的管理。通过/remote的HTTPAPI实现存储的Fetch操作,简单的说,传输文件。specs-storage.Prover/Sealer/Storage是Manager暴露出来的接口,实现Sector的证明,封存和存储。
每个连接到Manager的Worker会和Manager同步它的内存/CPU以及显存的信息。Scheduler在接受到新的请求时,会针对请求(Task)的类型以及资源的需求,从当前Worker中挑选最合适的Worker进行请求的处理。如何选择Worker,感兴趣的小伙伴,可以查看selector的相关逻辑。
从存储的角度,重新整理一下,这些关系:
以一个Manager连接两个Worker为例。Worker只能Seal,但是不能Store。为了更清楚展示Worker之间的数据传输,第一个Worker只做Precommit1,第二个Worker做Precommit2和Commit。
04?SealTask
理解SealTask,最好对照了Sector的状态管理一起看。对Sector状态管理还不熟悉的小伙伴,可以查看之前的文章:
Filecoin-Sector状态管理逻辑
接下来,看看每个SealTask对应的存储数据的变化。
AddPiece
如果其中左边的Worker接收到任务,AddPiece任务会在unsealed目录中创建原始数据。
PreCommit1
PreCommit1阶段,简称P1,针对SDR算法,计算若干层数据。如果Sector是32G,需要计算11层。对SDR算法不熟悉的小伙伴,可以看看之前的文章:
经过PreCommit1,生成的数据存储在Cache中:
PreCommit2
PreCommit2的阶段,简称P2,生成Replica,计算ColumnHash,并生成Merkle树(tree_d,tree_c,tree_r_last)。因为P2,不在同一个Worker处理,在进行处理之前,需要先传输给合适的Worker,处理的结果同样存储在Cache中:
Commit和Finalize
在Commit生成证明后,进入Finalize状态,Finalize可以理解成“归档”。因为在Worker上没有Store能力,删除不需要持久化的数据,需要持久化存储的数据,将传输回Manager。
05?数据存储量
以32G的Sector为例,在处理过程中需要存储的数据如下:
原始数据-32G
原始数据Merkle-32G
P1layer-32*11G
P2-ColumnHash?&tree_c-32*2G
P2-Replica&tree_r_last-32G9.2M*8
总共:512G多一点。
06?持久化数据
Sector经过P1/P2/C1/C2处理后,也就是说,经过PoREP处理后,需要持久化存储Replica的数据和tree_r_last的数据。tree_r_last的数据需要存储的原因是PoSt要用到。特别注意的是,tree_r_last的数据并不是完整的Merkle树数据,删除了其中一些层的数据。
32G的Sector,对应的tree_r_last分成了8棵子树,每棵子树是8叉树,默认存储的时候,忽略了最低的两层。也就是,去除最低两层的存储量为:
所以每棵子树的存储数据为4G*0.00223=9.13M。
也就是说,Sector持久化存储比例在1.0022左右。
总结:
Filecoin存储管理的逻辑主要在sector-storage中。Sector的处理任务,可以通过多个Worker完成。每个Worker的存储目录结构一致,Sector数据可以在多个Worker之间通过Http服务传输。Sector处理过程中,最大的存储需求量在512G左右。持久化存储比例为1.0022。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。