ipfs 配置文件 Datastore 详解

配置文件

"Datastore": {
    "StorageMax": "10GB",           // 最大存储空间, 实际上, 存储量超过该值仍可以继续存储
    "StorageGCWatermark": 90,       // 存储空间警戒线, 只有 已使用存储空间/最大存储空间 超过该值, 定时自动 GC 才会生效, 否则不会 GC
    "GCPeriod": "1h",               // 每过 1h, 检查是否需要 GC
    "Spec": {
      "mounts": [
        {
          "child": {
            "path": "blocks",
            "shardFunc": "/repo/flatfs/shard/v1/next-to-last/2",
            "sync": true,
            "type": "flatfs"
          },
          "mountpoint": "/blocks",  // 文件块存储路径(相对于 ~/.ipfs)
          "prefix": "flatfs.datastore",
          "type": "measure"
        },
        {
          "child": {
            "compression": "none",
            "path": "datastore",
            "type": "levelds"
          },
          "mountpoint": "/",
          "prefix": "leveldb.datastore",
          "type": "measure"
        }
      ],
      "type": "mount"
    },
    
    ...
},

ipfs 定时 GC 功能

如配置所示,StorageMax 表明 ipfs 的最大存储空间,StorageGCWatermark 表明存储空间警戒线,GCPeriod 为检查是否 GC 的间隔时间。
当到达检查时间时,如果已用存储空间 > StorageMax * StorageGCWatermark,则会发生 GC。

注意: 使用 ipfs daemon 启动 ipfs,并不会自动启动 ipfs 的定时GC功能。
需要开启相应的参数, 即 ipfs daemon --enable-gc, 才会启动 ipfs 的定时GC功能。

ipfs 数据持久化

Spec 是 ipfs 数据持久化的规格说明书,说明了 ipfs 有哪些存储结构。下图是 ipfs 的 Spec 对应生成的 datastore 结构。

datastore.png
measure datastore

用于统计信息,如 GC 次数等。

mount datastore

用于存储有实际存储功能的 datastore。

flatfs datastore

用于存储 Block。

leveldb datastore

用于存储 KV 信息。

你可能感兴趣的:(ipfs 配置文件 Datastore 详解)