具有外部CouchDB的Fabric 1.1还将数据保存在同级内部。为什么?

时间:2019-04-10 11:36:55

标签: hyperledger-fabric hyperledger

我正在使用结构1.1和leveldb将文件保存在分类帐中。不出所料,这使得对等方的docker容器很快就会耗尽空间。我以为改用沙发床可以解决问题(将问题转移到沙发床容器,但我可以解决),但令我惊讶的是,我检查了使用沙发床实际上将数据保存到沙发床容器中,但它也将数据保存在同伴内部!例如,将一个1,3MB的文件上载到我的配置为使用Couchdb的应用程序中,还会在相关节点内部的/var/hyperledger/production/ledgersData/chains/chains/mychannel中以1.3MB的大小创建一个“ blockfile”。怎么会这样?是否可以禁用此行为并仅将数据保存在沙发容器中? (或此容器的已安装卷),这是在较新的结构版本中修复的错误吗?如果不可能的话,如何配置更大的对等节点?

我知道我可以将解决方案更改为哈希附件,仅在分类账中保存对此哈希的引用,并将数据存储在外部数据存储中,但是我正在一个有此要求的项目中工作,因此更改方法不是可能性。

谢谢。

1 个答案:

答案 0 :(得分:2)

对等方既具有基于文件的分类帐(“区块链”),又具有状态数据库,该状态数据库保存/缓存任何给定密钥的最新已知值。

状态可以存储在goleveldb或CouchDB中。分类帐始终存储在对等文件系统上。 (请注意,goleveldb数据文件也存储在对等文件系统上)。

通过peer.fileSystemPath中的core.yaml设置位置,默认值为/var/hyperledger/production。如果要将文件存储在主机上而不是在容器文件系统中,也可以为此安装一个外部卷。