火星链 火星链
Ctrl+D收藏火星链
首页 > 聚币 > 正文

ROO:科普 | IPFS中MFS以及GC机制

作者:

时间:1900/1/1 0:00:00

概述

IPFS的介绍在《IPFS文件存储详解》已经详细介绍过,本文主要介绍IPFS中的文件系统MFS以及文件的GC机制。

MFS和传统的文件系统一样使用目录对文件进行管理,区别在于MFS中的目录和文件都有哈希,该哈希由文件内容或者目录下面所有目录以及文件的内容唯一确定,如果目录下面的文件或者目录有变化则该目录的哈希也会变化,所以根据哈希可以判断该文件或者目录下面的内容是否有修改。

文件的GC机制主要介绍IPFS是如何进行文件删除的。

本文所述的IPFS的版本为v0.6.0。

MFS

本版块主要介绍IPFS的文件系统,即文件及目录结构是如何生成、组织和存储。

MFS中文件及目录结构如下图所示,最上层是root目录,表示该文件系统的根目录,所有文件夹以及文件都在该目录下面,MFS中用Root,Directory,File这三种类型分别表示root目录,文件夹,文件。root目录通过link链接到文件夹或者文件,文件夹又通过link链接到文件夹或者文件。

TRON数字钱包科普资料《波场钱包的现在过去与未来》已上线:据最新消息显示,由TokenPocket联合波场TRON官方,以及 TokenPocket 社区志愿者共同撰写的《波场钱包的现在过去与未来》已正式上线。《波场钱包的现在过去与未来》又称为波场钱包小白书,详细介绍了当前TRON钱包与TRON生态密切结合的实例,是目前市面上最为详细的TRON数字钱包科普资料。波场钱包作为波场公链生态中极为重要的入口,是波场生态的重要构成要素。波场钱包从一开始只提供权限管理、转账收款、节点投票等基础功能,到如今不仅可以为用户提供法币交易、闪兑和去中心化交易所等方便快捷的交易服务,还能让用户直接在钱包上体验波场上DApp,挖矿、DeFi、Staking等资产增值服务。详情见原文链接。[2020/8/20]

其中,root目录、文件夹都会存储在IPFS的DAG中进行持久化,另外root目录的CID存储在IPFS内置的LevelDB中,当IPFS启动的时候从LevelDB中取出root目录的CID,然后在IPFS的DAG中取出根目录,最后加载出整个目录结构。

人民数字FINTECH推出区块链科普动画:人民日报数字传播发布微博称,人民数字FINTECH出品《趣味科普|区块链动画》。[2020/3/31]

下面详细介绍创建文件夹和增加文件的过程:

创建文件夹的过程如下图所示:

1.新建文件夹;

2.将该文件夹的父文件夹添加一条link,link包含该文件夹的Name、CID和Size;

3.调用该文件夹的update函数,通过parent递归更新父级文件夹的状态,逐级向上层文件夹更新,直到更新root结束递归过程。

删除文件夹和创建文件夹类似,只需要unlink和递归update即可。

声音 | 上海股交所总经理:区块链想要大规模发展要做好社会科普工作:金色财经报道,上海股交所总经理张云峰表示,区块链当前还处于一个“概念”的阶段,距离成熟应用,影响到百姓的日常生活还有很长的路要走。对于“区块链”和其会带来的社会和经济效果,沈阳应当持审慎的态度。区块链想要大规模发展,一方面要做好这项复杂技术的社会科普工作,加快社会大众对区块链的了解。另一方面,要充分发挥市场的作用,让企业用实实在在的技术创新,赋能实体经济的发展。[2019/11/17]

增加文件的过程如下图所示:

1.?上传文件

2.将该文件的父文件夹添加一条link,link包含该文件夹的Name,CID和Size;

动态 | 币安科普MimbleWimble算法:币安官方推特今日发布隐私算法Mimblewimble的科普贴,在下方留言区大量网友留言猜测是否是基于 Mimblewimble算法的隐私币Grin或者Beam即将登陆币安交易所,其中猜测Grin的呼声更高。[2019/9/2]

3.调用该文件的flush函数,通过parent递归更新父级文件夹的状态,逐级向上层文件夹更新,直到更新root结束递归过程。

删除文件和增加文件的过程类似,只需要unlink和flush即可。

文件GC机制

IPFS中删除文件时并不会立即删除掉该文件,而是将该文件的CIDunpin,下次GC的时候则可以真正的删除该文件。

科普时报:区块链与云计算长期发展目标不谋而合:据《科普时报》今日报道,区块链与云计算两项技术的结合,从宏观上来说,一方面,利用云计算已有的基础服务设施或根据实际需求做相应改变,实现开发应用流程加速,满足未来区块链生态系统中初创企业、学术机构、开源机构、联盟和金融等机构对区块链应用的需求。另一方面,对于云计算来说,“可信、可靠、可控制”被认为是云计算发展必须要翻越的“三座山”,而区块链技术以去中心化、匿名性,以及数据不可篡改为主要特征,与云计算长期发展目标不谋而合。[2018/5/4]

