ipfs 文件持久化 *** 作

ipfs 文件持久化 *** 作,第1张

        IPFS作为区块链分布式存储板块的开创项目已经经历了6年不断地改进与完善,早就具备了成熟的数据存储机制。其实在很多人眼里,IPFS分布式存储网络是能够永久保证人类数据安全的,当然也有人说文件一旦被存储在ipfs中就不会丢失这一说法是错误的,因为ipfs节点也有可能因为各种原因导致数据丢失。

        如果一个数据对象在ipfs网络中被多个节点访问,则会在访问节点产生多份备份,备份的数据对象不会被永久保存,当节点执行GC *** 作时,备份数据会被清除。要让一份数据能够被节点永久保存,则需要执行pin *** 作。下面就来对ipfs数据对象持久化进行 *** 作讲解。

服务器准备

        准备两台服务器node1和node2,分别在两台服务器上安装ipfs,启动ipfs守护进程(ipfs daemon),这里不再对安装启动做讲解。

数据准备

node1准备一份数据
 

[root@node1 ~]# echo "node-1" | ipfs add
added QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi

node2 准备数据

[root@node2 ~]# echo "node-2" | ipfs add
added QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD

不做持久化的观察

        node1上通过ipfs pin ls能看到新增的数据对象,看不到node2上新增的数据对象。反之在node2上也是如此

[root@node1 ~]# ipfs pin ls
QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi recursive

[root@node2 ~]# ipfs pin ls
QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD recursive

        在node1上访问node2的数据对象,能够读到文件内容,但访问持久化区时,pin出来是没有node2数据对象的hash值的

[root@node1 ~]# ipfs cat QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
node-2
[root@node1 ~]# ipfs pin ls
QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi recursive

        这时候停掉node2的daemon守护进程,再访问node2的数据对象,仍然能够读到内容,这是因为节点没有执行GC *** 作,执行GC *** 作后,node2数据不能再访问到。

[root@node1 ~]# ipfs cat QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
node-2
[root@node1 ~]# ipfs repo gc
removed bafkreibhk7az6hwkh6qbluusf35olnm4shzr7loyasbgbnmrkvi2hsfv5a
[root@node1 ~]# ipfs cat QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
.............................(获取不到,持久等待)

持久化 *** 作

        重启node2的daemon守护进程,在node1上重新拉取node2的数据对象,并将其加入持久化,可在持久化列表中看到node2数据对象的hash值。​​​​​​​

[root@node1 ~]# ipfs cat QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
node-2
[root@node1 ~]# ipfs pin add QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
pinned QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD recursively
[root@node1 ~]# ipfs pin ls
QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi
QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD

        停掉node2的daemon守护进程,执行GC *** 作后,再访问node2的数据对象,可看到仍能访问到数据内容,及node2的数据已经加入到node1的数据持久化存储中。​​​​​​​

[root@node1 ~]# ipfs repo gc
removed bafkreibhk7az6hwkh6qbluusf35olnm4shzr7loyasbgbnmrkvi2hsfv5a
[root@node1 ~]# ipfs cat QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
node-2

删除持久化

        ipfs持久化的存储是可以删除掉的,pin rm *** 作删除后,需要执行GC *** 作才能完全删除,删除的数据不能再被访问​​​​​​​

[root@node1 ~]# ipfs pin rm QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
unpinned QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
[root@node1 ~]# ipfs pin ls
QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi recursive
[root@node1 ~]# ipfs repo gc
removed bafkreibhk7az6hwkh6qbluusf35olnm4shzr7loyasbgbnmrkvi2hsfv5a
[root@node1 ~]# ipfs cat QmQzEDpiVMsMePtGZYUR2ee8Ve5rTsF771RHyuewmYx9bD
.............................(获取不到,持久等待)

        同样,本地数据对象也能进行持久化删除​​​​​​​

[root@node1 ~]# ipfs pin rm QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi
unpinned QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi
[root@node1 ~]# ipfs pin ls
[root@node1 ~]# ipfs repo gc
removed bafkreifwwxnupxybxrlpxchyty5llinjqqolyvatf4rwspytgvjagzketu
[root@node1 ~]# ipfs cat QmadskBmtG5Fwux8mnBPacme9Ebwep6zEfVsaW3T2QEKsi
.............................(获取不到,持久等待)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2992121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存