Filecoin技术分析:深入理解存储管理_ORK:Crimson Network

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支持远程服务处理

FilDA 与 Fixed-Rate Protocol达成战略合作:3月26日,FilDA与智能化稳定利率产品投资协议Fixed-Rate Protocol达成战略合作,Fixed平台USDT单币存款APY预计将达到45%,并达成HECO生态史上USDT单币质押最高APY。

据悉,Fixed-Rate Protocol是基于HECO的智能固定利率保底投资协议。FilDA是基于HECO的跨链借贷DeFi项目。 FilDA于2021年1月5日晚20:00开启创世挖矿Fair launch,首发HUSD、HBTC等19种资产借贷功能,同时也是HECO首个公开平台各项APY数据,存借双向实时透明数据的借贷项目。FilDA 平台存借款总额高峰值突破12亿美元,FilDA LP 峰值超过3000万美金。[2021/3/26 19:20:49]

Manager-管理多个Worker

ZG.COM于1月27日16:00上线杠杆代币FILUP、FILDOWN等项目:据ZG.COM官方公告,ZG.COM将于2021年1月27日16:00上线杠杆代币ETF交易—FILUP(做多FIL)、FILDOWN(做空FIL)、YFIUP(做多YFI)、YFIDOWN(做空YFI),并开通FILUP/USDT、FILDOWN/USDT 、YFIUP/USDT 、YFIDOWN/USDT 交易市场。

ZG.COM杠杆代币是由ZG.COM发行的一种带有杠杆功能的代币(非链上代币),该杠杆代币具有浮动杠杆、智能调仓机制、低费率等特点,并且每个杠杆代币的背后都对应了一篮子的ZG.COM合约持仓,杠杆代币价格将跟踪ZG.COM合约市场的价格变化,并随之产生杠杆水平的涨跌。[2021/1/27 13:37:55]

Scheduler-调度器,调度多个Worker,一个Manager通常有一个Scheduler

Filecoin网络目前总质押量约为2668万枚FIL:据IPFS100.com报道,Filfox浏览器数据显示,Filecoin网络当前区块高度为369705,全网有效算力为1.647EiB,总质押量约为2668万枚FIL,活跃矿工数为953个,每区块奖励为17.2127FIL,近24小时产出量为238142FIL,24小时平均挖矿收益为0.1394FIL/TiB,目前FIL流通量为62003562FIL。 目前有效算力排名前三的分别为:F02770(时空云&灵动)以72.63PiB暂居第一,F01248(智合云zh)以71.11PiB位居第二,F09652(RRmine)以40.14PiB位居第三。[2020/12/31 16:09:49]

Store-Sector存储系统

02?Sector存储

Sector处理相关的文件存储在Store中。Store通过sectorstore.json进行配置:

金色算力云合伙人梅洪睿:Filecoin的机制设计盘活了供需关系,会有强大的市场空间:9月4日,2020 币牛牛武汉国际峰会·华中区块链周盛大举行,金色算力云合伙人梅洪睿在《分布式存储和中心化存储的未来格局》的圆桌主题论坛中表示,分布式存储的优点是成本低、访问速度快、安全性高。IPFS作为数据基础设施,可以方便应用场景大规模落地,Filecoin生态也能带动挖矿这个行业,让更多人获利。金色财经为帮助投资者拓宽投资渠道,助力IPFS挖矿产业健康发展,推出金色算力云平台,以四大优势粉碎挖矿痛点,三大保障助推投资者生态良性发展。目前,金色算力云战略合作伙伴—石榴矿池,公布首批21个集群,暂居太空竞赛第一名。

从另外一个角度来说,Filecoin这个机制设计的非常巧妙,盘活了供需关系,在这个里面基本上是按需分配,这个态势发展,会有比较强大的市场空间。其落地商用至少主网需要上线,全球网络能在一个高数据量级的处理中,稳定、安全、高效的运行。[2020/9/4]

CanSeal表明Store可以用来Seal,CanStore表面Store可以持久存储Seal的结果(replica)。Weight是权重,在多个Store选择时使用。ID是Store的UUID编号。

Filecoin大矿工测试开始近两小时仍未有非官方节点上榜:8月25日,Filecoin官方宣布已启动测试网奖励计划。截止北京时间7点40分,新测试网已开采到区块196,平均存储量720TiB,平均出快时间32秒。在目前Filecoin官方公布的测试网数据中,仍未有非官方节点上榜。[2020/8/25]

一个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。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-9:422ms