一、創(chuàng)建ipfs節(jié)點(diǎn)
-
通過(guò)
ipfs init
在本地計(jì)算機(jī)建立一個(gè)IPFS
節(jié)點(diǎn) -
本文有些命令已經(jīng)執(zhí)行過(guò)了,就沒(méi)有重新初始化。部分圖片拷貝自先前文檔,具體信息應(yīng)以實(shí)物為準(zhǔn)
ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair...done peer identity: QmdKXkeEWcuRw9oqBwopKUa8CgK1iBktPGYaMoJ4UNt1MP to get started, enter:
ipfs cat /ipfs/QmVLDAhCY3X9P2uRudKAryuQFPM5zqA3Yij1dY8FpGbL7T/readme
cd?/.ipfscd ~/.ipfscd?/.ipfs ls blocks datastore version config keystore $ open ./
- 執(zhí)行ipfs init初始化節(jié)點(diǎn)之后,會(huì)生成一個(gè).ipfs的文件夾,用于存儲(chǔ)相關(guān)的信息,比如節(jié)點(diǎn)ID、環(huán)境配置信息、數(shù)據(jù)存儲(chǔ)等
- 如果使用的是MAC電腦,使用shift+command+. 可以查看隱藏文件
- ?通過(guò)ipfs id查看創(chuàng)建的節(jié)點(diǎn)id的信息
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-722113.html
二、啟動(dòng)節(jié)點(diǎn)服務(wù)器
- 使用命令ipfs daemon啟動(dòng)節(jié)點(diǎn)服務(wù)器
- 一旦啟動(dòng)當(dāng)前界面會(huì)處于監(jiān)聽(tīng)狀態(tài),需要新建標(biāo)簽頁(yè)
三、簡(jiǎn)單驗(yàn)證
-
使用如下命令,進(jìn)行簡(jiǎn)單測(cè)試
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
- 瀏覽器輸入下面的網(wǎng)址:http://localhost:5001/webui會(huì)看到一個(gè)漂亮的
UI
界面
?
四、相關(guān)問(wèn)題詳解
1. ipfs的存儲(chǔ)位置
- IPFS的數(shù)據(jù)存儲(chǔ),個(gè)人用戶的數(shù)據(jù)存儲(chǔ)在自己個(gè)人的硬盤(pán)上,也就是本地硬盤(pán)存儲(chǔ)。存儲(chǔ)后,會(huì)在IPFS網(wǎng)絡(luò)廣播,“我存儲(chǔ)哈希為Qm...的數(shù)據(jù)了”,因?yàn)楣5奈ㄒ恍?,如果?shù)據(jù)的分割方法一定,那么同樣的數(shù)據(jù)在網(wǎng)絡(luò)存儲(chǔ)中只會(huì)有一份,也就是只在本地節(jié)點(diǎn)存儲(chǔ)。當(dāng)有用戶檢索該數(shù)據(jù)時(shí),檢索數(shù)據(jù)的hash值就是key,節(jié)點(diǎn)會(huì)首先在DHT表(key/value存儲(chǔ))中查詢有無(wú)該key,如果沒(méi)有,到與key異或距離最近的K桶里查找,如果該K桶中的某個(gè)節(jié)點(diǎn)有key對(duì)應(yīng)的value則返回,否則返回它認(rèn)為存有value值的最可能節(jié)點(diǎn),以此遞歸,最終找到key對(duì)應(yīng)的value。然后請(qǐng)求節(jié)點(diǎn)與value(也就是節(jié)點(diǎn)ID)建立連接,并請(qǐng)求數(shù)據(jù),同時(shí)將該key/value鍵值對(duì)存儲(chǔ)到自己的DHT表中。請(qǐng)求節(jié)點(diǎn)將接收到的數(shù)據(jù)存儲(chǔ)到ipfs緩存中,數(shù)據(jù)檢索成功。該請(qǐng)求節(jié)點(diǎn)在緩存數(shù)據(jù)有效期內(nèi),同樣可以為ipfs網(wǎng)絡(luò),提供該數(shù)據(jù),作為原始數(shù)據(jù)的備份。
2. ipfs的冗余備份措施
- IPFS采用了Erasure coding的冗余備份措施,集群中有n份原始數(shù)據(jù)和m份校驗(yàn)數(shù)據(jù),即共有n+m份備份數(shù)據(jù)。
3. 修改節(jié)點(diǎn)默認(rèn)存儲(chǔ)空間
-
ipfs
節(jié)點(diǎn)默認(rèn)存儲(chǔ)空間為10個(gè)G
方式一:可打開(kāi)終端執(zhí)行下面的命令
export EDITOR=/usr/bin/vim ipfs config edit
- 找到下圖使用紅色的框標(biāo)定的內(nèi)容,修改自己想要的大小
- PS:輸入
i
可以開(kāi)始編輯,編譯完畢后按esc
鍵,再輸入:
,再次輸入wq
保存并且退出
方式二 采用web界面進(jìn)行修改
- 修改對(duì)應(yīng)的信息,然后點(diǎn)擊保存
ipfs的節(jié)點(diǎn)掉線,對(duì)于整個(gè)組織的影響
- IPFS的容錯(cuò)機(jī)制會(huì)保證數(shù)據(jù)被復(fù)制了足夠數(shù)量并存放在不同的地區(qū),即使某一個(gè)地方的數(shù)據(jù)由于不可抗力的因素被完全銷(xiāo)毀,通過(guò)其他地區(qū)的備份也可以實(shí)現(xiàn)完整恢復(fù)數(shù)據(jù),極大的保證了存儲(chǔ)在IPFS上的數(shù)據(jù)的安全性
- 采用MerkleDAG,因?yàn)樗哂幸韵绿攸c(diǎn):1.內(nèi)容可尋址:所有內(nèi)容都是被多重hash校驗(yàn)和來(lái)唯一識(shí)別的,包括links。2.無(wú)法篡改:所有的內(nèi)容都用它的校驗(yàn)和來(lái)驗(yàn)證。如果數(shù)據(jù)被篡改或損壞,IPFS會(huì)檢測(cè)到。3.重復(fù)數(shù)據(jù)刪除:重復(fù)內(nèi)容并只存儲(chǔ)一次。
在IPFS網(wǎng)絡(luò)中,數(shù)據(jù)的存儲(chǔ)可能是有重復(fù)的。重復(fù)的數(shù)量與用戶上傳的時(shí)候采用的IPFS進(jìn)行分塊的方法有關(guān)。 - 之前提到過(guò)數(shù)據(jù)在IPFS存儲(chǔ)是以塊的形式存儲(chǔ)的。在ipfs提供的數(shù)據(jù)分割方式有很多種。在ipfs源碼種core/commands/add.go代碼中描述了切割的方法:
-
默認(rèn)模式,塊的大小是256kb,也就是256 * 1024 bytes,對(duì)應(yīng)的size=262144。命令不需要加參數(shù),即ipfs add 文件。
-
指定塊大小模式。命令是ipfs add --chunker=size-1000。其中后邊的1000可以是任意小于262144的數(shù)。
-
rabin可變塊大小切割模式。命令是ipfs add --chunker=rabin-[min]-[avg]-[max] 文件。其中min,avg,max的值分別值最小塊大小,平均塊大小,最大塊大小的意思,值在小于262144自行設(shè)定。
The chunker option, '-s', specifies the chunking strategy that dictates how to break files into blocks. Blocks with same content can be deduplicated. The default is a fixed block size of 256 * 1024 bytes, 'size-262144'. Alternatively, you can use the rabin chunker for content defined chunking by specifying rabin-[min]-[avg]-[max] (where min/avg/max refer to the resulting chunk sizes). Using other chunking strategies will produce different hashes for the same file.
ipfs add ipfs-logo.svg ipfs add --chunker=size-2048 ipfs-logo.svg ipfs add --chunker=rabin-512-1024-2048 ipfs-logo.svg
- 同一個(gè)文件存儲(chǔ)在ipfs中,因?yàn)榇鎯?chǔ)是選用的文件切割方法不同,返回的hash值卻不一樣。所以說(shuō)IPFS的塊存儲(chǔ)沒(méi)有重復(fù)的,而IPFS塊文件拼湊的數(shù)據(jù)可能有重復(fù)的。也就是說(shuō)同一個(gè)文件可以根據(jù)不同的文件切割方法在IPFS網(wǎng)絡(luò)中重復(fù)的存儲(chǔ)多次。
如上圖,測(cè)試了一個(gè)6.8K的文件存儲(chǔ),存儲(chǔ)設(shè)定1024B為一個(gè)分片,分片完后,可以查到這個(gè)文件分為了7個(gè)分片。?
- 備份是如何實(shí)現(xiàn)的呢?假如一部非?;鸬碾娪?,大家都習(xí)慣性的將該電影存儲(chǔ)到自己的電腦E盤(pán)或其它硬盤(pán)存儲(chǔ)中,全世界如果有1億的人存儲(chǔ)了這個(gè)電影,這不是對(duì)存儲(chǔ)的極大浪費(fèi)嗎?在ipfs網(wǎng)絡(luò)中,該電影只被存儲(chǔ)在一個(gè)節(jié)點(diǎn)中,當(dāng)有用戶需要讀取的時(shí)候,會(huì)產(chǎn)生新的備份。就是誰(shuí)使用數(shù)據(jù),這個(gè)數(shù)據(jù)就會(huì)復(fù)制到誰(shuí)那里。當(dāng)一個(gè)節(jié)點(diǎn)加入IPFS網(wǎng)絡(luò)時(shí),這個(gè)節(jié)點(diǎn)會(huì)提供一部分硬盤(pán)空間(缺省為10G,可以配置)給整個(gè)網(wǎng)絡(luò)使用。那么通常情況下,在存儲(chǔ)文件的時(shí)候,您自己提供的這部分硬盤(pán)空間總是最快的,因?yàn)椴恍枰缇W(wǎng)。當(dāng)存儲(chǔ)完畢后,網(wǎng)絡(luò)上任意節(jié)點(diǎn)都可以訪問(wèn)這個(gè)文件。當(dāng)另一個(gè)節(jié)點(diǎn)訪問(wèn)的時(shí)候,那個(gè)節(jié)點(diǎn)往往會(huì)復(fù)制一份您的數(shù)據(jù)到他的緩存空間。這樣整個(gè)網(wǎng)絡(luò)中就有兩份拷貝了。試想,當(dāng)有很多人對(duì)這個(gè)文件感興趣,那么網(wǎng)絡(luò)中的拷貝數(shù)會(huì)越來(lái)越多。
- 需要提出的是:拷貝一般都是緩存,也就是說(shuō)是臨時(shí)存儲(chǔ)的。時(shí)間一長(zhǎng)就被自動(dòng)刪除掉了。這種臨時(shí)緩存非常好地解決了分布式數(shù)據(jù)分發(fā)的問(wèn)題,比如說(shuō)一個(gè)社會(huì)熱點(diǎn)往往呈現(xiàn)出預(yù)熱期、火熱期和退潮期等階段,利用IPFS,數(shù)據(jù)的分布和拷貝數(shù)與這些時(shí)期是完全匹配的。訪問(wèn)的人越多,拷貝數(shù)就越多,但熱度下來(lái)了,拷貝數(shù)就會(huì)降下來(lái),從而自然地實(shí)現(xiàn)空間利用率和存取效率的平衡。如果想讓這個(gè)文件永久存儲(chǔ),那么必須將其設(shè)為固定的樣式,即存儲(chǔ)在硬盤(pán)中。
4. ipfs的使用
上傳txt文件
上傳其他格式的文件
- docx
- jpg
- mp4
- mp3
注意事項(xiàng)
- 對(duì)于下載的文件需要進(jìn)行格式的準(zhǔn)換,否則不可用。這個(gè)轉(zhuǎn)化的方式可以手工進(jìn)行轉(zhuǎn)化,也可以使用命令的方式。
- 也可以指定下載的文件名稱,加上
-o 文件名
,也可以加上-a : 壓縮成.tar格式
,-C :壓縮成.gz格
ipfs get QmZJBKrLFPvn8zEatZsxSJTtJkCFm4YeMwChDLRPPPerZ6 -o 1.pdf
?
- 使用命令open hh.pdf 打開(kāi)pdf文件,此處open的用法是Linux自帶功能,和ipfs無(wú)關(guān)
docx
mp3
? jpg
mp4
上傳整個(gè)文件夾
- 此處上傳的整個(gè)文件夾里面的文件和先前測(cè)試使用的是相同的文件,所以他們的哈希值是一致的,這個(gè)就是ipfs要求的避免相同的文件被用戶上傳多次。
查看上傳的文件中包含的子文件
查看被引用的hash
- 被引用的hash概念:一般指文件夾下面有多少個(gè)文件,這個(gè)文件夾的名稱就被引用多少次,hash就是應(yīng)用該文件名的文件hash
?如果上傳的是一個(gè)文件夾,那么將文件夾拉回到本地,里面的文件是正常的存儲(chǔ)格式,無(wú)需進(jìn)行格式轉(zhuǎn)化
? 進(jìn)入web可視化界面,將哈希序列輸入到搜索框,進(jìn)行文件的查詢,如果文件不支持預(yù)覽,需要點(diǎn)擊downloading進(jìn)行下載查看
?
發(fā)現(xiàn)的問(wèn)題
- 使用root用戶和普通用戶,使用ipfs id查看自己的節(jié)點(diǎn)信息,還不一樣。
?
? 而且,這兩個(gè)節(jié)點(diǎn)之間還不能互相交換文件,不隸屬于同一個(gè)集群。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-722113.html
參考鏈接
- 使用ipfs完成一個(gè)圖片上傳的案例
- IPFS:分布式文件存儲(chǔ)
- IPFS
?
到了這里,關(guān)于【區(qū)塊鏈 | IPFS】IPFS節(jié)點(diǎn)搭建、文件上傳、節(jié)點(diǎn)存儲(chǔ)空間設(shè)置、節(jié)點(diǎn)上傳文件chunk設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!