ipfs-緩存/Pinning(文件持久存儲、垃圾收集機制)

Pinning

IPFS-緩存
參考URL: https://www.jianshu.com/p/8d95467bef6c

存儲在blocks中的數據,有兩種方式,一個是硬盤存儲(永久保存),另一個是緩存存儲(系統定期清理)。用戶使用ipfs add添加的數據都是硬盤存儲的,而ipfs get到的數據都是以緩存存儲的。

Pinning 在IPFS裏是一個很重要的概念,當我們每次請求一個網絡上的內容的時候,IPFS總是會把內容先同步的本地提供服務,而爲了防止 IPFS 存儲空間不停增長,實際上使用cache 機制來處理文件, 如果文件在一段時間內沒有被使用,文件會被”回收“。 Pinning 的作用就是把文件”釘“住,確保文件在本地不被”回收“。 如果是重要的文件,就可以使用 Pinning 防止文件被刪除。

當我們使用ipfs add 添加文件時,默認會進行Pinning(使用其他命令獲取的文件不會進行pinning)

我們可以通過ipfs pin ls查看pin過的數據

ipfs pin ls

查詢下某一個hash 是否被pin:

[root@VM_0_14_centos ~]# ipfs pin ls QmVa54cW1WR7jRKDtGc7awUNYGccQixPjesraSguTK2tPX
QmVa54cW1WR7jRKDtGc7awUNYGccQixPjesraSguTK2tPX indirect through QmfUxRD5UYesb4fMWhkZXwZNqfGyfd6mgfpm1MYA1xG3kC

ipfs get獲取到的數據,並沒有被pin處理過,將屬於緩存存儲。但如果你對這份數據很感興趣,想永久保存它,我們可以手動pin處理該數據。

ipfs pin add QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T
pinned QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T recursively

如果你對這個數據不感興趣了,我們可以解除它的pin鎖定,命令ipfs pin rm -r 。 操作如下:

ipfs pin rm -r QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T
unpinned QmbrevseVQKf1vsYMsxCscRf6D7S2dftYpHwxkYf94pc7T

這樣這個數據就被解除pin了。pin列表中將不會存在這個hash值。

pin rm 的參數 -r 表示遞歸的刪除pin 狀態,對於沒有pin住的文件, 如果執行GC操作 ipfs repo gc 文件會被刪除。

另:ipfs cat的數據都是在blocks中存儲的數據,如果blocks中沒有該數據,將會從ipfs網絡中請求數據。

Pin 是將文件長期保留在本地,不被垃圾回收。執行 ipfs pin ls 可以查看哪些文件在本地是持久化的,通過 add 添加的文件默認就是 pin 過的。

總結:IPFS節點保存本機文件:通過add命令都會pin、永久保存。 但不是所有文件都會永久保存,執行命令 ipfs repo gc 可以回收沒有pin住的文件,釋放空間。ipfs pin ls 當前節點pin的所有數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章