Filecoin技术分析:深入理解存储管理
Filecoin的存储单元称为扇区(Sector)。对传统硬盘结构理解的小伙伴,对这个术语应该比较亲切,传统硬盘的最小存储单元就叫Sector。为了证明Sector的存储,Filecoin进行了一系列的处理,传说中的P1/P2/C1/C2。在处理过程中,一个Sector的计算会生成若干文件,最终会生成replica。相关文件是如何组织的?Cache都是由哪些文件组成,分别是多大?本文就从存储的角度看这些过程和逻辑。
Filecoin的存储管理的逻辑主要实现在sector-storage项目中。在深入理解Sector存储逻辑之前,先讲讲Worker和Manager。
01 相关术语
-
Worker – 处理P1/P2/C1/C2的服务,Worker又分为两种:local worker和remote worker。local worker处理本地服务处理,remote worker支持远程服务处理
-
Manager – 管理多个Worker
-
Scheduler – 调度器,调度多个Worker,一个Manager通常有一个Scheduler
-
Store – Sector存储系统
02 Sector存储
Sector处理相关的文件存储在Store中。Store通过sectorstore.json进行配置:
CanSeal表明Store可以用来Seal(存储Seal相关的临时文件),CanStore表面Store可以持久存储Seal的结果(replica)。Weight 是权重,在多个Store选择时使用。ID是Store的UUID编号。
一个Store中存在三种存储,分别对应三种目录:unsealed (未封存的文件),cache(缓存文件),sealed(封存后的文件)。
03 Worker & Store
sector-storage项目的README中的这张图很好的解释了sector storage的各个模块以及相互的关系:
整幅图分为上下两个部分:上部分是Manager,下部分是Remote Worker。Manager中包括一个Local Worker。stores.Index是所有Sector存储的索引。Scheduler,上部分的中间,管理所有的Worker,并且调度Sector相关的存储。
worker management APIs通过/rpc/v0的jsonRPC接口实现remote worker的管理。通过/remote的HTTP API实现存储的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 Seal Task
理解Seal Task,最好对照了Sector的状态管理一起看。对Sector状态管理还不熟悉的小伙伴,可以查看之前的文章:
Filecoin – Sector状态管理逻辑
接下来,看看每个Seal Task对应的存储数据的变化。
AddPiece
如果其中左边的Worker接收到任务,AddPiece任务会在unsealed目录中创建原始数据。
PreCommit1
PreCommit1阶段,简称P1,针对SDR算法,计算若干层数据。如果Sector是32G,需要计算11层。对SDR算法不熟悉的小伙伴,可以看看之前的文章:
经过PreCommit1,生成的数据存储在Cache中:
PreCommit2
PreCommit2的阶段,简称P2,生成Replica,计算Column Hash,并生成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
-
P1 layer – 32*11G
-
P2 – Column Hash & tree_c – 32*2 G
-
P2 – Replica & tree_r_last – 32G + 9.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。
来源:星想法
比推快讯
更多 >>- 美联储主席鲍威尔:过早降息将会带来极大的干扰,不需要急于削减利率
- 中心化交易所的比特币期货未平仓合约创下 380 亿美元新高
- Prisma Finance:漏洞攻击总计损失3257枚ETH,价值约合 1100 万美元
- TON基金会投资总监:目标是到 2028 年让 5 亿人上链
- 尼日利亚政府指控币安洗钱达 3540 万美元,并寻求延长对币安高管的羁押期限
- ZK Rollup项目Zircuit推出Build to Earn计划
- Arbitrum基金会资助计划第三阶段申请将于4月15日开放
- Acura Capital与Patex合作成立代币化数字银行
- 灰度宣布推出动态收益基金GDIF
- 美法官要求SEC和Coinbase在4月19日前提交案件管理计划
- ARK 21Shares现货特币ETF ARKB持仓市值已突破 30 亿美元
- Cathie Wood:现货以太坊ETF在5月获批的可能性下降
- 英国法官对Craig Wright的600万英镑资产下达全球冻结令
- Yolo Investment投资Toncoin和TON生态800万美元
- 贝莱德IBIT持仓已超25.2万枚比特币
- 马斯克:Grok 1.5将于下周推出
- Polymarket:预测以太坊现货ETF获批概率仅为19%
- ARK Invest昨日减持超416万美元Coinbase股票
- BONKbot:未导出私钥的用户资金100%安全
- BONKbot疑似因漏洞导致用户钱包代币被盗
- 3月28日现货比特币ETF净流入达1.79亿美元
- WIF最大的个人/机构持币地址已浮盈1.34亿美元
- Prisma Finance攻击者:并非盗取资金,而是一次白帽行动
- Uniswap DAO正在就其资金多元化发起提案投票
- 比特币矿商Cleanspark计划出售最多8亿美元的股票,股价下跌10%
- AAVE:将通过OpenBlock进行风险管理
- 谷歌现在允许搜索比特币、Fantom、Arbitrum等钱包地址
- 去中心化借贷平台LendFi推出综合应用程序
- AI分析公司Helika推出5000万美元规模链游加速器
- Cathie Wood:出售 Coinbase 股票是主动投资组合管理的一部分
- Bitwise向美SEC申请推出现货以太坊ETF
- Wormhole:4月3日开启空投申领
- 3月28日9只现货比特币ETF净增持534枚BTC,净流入约3812万美元
- Greeks.Live:价值150亿美元的期权将于明日交割,BTC看涨期权依旧是移仓主力
- Web3基础设施平台Syndicate推出低成本L3链Degen Chain,原生 Gas 代币为DEGEN
- 1inch宣布启动社区建设者计划2.0阶段
- Econia Labs:Reference Frontend已上线并准备分叉
- OKX 全球首席合规官在任职仅六个月后离职
- 彭博社:美国和英国正在审查通过某俄罗斯虚拟交易所进行的超 200 亿美元的加密货币交易
- 资产代币化协议Midas完成875万美元种子轮融资,BlockTower等领投
- SBF被判入狱25年,被勒令没收超110亿美元资产
比推专栏
更多 >>观点
项目
比推热门文章
- 尼日利亚政府指控币安洗钱达 3540 万美元,并寻求延长对币安高管的羁押期限
- ZK Rollup项目Zircuit推出Build to Earn计划
- Arbitrum基金会资助计划第三阶段申请将于4月15日开放
- Acura Capital与Patex合作成立代币化数字银行
- 灰度宣布推出动态收益基金GDIF
- 美法官要求SEC和Coinbase在4月19日前提交案件管理计划
- ARK 21Shares现货特币ETF ARKB持仓市值已突破 30 亿美元
- Cathie Wood:现货以太坊ETF在5月获批的可能性下降
- Arbitrum 为什么能领跑以太坊 Layer 2?
- 对话 Mines of Dalarnia: Web3 游戏创新,社区驱动与公链共建