概述
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链接到文件夹或者文件。
徐明星新书《趣说金融史》正式发布 科普金融发展之道:金色财经现场报道,9月23日,欧科云链创始人徐明星携手著名财经作家李霁月、行业观察者顾泽辉力作《趣说金融史》一书,跨越5000年金融历史,重读金钱故事,并预测新的金融时代。该书由中信出版社出版,将于近期正式发售。据了解,本书可以更好地呈现金融的起源与发展,帮助人们理解货币、金融与未来经济。作为区块链行业领军企业——欧科云链的创始人,徐明星深知技术探索对经济社会的重要推动作用,他曾先后出版过《图说区块链》、《区块链:重塑经济与世界》、《通证经济》、《链与未来》等行业权威著作,解读区块链等新型技术的推动下,金融与社会的升级之道,对经济社会发展做出了重大贡献。其中,《区块链:重塑经济与世界》曾作为新中国70周年重点推荐图书之一被相关书店推荐。[2021/9/23 17:00:57]
其中,root目录、文件夹都会存储在IPFS的DAG中进行持久化,另外root目录的CID存储在IPFS内置的LevelDB中,当IPFS启动的时候从LevelDB中取出root目录的CID,然后在IPFS的DAG中取出根目录,最后加载出整个目录结构。
现场 | 火币中国推出数字经济及区块链产业科普新书:金色财经现场报道,12月6日,由海南省工业和信息化厅主办,南南合作金融中心协办,海南生态软件园、火币中国承办的“海南自贸港数字经济和区块链国际合作论坛”在海口举行,这是全球首次区块链部长级论坛。
在本次论坛上,火币中国举行了“数字经济及区块链产业科普系列新书发布”仪式,希望通过教材、专业教育、培训等多种方式,帮助从业者、高校、研究机构深入了解区块链,从而建立起区块链全局性知识模型,真正推动区块链应用落地。火币中国CEO袁煜明介绍,将联合机械工业出版社面向普通高等教育推出《区块链导论》、《区块链系统设计与应用》和《区块链新商业模式分析》系列教材,这是国内最早推动的区块链教材之一;火币中国还积极参与数字经济的研究,由中信出版社出版的新书《读懂Libra》已经上市;由火币中国负责编写的区块链技术科普读物《区块链技术进阶指南》将于12月面世;首本行业内最全的区块链应用案例集《区块链产业应用100例》在本次论坛进行了首次刊印。[2019/12/6]
声音 | 上海股交所总经理:区块链想要大规模发展要做好社会科普工作:金色财经报道,上海股交所总经理张云峰表示,区块链当前还处于一个“概念”的阶段,距离成熟应用,影响到百姓的日常生活还有很长的路要走。对于“区块链”和其会带来的社会和经济效果,沈阳应当持审慎的态度。区块链想要大规模发展,一方面要做好这项复杂技术的社会科普工作,加快社会大众对区块链的了解。另一方面,要充分发挥市场的作用,让企业用实实在在的技术创新,赋能实体经济的发展。[2019/11/17]
下面详细介绍创建文件夹和增加文件的过程:
创建文件夹的过程如下图所示:
1.新建文件夹;
2.将该文件夹的父文件夹添加一条link,link包含该文件夹的Name、CID和Size;
3.调用该文件夹的update函数,通过parent递归更新父级文件夹的状态,逐级向上层文件夹更新,直到更新root结束递归过程。
删除文件夹和创建文件夹类似,只需要unlink和递归update即可。
动态 | 区块链技术入选科普杂志《科学美国人》2019十大突破性技术榜单:据新浪网今日新闻报道,美国科普杂志《科学美国人》公布 2019 十大突破性技术榜单。区块链技术因在保障食品安全中的作用而上榜。 入选榜单具体原因:区块链技术的发展应用将显著改善食品污染源数据追踪的困境。利用区块链云端系统,食品制造商可以依次在计算机储存各类过程的信息。[2019/9/29]
增加文件的过程如下图所示:
1.?上传文件
2.将该文件的父文件夹添加一条link,link包含该文件夹的Name,CID和Size;
3.调用该文件的flush函数,通过parent递归更新父级文件夹的状态,逐级向上层文件夹更新,直到更新root结束递归过程。
中科院自动化研究所将面向大中小学生开展区块链等主题的科普讲座:5月21日,新华网讯,今年,中国科学院自动化研究所将举办第十四届“自动化之光”公众科学开放日活动。届时,自动化所将面向大中小学生分别开展《脑与智能》、《区块链技术与平行智能》、《大数据时代的视觉智能》、《动画真奇妙》等4个主题报告,用实例和生动的演示深入浅出地为大家揭示智能技术的原理和奥妙。[2018/5/21]
删除文件和增加文件的过程类似,只需要unlink和flush即可。
文件GC机制
IPFS中删除文件时并不会立即删除掉该文件,而是将该文件的CIDunpin,下次GC的时候则可以真正的删除该文件。
下图是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团队,数据平台架构师
目前区块链技术在通信行业的应用研究主要集中于基于运营商现有通信网络架构下,如何通过引入区块链技术寻找新的解决方案.
1900/1/1 0:00:00据Bitcoin.com消息,MirrorTradingInternational的管理团队现在表示,公司首席执行官JohannSteynberg可能退出局.
1900/1/1 0:00:00全球最大的独立BI公司微策略周一表示,该公司又购买了29,646个比特币,价值约6.5亿美元,使其今年的比特币购买总额超过了10亿美元,达到11.25亿美元.
1900/1/1 0:00:00纳斯达克上市公司GreenproCapitalCorp周一宣布,计划成立一个比特币基金进行投资.
1900/1/1 0:00:000x协议发布推特提醒用户参与V4版本的治理投票,此次投票于1月16日晚上启动,预计将于1月23日结束.
1900/1/1 0:00:00作者:NateMaddrey&CoinMetricsTeam翻译:李翰博在比特币存在的大部分时间里,机构通常以比特币是一种风险性、投机性资产为由,一直远离投资比特币.
1900/1/1 0:00:00