下图是IPFS的配置文件,其中红色部分是GC相关的配置。

StorageMax是存储文件的最大容量,默认是10GB,可以根据项目需要进行修改,当存储的文件超过该最大容量时会有warning,文件还是可以继续存储的。

StorageGCWatermark是GC的阈值,默认是90,即90%,触发GC的阈值容量为10GB*90%=9GB。

另外,GCPeriod是GC的间隔,默认是1h。GC触发的机制是每一个GC间隔时间,触发GC的检查,当存储容量超过阈值时则开始GC,将需要删除的文件或者块进行删除。

文件或者块的Pin模式如下图所示,文件的Pin模式是recursive,即递归Pin文件的所有的块。

如下图所示,pinner是块的GC管理器,其中recursePin是递归的pin的集合,里面存储所有文件的根CID:

每次触发GC时会进行ColoredSet,如下面两张图所示,将所有recursePin中的CID依次遍历,深度遍历该CID所有的links,这些links的CID都会存储到gcs这个集合中:

然后通过bs.AllKeysChan(ctx)可以获得所有的块的CID集合,最后遍历这些CID集合,判断gcs中没有的该CID的块都需要删除掉,具体见下图,从而实现了所有unpin的块GC触发的时候都会删除的效果。

注意:GC的时候会lock,此时上传文件和删除文件都会阻塞,GC需要占用的时间和文件存储量以及删除的文件大小有关系,可以将GC时间固定在每天用户操作最少的时间点,例如每天的凌晨3点,减少用户操作和GC的冲突。

总结

IPFS中MFS提供了一套基于CID的文件系统,目录结构也存储在IPFS的DAG中,目录的树状结构和DAG的结构本身是很类似的,所以将目录结构存储在DAG中巧妙地解决了文件系统目录结构地存储问题,最后只需要存储文件系统的根目录的CID从而可以方便地加载整个文件系统的目录。

IPFS中的文件GC机制目前不是很高效,通常文件存储10GB容量左右时,触发GC可能就需要几分钟到十几分钟的时间,由于IPFS是一个面向公网的一个用户一个IPFS节点的模式,所以该问题对于IPFS项目本身并不明显,但是如果将IPFS的存储以及GC机制作为投产项目使用,则需要对GC机制进行优化,减少GC占用的时间间隔。

另外IPFS本身每隔一段时间触发GC也不是很合理,针对项目的用户使用情况可以将GC触发时间固定在每天的凌晨某个时间,然后每24小时的GC触发间隔也是一种比较简单的解决IPFS的GC冲突问题的办法。

作者简介

姚文豪

来自数据网格实验室BitXMesh团队,数据平台架构师

标签:区块链LINKINKROO区块链域名如何注册tronlink怎么用LINKS TokenWAROO币

聚币热门资讯
USDT:行情分析 | 2020最后一天,比特币能上3万吗?

作者|哈希派分析团队往期回顾:大饼企稳回升,继续冲击2.8万?金色财经合约行情分析 | 主流币价格反复,DeFi板块普涨:据火币BTC永续合约行情显示,截至今日18:00(GMT+8).

1900/1/1 0:00:00
BIT:比特币年底将冲击30000美元?数据显示热潮或会持续

12月27日,随着比特币价格创下26900美元的历史新高之后,交易员和分析师都在思考比特币的前景.

1900/1/1 0:00:00
数字货币:苏州数字人民币红包试点成绩单:线上消费金额占比近五成,536人“尝鲜”双离线支付

本文来源:北京商报,记者:岳品瑜?刘四红,原题《苏州交出“成绩单”数字人民币试点还有多少可能》12月11日8时发放,12月27日24时结束,为期半个月的苏州数字人民币红包试点活动正式收官.

1900/1/1 0:00:00
LUX:一周要闻解读 | 2021加密监管展望,密钥防丢指南

原文链接:https://forkast.news/biden-american-rescue-plan-crypto-regulations-bitcoin-stefan-thomas-pas.

1900/1/1 0:00:00
XRP:Jed McCaleb暂停抛售XRP,或受Ripple诉讼影响

研究人员LeonidasHadjiloizou认为Ripple联合创始人、前CTOJedMcCaleb目前已经停止出售其持有的XRP.

1900/1/1 0:00:00
HAI:Chain Hill Capital :加密货币指数研究:波动率加权

撰文:ChainHillCapital管理合伙人Carrie波动率加权是实现风险分散化的指数构建方法,它可以提升加密货币组合的风险调整绩效,并获得主动回报.

1900/1/1 0:00:00