基于区块链的技术需要大量数据集才能工作。如果文件系统支持,将它们放在单独的卷/数据集上是有意义的。我正在使用 ZFS,想知道是否有任何建议在仅包含区块链数据的数据集上设置的属性。它是否可很好地压缩(如果是,使用算法)?它是否可以重复数据删除?读取过程中的缺点是什么(例如,旧数据经常被访问,因此需要不断解压缩)?
我假设它们都有类似的数据结构,但如果没有,让我们关注比特币存储的内容~/.bitcoin
。
我在 Ubuntu 17.10 上使用 ZFS 7.x。
答案1
以字节为单位,比特币区块链的磁盘格式主要由签名和哈希组成。
在 ZFS 或任何其他存储系统中,有三种主要的字节效率技术:
- 压缩:哈希和签名大多看起来像随机数,因此在这里很难获得太大的收益。
- 重复数据删除:重复数据删除需要精确的块匹配才能工作,但我不明白为什么这些会存在于区块链中——我认为每次写入都是唯一的。
- 快照/克隆:仅当您需要区块链的多个可写副本时,这才有帮助。
因此在大多数情况下,我的答案是 ZFS(以及其他文件和块存储系统)实际上无法提供帮助……除非你存储了区块链的多个副本。
如果您出于某种原因拥有多个副本,那么重复数据删除可能会带来巨大好处,因为 IIUC 每个节点最终都必须存储完全相同的区块链。您可以使用一台使用 ZFS 的 NFS 服务器,并在需要区块链副本的任何地方安装相同文件系统的克隆。这还可以使创建新副本的速度更快,因为您可以立即创建数据的可写克隆,而不是scp
将数据放在一起。