IPFS在哪里存储所有数据?

时间:2017-11-23 07:43:03

标签: ipfs

我一直在努力实现和理解IPFS的工作,并且有一些不太清楚的事情。

我尝试过的事情:
在我的系统上实现IPFS并在其上存储文件。即使我从系统中删除文件并关闭ipfs守护程序,我仍然可以通过IPFS从其他机器访问文件。
我注意到我的主目录中有一个 .ipfs 文件夹,其中包含我添加到IPFS的数据块部分。

问题:
1.块是否也存储在我的系统本地? 2.数据存储在何处?在我连接的其他同行上?因为如果我关闭我的ipfs守护进程,我仍然可以访问该文件 3.如果这是真的,并且数据存储在多个位置,如果所有对等方都与网络断开连接,那么丢失数据的可能性仍然存在? 4.网络上的每个对等体是存储整个文件还是仅存储文件的一部分?
5.如果在p2p网络上分发数据副本,则意味着数据被多次复制?这在存储方面如何有效?
6.我们也存储其他同行上传的数据? 7.运行IPFS的最低系统要求?我们只需要丰富的存储空间,不一定需要强大的系统?

提前致谢!

1 个答案:

答案 0 :(得分:27)

上传内容时,ipfs将文件 chunked 并存储在缓存文件夹(.ipfs)中。

如果您尝试在网络的另一个对等方(比如主网关,ipfs.io)上看到该文件,该对等方向您请求该文件,并且缓存也是如此。

如果关闭守护程序,您仍然可以在网关上看到该文件,因为网关或网络上的其他同行仍然可以缓存它。

当一个同伴想要下载一个文件但是它没有内存(它不能再缓存)时,最旧的文件会忘记释放空间。

......实际上它比这更复杂,因为我有更广泛的范围,我指出你要检查:

  • git是如何工作的
  • 分散哈希表
  • Kademlia的
  • meerkle trees
  • ...

但后者应该让你了解机制的运作方式或多或少。

现在,让我们逐点回答

  1. 请求您的文件的所有同伴缓存它
  2. 如果文件不再可能从缓存了部分内容的所有对象(包括您自己)中重新构建文件,则会丢失该文件。
  3. 一个人可以得到它的一部分,想象你正在看一部电影而你或多或少停在一半......就是这样,你只缓存了一半。
  4. 当您在youtube上观看视频时,您的浏览器会对其进行缓存(这意味着复制!)... ipfs在流量方面效率更高,假设您关闭浏览器,2分钟后又要再次观看。 Ipfs从你的缓存中获取它,youtube让你再次下载它。还有一个有趣的问题,三角存储(与git相关)从你得到它(可能在你的局域内...这意味着快速开始)但我不会深入研究它。
  5. 如果您获得数据,则将其缓存为......
  6. 主守护进程是用go编写的。 Go是高效的,但不如在C ++,C,Rust上编写它...而且,技术还很年轻,它会改进。你拥有的空间越多,你可以缓存越多,cpu功率并不重要。
  7. 如果您对以p2p方式存储数据的方式感兴趣,可以在此处链接到有趣的项目。